WEEK 4 - Topic Overview - CN7021

Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

CN7021- ADVANCED SOFTWARE ENGINEERING

4
Introduction

Software development process involves activities which when effectively executed will help produce a

good software product. Generally, the basic activities involved are system analysis, design coding,

testing and maintenance. All these activities are systematically executed in various ways to form

different models. This week, we shall consider these process models.

Objectives

The objective of this week is to introduce you to the idea of a software process—a coherent set of

activities for software production. When you have read this material and other relevant materials for

the week, you will:

 understand the concepts of software processes and software process models;

 have been introduced to four generic software process models (waterfall, prototyping, iterative

and spiral) and when they might be used;

 understand the rationale for agile software development methods, the agile manifesto, and the

differences between agile and plan driven development;

Software Development Life Cycle (SDLC)

Software Development Life Cycle, (SDLC) or software development process, is a well-defined,

structured sequence of stages (previously discussed as activities) in software engineering to develop

an intended software product (Sommerville, 2016). A software process is a set of related activities

that leads to the production of a software product. These activities may involve the development of

1
CN7021- ADVANCED SOFTWARE ENGINEERING
software from the scratch in a standard programming language like Pascal, Ada, VB dot net or C++

(Sommerville, 2016). However, business applications or enterprise applications are not always

developed in this way. They are often developed by extending and modifying existing systems or by

configuring and integrating off-the-shelf software or system components, which is known as software

reuse.

Process models were originally proposed to bring order to the chaos of software development. History

has indicated that these models have brought a certain amount of useful structure to software

engineering work and have provided a reasonably effective road map for software teams (Pressman

and Maxim, 2015).

There are many different software processes but all must include four activities that are fundamental

to software engineering:

1) Software Analysis:

a. Feasibility Study: a cost-benefit analysis

b. Requirements Gathering

c. Software Requirements Specification

d. Software Requirements Validation

e. Specification (The functionality of the software and constraints on its operation must be

defined).

2) Software design and implementation: The software to meet the specification must be produced.

3) Software validation: The software must be validated to ensure that it does what the customer

wants.

4) Software evolution: The software must evolve to meet changing customer needs.

2
CN7021- ADVANCED SOFTWARE ENGINEERING

Figure 4.1. Structured sequence of stages in software engineering (Pressman and Maxim, 2015)

SDLC provides a series of steps to be followed to design and develop a software product efficiently.

SDLC framework includes the following steps:

Communication

This is the first step where the user initiates the request for a desired software product. The user

contacts the service provider and tries to negotiate the terms, submits the request to the service

providing organization in writing.

Requirements Gathering

This step onwards the software development team works to carry on the project. The team holds

discussions with various stakeholders from problem domain and tries to bring out as much

information as possible on their requirements. The requirements are contemplated and segregated

into user requirements, system requirements and functional requirements. The requirements are

collected using a number of practices as given studying the existing or obsolete system and software,

1) Conducting interviews of users and developers (Douglas, 2005)

2) Referring to the database or

3) Collecting answers from the questionnaires.

Feasibility Study

After requirement gathering, the team comes up with a rough plan of software process. At this step

the team analyzes if a software can be designed to fulfil all requirements of the user, and if there is

3
CN7021- ADVANCED SOFTWARE ENGINEERING
any possibility of software being no more useful. It is also analyzed if the project is financially,

practically, and technologically feasible for the organization to take up. There are many algorithms

available, which help the developers to conclude the feasibility of a software project. During

feasibility study, a software engineer work to give answer the following questions (Pressman &

Maxim, 2015):

1) Can we build the system?

2) Will this development process allow us to beat our competitors to market?

3) Do adequate resources exist to build and maintain the proposed system?

4) Will the system performance meet the needs of our customers?

5) The answers to these and other questions will evolve over time.

System Analysis

At this step the developers decide a roadmap of their plan and try to bring up the best software model

suitable for the project. System analysis includes:

1) Understanding of software product limitations, learning system related problems or changes to be

done in existing systems beforehand,

2) Identifying and addressing the impact of project on organization and personnel etc. The project team

analyzes the scope of the project and plans the schedule and resources accordingly.

Software Design

Next step is to bring down whole knowledge of requirements and analysis on the desk and design the

software product. The inputs from users and information gathered in requirement gathering phase are

the inputs of this step. The output of this step comes in the form of two designs; logical design, and

physical design.

4
CN7021- ADVANCED SOFTWARE ENGINEERING
Engineers produce meta-data and data dictionaries, logical diagrams, data-flow diagrams, and in

some cases pseudo codes.

Coding

This step is also known as programming phase. The implementation of software design program

testing, product testing, in-house testing, and testing the product at user’s end (Douglas, 2005). Early

discovery of errors and their remedy is the key to reliable software.

Integration

Software may need to be integrated with the libraries, databases, and other program(s). This stage of

SDLC is involved in the integration of software with outer world entities.

Implementation

This means installing the software on user machines. At times, software needs post-installation

configurations at user end. Software is tested for portability and adaptability and integration related

issues are solved during implementation.

Operation and Maintenance

This phase confirms the software operation in terms of more efficiency and less errors. If required,

the users are trained on, or aided with the documentation on how to operate the software and how to

keep the software operational. The software is maintained timely by updating the code according to

the changes taking place in user end environment or technology. This phase may face challenges

from hidden bugs and real-world unidentified problems.

Testing

An estimate says that 50% of whole software development process should be tested. Errors may ruin

the software from critical level to its own removal. Software testing is done while coding by the

5
CN7021- ADVANCED SOFTWARE ENGINEERING
developers and thorough testing is conducted by testing experts at various levels of code such as

module testing.

Process Model

A process model is a plan that makes provision for all these required activities and seeks to

incorporate the stages in a methodical way (Bell, 2005). It is an overall strategy for accomplishing

software development. Process models were originally proposed to bring order to the chaos of

software development. However, history has it that they have brought a certain amount of useful

structure to software engineering

work and have provided a reasonably effective road map for software teams (Pressman & Maxim,

2015). There are various process models that include:

1) waterfall model

2) prototyping model

3) incremental model

4) spiral model

5) agile model

6) rational model

7) open source model

8) seat of the pants, do it yourself or ad hoc.

Waterfall Model

Waterfall model is the simplest model of software development paradigm. It was derived from more

general system engineering processes (Royce, 1970) where all the phases of SDLC will function one

after another in linear manner. Waterfall model takes the fundamental process activities of specification,

development, validation, and evolution and represents them as separate process phases such as

requirements specification, software design, implementation, testing, and so on (Sommerville, 2011).

6
CN7021- ADVANCED SOFTWARE ENGINEERING
The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential

approach2 to software development that begins with customer specification of requirements and

progresses through planning, modelling, construction, and deployment, culminating in ongoing support

of the completed software (Pressman & Maxim, 2015). It is a software process model that involves

discrete development stages: specification, design, implementation, testing, and maintenance. In

principle, one stage must be complete before progress to the next stage is possible. In practice, there is

significant iteration between stages. That is, when the first phase is finished then only the second phase

will start and so on.

Figure 4.2. Waterfall Model (Douglas, 2005)

This model assumes that everything is carried out and taken place perfectly as planned in the previous

stage and there is no need to think about the past issues that may arise in the next phase. This model

does not work smoothly if there are some issues left at the previous step. The sequential nature of model

does not allow us to go back and undo or redo our actions.

This model is best suited when developers already have designed and developed similar software in the

past and are aware of all its domains.

7
CN7021- ADVANCED SOFTWARE ENGINEERING
Characteristics of Waterfall Model

1) A sequence of stages in which the output of each stage becomes the input for the next

(Sommerville, 206).

2) In the waterfall model, it is possible to rework earlier stages in the light of experience gained

at a later stage. Each stage is signed off and the next stage is proceeded with. However the end

user is rarely involved in the development stage, even though they may well be involved in

signing off.

3) It is therefore critical that the analysts and the programmers understand the end-users’

requirements.

4) This can be quite difficult with the waterfall model.

Benefits of Waterfall Model

1) Misunderstandings are detected at early stages

2) Identifies systems requirements long before programming begins

3) The user will notice any missing functions, incomplete or inconsistent requirements.

4) Minimizes changes to requirements as project progresses.

5) Can be built quickly to demonstrate systems

6) It can be used for training before the system is finished

Disadvantages of Waterfall Model

1) Waterfall model is idealistic as it assumes that no development error is ever committed by the

engineers during any of the life cycle stages. However, in practical development environments,

the engineers do commit a large number of errors in almost every phase of the life cycle.

8
CN7021- ADVANCED SOFTWARE ENGINEERING
2) Design must be specified on paper before programming begins

3) The source of the defects can be many: oversight, wrong assumptions, use of inappropriate

technology, and communication gap among the project engineers.

4) Defects are usually get detected much later in the life cycle and once a defect is detected, the

engineers need to go back to the phase where the defect had occurred and redo some of the

work done during that phase and the subsequent phases to correct the defect and its effect on

the later phases.

5) Long time between system proposal and delivery of new system

6) The waterfall model has disadvantages, which can be overcome using Prototyping, in which a

model of the system is developed in partnership with the end-user.

7) The features are worked out with the end user using a prototype, and the end user can have a

considerable input into the development of a project.

Prototyping Model

Prototyping model is a small-scale, incomplete, but working sample of a desired system. It is working

model of proposed system. It builds a scaled-down working version of the system. A redesigned

business process must be prototyped before it is fully integrated into the business (Pressman and Maxim,

2015).

9
CN7021- ADVANCED SOFTWARE ENGINEERING

Figure 4.3. Prototyping Model (Hans, 2007)

A software prototype can be used in a software development process to help anticipate changes that

may be required (Sommerville, 2016):

1) In the requirements engineering process, a prototype can help with the elicitation and validation

of system requirements.

2) In the system design process, a prototype can be used to explore particular software solutions

and to support user interface design.

Advantage of Prototyping

1) Users are involved in design.

2) Users interact with prototype very quickly.

3) Users can identify needed changes and refine real requirements.

4) It captures requirements in concrete form.

5) It is helpful in illustrating the input data formats, messages, reports, and the interactive

dialogues to the customer.

10
CN7021- ADVANCED SOFTWARE ENGINEERING
6) The experience gained in developing the prototype helps to develop the final product.

7) A prototyping model can be used when technical solutions are unclear to the development team.

8) A developed prototype can help engineers to critically examine the technical issues associated

with the product development.

9) It yields prototype that might be the best or the only way to resolve any arising technical issues

during software development process.

Disadvantages of Prototype Model

1) Tendency to do superficial analysis.

2) The model is costly.

3) It has a poor documentation because of ever changing customer requirements.

4) Initial design decisions may be poor.

5) There may be too much variations in system requirements.

Iterative Model

This model leads the software development process in iterations. It projects the process of development

in cyclic manner repeating every step after every cycle of software development process.

The software is first developed on very small scale and all the steps are followed which are taken into

consideration.

11
CN7021- ADVANCED SOFTWARE ENGINEERING

Figure 4.4. Iterative Model (Madaan, 2015)

Then, on every next iteration, more features and modules are designed, coded, tested, and added to the

software. Every cycle produces a software, which is complete in itself and has more features and

capabilities than that of the previous one.

After each iteration, the management team can do work on risk management and prepare for the next

iteration. Because a cycle includes small portion of whole the software process, it is easier to manage

the development process but it consumes more resources.

Advantages of Iterative Model

1) There is a working model of the system at a very early stage of development which makes it

easier to find functional or design flaws.

2) It helps finding issues at an early stage of development thereby making corrective measures a

limited budget.

3) It provides feedback paths for error correction as and when detected later in a phase.

Disadvantages of Iterative Model

12
CN7021- ADVANCED SOFTWARE ENGINEERING
1) It is applicable only to large and bulky software development projects because it is hard to break

a small software system into further small serviceable modules.

2) Many resources may be required.

3) It needs a higher level of understanding and skill as it demands for large and bulky software

development projects that need to be decomposed into a small software system into further

small serviceable modules.

4) Although the cost of change is less, but it is not most suitable for changing requirements.

5) It draws more management attention.

Evolutionary Model

The evolutionary model is also called successive versions model or incremental model. At the initial

stage, a simple working model is built. Subsequently it undergoes functional improvements & we keep

on adding new functions till the desired system is developed. Evolutionary models are characterized in

a manner that enables you to develop increasingly more complete versions of the software (Pressman

and Maxim, 2015).

Advantages:

1) User gets a chance to experiment partially developed system.

2) Reduce the error because the core modules get tested thoroughly.

Disadvantages:

1) It is difficult to divide the problem into several versions that would be acceptable to the

customer which can be incrementally implemented & delivered.

2) The delivery of full software system can be late due to different changes by customers during

the development process.

Evolutionary Model is:

13
CN7021- ADVANCED SOFTWARE ENGINEERING
1) Commonly used in object oriented software development where the system can be easily

portioned into units in terms of objects.

2) A choice for large projects where you can easily find modules for incremental implementation.

Spiral Model

Figure 4.5. Spiral Model (Sommerville, 2016)

A risk-driven software process framework (the spiral model) was proposed by Boehm (1988). It was a

model of a development process where the process is represented as a spiral, with each round of the

spiral incorporating the different stages in the process.

Spiral model is a combination of both, iterative model and one of the SDLC model. It can be seen as if

you choose one SDLC model and combined it with cyclic process (iterative model).

This model considers risk, which often goes un-noticed by most other models. The model starts with

determining objectives and constraints of the software at the start of one iteration. Next phase is of

14
CN7021- ADVANCED SOFTWARE ENGINEERING
prototyping the software. This includes risk analysis. Then one standard SDLC model is used to build

the software. In the fourth phase of the plan of next iteration is prepared.

The spiral model combines change avoidance with change tolerance. It assumes that changes are a result

of project risks and includes explicit risk management activities to reduce these risks.

Each loop in the spiral model is split into four sectors:

1) Objective setting: here, specific objectives for that phase of the project are defined. Constraints

on the process and the product are identified and a detailed management plan is drawn up.

Project risks are identified. Alternative strategies, depending on these risks, may be planned

(Sommerville, 2016).

2) Risk assessment and reduction: For each of the identified project risks, a detailed analysis is

carried out. Steps are taken to reduce the risk. For example, if there is a risk that the

requirements are inappropriate, a prototype system may be developed.

3) Development and validation: After risk evaluation, a development model for the system is

chosen. For example, throwaway prototyping may be the best development approach if user

interface risks are dominant. If safety risks are the main consideration, development based on

formal transformations may be the most appropriate process, and so on. If the main identified

risk is sub-system integration, the waterfall model may be the best development model to use.

4) Planning: The project is reviewed and a decision made whether to continue with a further loop

of the spiral. If it is decided to continue, plans are drawn up for the next phase of the project.

Advantages of Spiral Model

1) Cost estimation becomes easier as the prototype building is done in small fragments.

2) It supports coping up with risks by providing the scope to build a prototype at every stage of

the development process.

Disadvantages of Spiral Model

15
CN7021- ADVANCED SOFTWARE ENGINEERING
1) It is much more complex than any other model.

2) It is expensive for small projects.

3) It is too much dependable on Risk Analysis and requires highly specific expertise.

4) It does not manage time effectively.

5) The spiral may go on indefinitely.

V – model

The major drawback of waterfall model is we move to the next stage only when the previous one is

finished and there was no chance to go back if something is found wrong in later stages. V-Model

provides means of testing of software at each stage in reverse manner (Madaan, 2015).

Figure 4.6. V-model (Madaan, 2015)

At every stage, test plans and test cases are created to verify and validate the product according to the

requirement of that stage. For example, in requirement gathering stage the test team prepares all the test

cases in correspondence to the requirements. Later, when the product is developed and is ready for

testing, test cases of this stage verify the software against its validity towards requirements at this stage.

This makes both verification and validation go in parallel. This model is also known as verification and

validation model.

16
CN7021- ADVANCED SOFTWARE ENGINEERING
Big Bang Model

This model is the simplest model in its form. It requires little planning, lots of programming and lots of

funds. This model is conceptualized around the big bang of universe. As scientists say that after big

bang lots of galaxies, planets, and stars evolved just as an event. Likewise, if we put together lots of

programming and funds, you may achieve the best software product.

For this model, very small amount of planning is required. It does not follow any process, or at times

the customer is not sure about the requirements and future needs. So the input requirements are arbitrary.

This model is not suitable for large software projects but good one for learning and experimenting.

Rapid Application Development (RAD)

RAD utilizes prototyping to delay producing system design until after user requirements are clear. RAD

involves:

1) Phased development

a) A series of versions developed sequentially

2) Prototyping

a) System prototyping

3) Throw-away prototyping

a) Design prototyping

17
CN7021- ADVANCED SOFTWARE ENGINEERING

Figure 4.7. RAD Model (retrieved from: http://www.ramsoft.com.au/methodology.php)

Agile Model

Agile is the integration of various approaches of systems analysis and design for applications as deemed

appropriate to the problem being solved and the system being developed (Sharmaet al., 2012.

Figure 4.8. Phases of Agile Model Process (Sharmaet al., 2012)

18
CN7021- ADVANCED SOFTWARE ENGINEERING
Benefits of Agile

1) Fast delivery of results

2) Works well in projects with undefined or changing requirements

Shortcomings of Agile

1) Requires discipline

2) Works best in small projects

3) Requires much user input

Criteria for selecting an appropriate Methodology or model?

1) Clear user requirements

2) Familiarity with technology

3) Complexity of system

4) Reliability of system

5) Time schedule

6) Schedule visibility

Conclusion

Software engineering practice encompasses principles, concepts, methods, and tools that software

engineers apply throughout the software process. A coherent set of activities that lead to the

development of a software project was the goal of the week where you learnt some of the variants of

the set of activities that is, process models. The process models that range from waterfall to agile where

modern dynamism in enterprise applications is put into consideration during software development.

You also learnt about advantages and disadvantages of each of these models and where they are

19
CN7021- ADVANCED SOFTWARE ENGINEERING
applicable. You can learn more on the topic by access the e-library on the VLE or reading the

appropriate e-book for the course.

References

1. Boehm, B. and Turner, R. (2003). Balancing Agility and Discipline: A Guide for the Perplexed.

Boston: Addison-Wesley

2. Braude, E., and M. Bernstein (2011). Software Engineering: Modern Approaches. 2nd Edition,

Wiley.

3. Douglas, B. (2005). Software Engineering for Students. 4th Edition. Pearson Education Limited

4. Han, V. (2007). Software Engineering: Principles and Practice. Wiley

5. Jalote, P. (2010). An Integrated Approach to Software Engineering. 3rd Edition. Springer.

6. Madaan S. (2015). International Journal of Scientific & Engineering Research, Volume 6, Issue

11, November-2015

7. Pfleeger, S. (2009). Software Engineering: Theory and Practice. 4th Edition. Prentice Hall.

8. Pressman, R. S. and Maxim, B. R. (2015). Software Engineering: A Practitioner’s Approach.

8th Edition. McGraw-Hill Education, 2 Penn Plaza, New York, NY 10121.

9. Royce, W. W. (1970). ‘Managing the Development of Large Software Systems: Concepts and

Techniques’. IEEE WESTCON, Los Angeles CA: 1–9.

10. Schach, S. (2010). Object-Oriented and Classical Software Engineering. 8th Edition. McGraw-

Hill.

11. Sharma, S., Sarkar, D., and Gupta, D. (2012). Agile Processes and Methodologies: A

12. Conceptual Study, International Journal on Computer Science and Engineering (IJCSE), Vol.

4 No. 05 May 2012, pp. 892-898.

13. Sommerville, I. (2016). Software Engineering. 10th Edition. Pearson Education.

20

You might also like