2a. Illustrate the software development life cycle (SDLC)
A software life cycle (SLC) model covers the entire period of a software system from beginning to end (or "retirement"). A SLC has two main parts: Development (SDLC) and Maintenance. These models are primarily software project management tools, in the sense that they are frameworks for identifying and organizing (work breakdown) project work products and activities, and specifying when the activities are performed, their sequencing and repetition. Reread pages 23-24 of The New Software Engineering, which focuses on project life cycles.
An SDLC identifies development activities and project work products. Methods and methodologies give guidance on how to perform the activities and the representations, or form, of the work products. For example, read the Analysis description on page 25 of The New Software Engineering. If an object-orientation method is used, it would give guidance on performing the analysis to identify classes and objects and to specify the requirements with use cases.
Are you aware of any SDLCs? You may have heard of the waterfall life cycle, which was the most popular early sequential SDLC model, which you can review on page 23 of The New Software Engineering. It was eventually extended to an iterative SDLC. As experience in the use of SDLCs increased and as new programming languages features were created, newer SDLCs were introduced. Some of these include Spiral and Agile, which are covered in the video on Software Development Methodologies, starting at 47:00.
Decomposition and composition are two important problem solving principles that apply to software development and to life cycle models. An SDLC usually has levels or phases of abstraction: analysis, design, implement, and test phases. What are the three common test phases? The sequencing of SDLCs usually begins with decomposition via early phases and proceeds with composition via the latter phases. Composition is often called test, integration, or synthesis.
2b. Create the sequence of activities and deliverables in a sequential life cycle model
The phases of sequential SDLCs are described on pages 24-29 of The New Software Engineering. The description of each phase gives the phase activities and work products. When does a phase begin and end? In practice there is some overlap of phases, but conceptually the phases are performed in sequence. Iteration is between adjacent phases (see Figure 1-18). Most of the activities are the responsibility of the software engineering team or jointly by the software engineering team and other internal (project management, quality assurance) or external groups (users, customers). What are universal activities? Name them for sequential SDLCs.
Work products of an SDLC include documentation of activities and work products, diagrams, software, and review or test results. In an SDLC, each phase has at least one major output, such as software requirements, design, code, or tests. Nine development phases are listed among the bulleted items on page 23 of The New Software Engineering. There are also many others, such as documentation of reviews and meetings.
There are several significant problems with sequential SDLCs. First, creation of the formal documentation of the activities and work products is a large effort. Second, if an error is not caught in the next phase in the sequence, it can cause errors in all the intervening phases, which could result in a lot of rework. Can you think of another problem? To review, read page 28 of The New Software Engineering.
2c. Create the sequence of activities and deliverables in an iterative life cycle model
Remember that sequential and iterative life cycle models are categories of life cycle models. Any specific life cycle model can be classified as belonging to one of these two categories, or as combining features of both. The Waterfall life cycle and the 'V' life cycle are examples of the sequential SDLC category. Various Prototyping life cycle models are examples of the iterative category. The Spiral life cycle model is a combination of Prototyping and Waterfall life cycle models.
Sequential life cycle models assume a certain context for their use. They assume that the software requirements are well understood, that errors made in a phase will be caught in the following phase, that a design or hardware or software or application technologies have been used for the same or similar applications, or that a complete life cycle development is necessary. If none of these contexts applies, then an iterative life cycle model may be more applicable. Still, there can be problems with the use of an iterative life cycle model. Describe some of those problems.
Iterative SDLCs have a Prototype Phase of prototyping activities and a corresponding Evaluation Phase for activities to evaluate the performance of the prototype. The results of the Evaluation Phase are then input into the Prototype Phase for an iteration, or to an Engineering Phase to formalize the prototype into the system, or to a Phase of activities that develop a complete formal system.
In a prototyping iterative life cycle model, most of the document work products are replaced by the Prototype software. In addition, an evaluation report is an output of the Evaluation Phase.
As experience with a SDLC grows, problems are discovered. Name two problems in the use of an iterative SDLC. How can prototyping be misused?
To review, read pages 29-31 of The New Software Engineering.
2d. Compare and contrast the two categories of life cycle models
The earliest life cycle models were sequential models. These models present a linear path from requirements to a desired system. They work well in an appropriate context: if the requirements are frozen, each phase catches errors made in the previous phase, and the application is well understood. Sequential SDLCs were widely used, providing a large body of experience that has identified their strengths and weaknesses. Further, as the scope of applications expanded to larger and more complex systems, the risks of a linear sequential model increased. New applications are usually not well understood, do not have fixed requirements, have more development problems, and are subject to frequent change. The essential problem is change caused either by error or by a new specification. To mitigate risk, a life cycle model needs to catch errors early, identify changes early, and repeat phase activities quickly. Iteration, concurrency, and early implementation (prototyping) were introduced, and a new category of iterative SDLCs evolved. To review, read page 28 of The New Software Engineering.
We have mentioned activities and phase work products (documentation or prototype software). What are some of the who, what, when, where, why, and hows of SDLCs? In the context of SDLCs, 'who' refers to roles and stakeholders, but only at a group or team level and not at a task or individual level. For SDLCs, we can consider the software engineering team, project management, and customers. 'What' refers to the phases and activities. 'When' refers to the ordering of the phases and activities-sequential, concurrent, or repetitive, and the start and end of a phase (for example, does coding appear late or early in the development cycle; do the two phases overlap, or are they performed in parallel?). 'Where' refers to the location of the activities. 'Why' refers to the need or problem that an SDLC addresses. 'How' is more applicable to the methods that are used to perform the activities, which are not usually specified by an SDLC. Each of the pronouns, except for 'how', identifies a characteristic of an SDLC.
Using these as characteristics, two key difference between sequential and iterative SDLCs is when coding is performed and the ability to repeat or redo parts of the development as needed early on. Coding appears relatively late in a sequential SDLC, but early in an iterative SDLC (as the prototype). This means that errors out of a phase of a sequential SDLC may not be caught until coding and testing. Sequential SDLCs have capability for repetition only back to the preceding phase. Iterative SDLCs have the capability to prototype areas that have the greatest risk and can even build a prototype early in the development cycle. To review, read page 29 of The New Software Engineering.
Unit 2 Vocabulary
This vocabulary list includes terms that might help you with the review items above and some terms you should be familiar with to be successful in completing the final exam for the course.
Try to think of the reason why each term is included.