DRAFT [2016-2017][KR][en] at 2023-06-02 13:24:01 +0300
Logo-do [errata] Profile

Software Engineering Practices

Unit 1 Software Life Cycle Models

Lecture


Keywords

program, software, software, software engineering (SE), requirement analysis, design, implementation, testing, maintenance, milestone, software development life cycle (SDLC), life cycle (LC), life cycle process, waterfall model, incremental model, iterative model, rapid application development model (RAD-model), agile development model, spiral model, planning phase, risk analysis, engineering phase, evaluation phase

1.1 What is Software Engineering?

This is the first question that needs answer in our course. But at the beginning we should to get definition of software and its distinction of program.

The term program means a combination of computer instructions and data definitions that enable computer hardware to peform computational or control functions. In present the term program - in the sense of a self-contained piece of software that can be invoked by a user or some other system component - is not adequate. Present-day software development projects result in systems containing a large number of (interrelated) programs or components. There is a distinction between programming-in-the-large and programming-in-the-small. The borderline between large and small obviously is not sharp: a program of 100 lines is small, a program of 100 000 lines of code certainly is not. Programming-in-the-small generally refers to programs written by one person in a relatively short period of time. Programming-in-the-large refers to multi-person jobs that span several months.

According to ISO Std 2382-1:1993 Software are all or part of the programs, procedures, rules, and associated documentation of an information processing system. In IEEE Standard for Software and System Test Documentation (IEEE Std 829:2008) Software - computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system. Thus software includes programs, documentation, data, and execution control statements.

So Software engineering (SE) is a complex process and is not the same as programming. Programming is an important part of software engineering.

The definition given in the ISO Std 2382-1:1993 is as follows: Software engineering is the systematic application of scientific and technological knowledge, methods, and experience to the design, implementation, testing, and documentation of software.

Standard Glossary of Software Engineering Terminology (IEEE610) tell that Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

1.2 Phases in the Development of Software

Software development (SD) process is the process by which user needs are translated into a software product. Software development projects are often large and particularly difficult to measure. A number of people work on such a project for a long time and therefore the whole process needs to be carefully planned and controlled: progress needs to be monitored, people and resources need to be allocated at the right point in time, etc.

Each software passes through several mandatory phases (fig.1.1):

 

Figure 1.1 Basic phases of software development process

In order to control progress we use a phased development in which a number of clearly identifiable milestones are established between the start and finish of the project.

In general, the milestones identified in a software development project correspond to the points in time at which certain documents become available:

Traditional models for the phased development of software are, to a large extent, ‘document-driven’. The pile of paper that is produced in the course of the project guides the development process. The development process is seen as a series of transformations. It starts with a clear requirements document, and ends with running code.

There are different software development approaches which are used during software development process, these approaches are referred as Software Development Life Cycle Models or Software Development Process Models - SDLC Models (e.g. waterfall model, incremental model, V-model, iterative model, RAD model, Agile model, Spiral model, Prototype model etc.). Each process model follows a particular life cycle in order to ensure success in process of software development.

According to Standard ISO/IEC 12207 Life Cycle (LC) is an evolution of a system, product, service, project or other human-made entity from conception through retirement.

Life cycle model is a framework of processes and activities concerned with the life cycle that may be organized into stages, which also acts as a common reference for communication and understanding.

Life cycle process is a set of interrelated activities that result in the development or assessment of software products (IEEE Std 1012). These activities may overlap or be performed iteratively.

1.3 Waterfall SDLC Model

The first introduced Process Model was Waterfall Model. It is also referred to as a linear-sequential life cycle model. As you can see from figure 1.2, the software development phases have been made a sequence.

Figure 1.2 – Waterfall model of software development process

It is very simple to understand. In this model software testing starts only after the development is complete. In waterfall model phases do not overlap. In a waterfall model, each phase must be completed fully before the next phase can started. This type of SDLC model is basically used for the small project with no uncertain requirements.

Pros:

Cons:

 

1.4 Incremental SDLC Model

In practice, one often uses more sophisticated process models. For a real project activities usually will overlap.

The definition of designed system is broken down and functionality of the system is produced and delivered to the customer in a number of steps – increments. Incremental Model is shown in fig.1.3. In each of these steps, the phased approach that we know from the waterfall model, is employed. Incremental development process lets software to grow. With this incremental approach, the user is closely involved in planning the next step.

Figure 1.3 – Incremental model of software development process

This model can be implemented when the requirements of the whole system are clearly defined and easy understood. Also incremental model is used when there is a need to get a product to the market early or a new technology is being used or resources with needed skill set are not available. Major requirements must be defined; however, some details can evolve with time.

Pros:

Cons:

1.5 Iterative SDLC model

When the project is big and the requirements of the complete system are clearly defined one can implement the Iterative Model (fig.1.4).

Figure 1.4 – Iterative model of software development process

Development begins by specifying and elaborating just part of the software, which can then be reviewed in order to identify further requirements. This process is then repeated, producing a new version of the software for each cycle of the model. Changing requirements and errors discovered occur backtracking to earlier phases of software lifecycle. One had better think of these phases as a series of workflows. Early on, most resources are spent on the requirements engineering workflow. Later on, effort moves to the implementation and testing workflows.

In this model in early iterations a high-level design of the application can be created before the product actually begin to build. Later on a skeleton version of software can be designed and built, and then the design based on what had been built.

Pros:

Cons:

 

1.6 RAD SDLC model

Rapid Application Development (RAD) Model is a type of incremental model. In RAD model the components or functions are developed in parallel as if they were mini projects. The developments are time boxed, delivered and then assembled into a working prototype. This can quickly give the customer something to use and to provide feedback regarding the delivery and requirements.

RAD SDLC model should be chosen only if resources with high business knowledge are available and there is a need to produce the system in a short period of time (2-3 months). Also it should be used if there’s high availability of designers for modeling and the budget is high enough to afford their cost along with the cost of automated code generating tools.

Figure 1.5 – RAD-model of software development process

The phases in the rapid application development (RAD) model are:

Pros:

Cons:

 

1.7 Agile SDLC model

Agile Development Model is also a type of Incremental model. Software is developed in rapid cycles. This results in small incremental releases with each release building on previous functionality. Each release is well tested to ensure software quality is maintained. It is used for time critical applications.

One of the most known agile software development methodologies is Extreme Programming (XP).

Figure 1.6 – Agile model of software development process

Pros:

Cons:

 

1.8 Spiral SDLC model

The Spiral Model is similar to the incremental model, with emphasis on risk analysis. Each spiral has four phases: Planning, Risk Analysis, Engineering and Evaluation.

A software project repeatedly passes through these phases in iterations. Boehm (1988) suggests a spiral model of the software development process, in which each convolution of the spiral gives rise to the following activities:

The baseline spiral, starting in the planning phase, requirements are accumulated and risk is assessed. Each subsequent spirals builds on the baseline spiral (fig.1.7). 

Figure 1.7 – Spiral model of software development process

The various process models discussed before can be coupled with Boehm’s spiral model in a natural way:

Viewed this way, the spiral model subsumes the other process models discussed before. 

Spiral model should be used:

Pros:

Cons:

The software development models are the various methodologies that are being selected for the software development project depending on it’s goals. There are many SDLC-models that have been developed in order to achieve different required objectives. The models specify the various stages of the process and the order in which they are carried out.

The selection of model has very high impact on the analysis, testing and documentation that is carried out. SDLC-model define the what technique, tools and resources, where and when in development process will be use.

 ReferencesHide
  1. IEEE Std 12207:2008, Systems and software engineering - Software life cycle processes.

  2. Software Engineering: Principles and Practice Hans van Vliet. 2007. Presentations http://www.cs.vu.nl/~hans/SEbook.html.

  3. ISO/IEEE 15288:2015. Systems and software engineering - System life cycle processes.

  4. IEEE Std 1012:2004, IEEE Standard for Software Verification and Validation.

  5. ISO/IEC Std 2382-1:1993, Information technology - Vocabulary - Part 1: Fundamental terms.

  6. ISO/IEEE Std 24765:2010 Systems and software engineering – Vocabulary.

  7. ISO/IEC TR 19759:2014, Software Engineering - Guide to the Software Engineering Body of Knowledge (SWEBOK)

  8. Software Engineering: Principles and Practice. Hans van Vliet. 2007.

  9. What is Waterfall model advantages, disadvantages and when to use it? http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/

  10. What is Incremental model advantages, disadvantages and when to use it? http://istqbexamcertification.com/what-is-incremental-model-advantages-disadvantages-and-when-to-use-it/

  11. What is Iterative model advantages, disadvantages and when to use it? http://istqbexamcertification.com/what-is-iterative-model-advantages-disadvantages-and-when-to-use-it/

  12. What is RAD-model advantages, disadvantages and when to use it? http://istqbexamcertification.com/what-is-rad-model-advantages-disadvantages-and-when-to-use-it/

  13. Agile Methodologies. http://www.umsl.edu/~sauterv/analysis/6840_f09_papers/Nat/Agile.html

  14. What is Spiral model- advantages, disadvantages and when to use it? http://istqbexamcertification.com/what-is-spiral-model-advantages-disadvantages-and-when-to-use-it/

  15. B.W. Boehm, A spiral model of software development and enhancement, IEEE Computer 21:5, 1988.

  16. 5 Types of Software Development Models. https://online.husson.edu/types-of-software-development-models/


© 2006—2023 Sumy State University