0707.321 Principles of Software Engineering

Homework 1

Software Process Models


Due Date

Both Sections: Wednesday, February 6 (11:59pm)

Form of Submission

Homework can submitted via email or printout by deadline.

Preparation

This assignment will exercise your knowledge of software process models. Before you begin, do the following:

Assignment

  1. [Question 3.1 from the textbook.]
    Giving reasons for your answer based on the type of system being developed, suggest the most appropriate generic software process model which might be used as a basis for managing the development of the following systems: [4 points each]

  2. [Question 3.2 from the textbook.]
    Explain why programs which are developed using evolutionary development area likely to be difficult to maintain. [4 points]

    When a system is produced using the evolutionary development model, features tend to be added without regard to an overriding design. With each modification, the software becomes increasingly disorganized. System maintenance (fixing bugs; or adding new features after the system has been released) is hampered by these problems, as it is harder to identify the source of bugs in poorly designed systems.

    Also, keeping the documentation up-to-date over successive "evolutions" is uncommon. Poor documentation also makes maintenance more difficult.

  3. Explain how incremental development adapts positive traits from the Waterfall and Evolutionary Development models without inheriting (most of) their respective shortcomings. [6 points]

    One problem with the Waterfall model is that its rigid structure makes it difficult to adjust to change once development has begun. If it becomes imperative to release the system earlier than originally envisioned, for example, it would be hard for a Waterfall project to adapt. Because the higher priority features are introduced in earlier increments of the system, a project managed under Incremental Development could be released sooner with some of the less-important features omitted.

    Systems produced under the Evolutionary Development model can react quickly to external changes as well, but suffer from reduced software quality; the lack of large-scale system design in advance of development being the chief culprit. Incremental development ameliorates this problem (one that does not plague Waterfall projects) by requiring that the system design be outlined before development begins.

  4. As part of the standard software validation process, system testing is followed by acceptance testing. Compare and contrast the purposes of these two testing regimens, both of which are performed against the complete system. [4 points]

    While both system and acceptance testing are performed against the complete software system, system testing is performed by the contractor, while acceptance testing is performed by the customer. The former verifies that there are no problems resolving from the integration of the system components and that the implementation satisfies the requirements. Test data is often generated in order to properly exercise system features. Acceptance testing is the final test, there the system is run against real data supplied (and perhaps applied) by the customer.