This is an individual assignment. Do not consult anyone. If you think a question is ambiguous or you think you must make an assumption to answer it, record your interpretation or assumption with your answer.
You may use your textbook or any other already existing resources (notes, articles, books, web postings), but you may not solicit advice.
Each question is worth 5 percent.
1. A system consists of modules A through N. Many modules use other modules (e.g. they call functions or methods contained within the used modules). The following use relationships exist (you may consult Pfleeger Fig. 7-22 for a graphical depiction of the module architecture):
Describe a sequence of tests for integrating the modules using
(a) a big-bang strategy
(b) a top-down strategy
(c) a bottom-up strategy
Your sequences should be in the form of tables, in which column 1 is the build sequence number and column two contains the list of modules in that build. Do not list stubs or drivers used to test the build, only the completed modules that comprise the build.
(Hint: there's only one big-bang sequence, but there are several possible top-down or bottom-up sequences. For questions b and c, choose ONE of the possible sequences in each case and tabulate it.)
(d) Explain why the degree (tightness) of coupling among a system's modules affects the ease with which the system can be modified.
(e) Explain why the degree of coupling among a system's modules tends to increase (become tighter) as the system evolves. What should be done periodically to reverse this trend?
2 (a) Take the architectural design of the meeting scheduler that you have used previously. Explain how you would modify the design to incorporate a new requirement that the meeting scheduler should also find a location for a meeting that is not already booked.
(Hint: By 'modify' is meant renaming modules, splitting them apart, combining them, adding new modules, or changing or adding module interactions. You will probably only need to make a few changes. Don't spend a lot of time totally redesigning the system. For the purpose of this question, assume that any location is as good as any other, as long as it is free.)
(b) Show the scenario for your modified design in which Person1 calls a meeting with Person2 in a two-location organization and the meeting is successfully scheduled in one of the locations.
(Hint: The scenario should include all the modules in your design of the system. It should take the form of the normal-case scenario diagram in the model answer of Assignment 3).
(c) Explain why the requirements for a system change over time. As a software engineer, can you prevent this from happening?
3 This question requires you to study Pfleeger, Chapter 3. Pleeger's Figure 3.23 depicts an activity graph ('PERT chart') for a project in which the nodes represent milestones and the lines read from left to right represent activities with estimated durations marked in days. (The graph will be posted separately. Watch this space.) Assume that the activities are named for the milestones at either end and that the project starts on Day 1. Thus, the activity that starts at milestone A and ends at milestone B is named AB and its earliest start time is 1.
(a) For each activity AB through KL, list the activity's precursors (if any), its earliest start time, latest start time, and slack. (Hint: Your answer should take the form of a table, similar to Pfleeger's Table 3.4, with an extra column containing the list of precursors of each activity.)
(b) List the sequence of milestones on the critical path of the project. If any of them were delayed, what would happen to the project?
(c) When you are building a wall, the activity of bricklaying cannot physically begin until the wall's foundations exist, so you can show the milestones of finishing the foundations and finishing the wall in a sequence, with the activity of bricklaying between them. It's pretty clear what the starting and end points of the activity are. But when you are writing software, it is possible to start implementing a module before you have finished designing it. (Not a good idea, but physically quite possible.)
(i) So what does it mean in a project plan for the milestone marking the end of the design of a module 'X' to precede the milestone marking the end of its implementation?
(ii) As the manager of the team that is designing and implementing X, what do you have to do to ensure that X's implementation starts only when its design is complete?