45
Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1 Definition of software:- 1. Software is defined as “a collection of programs, procedures, and associated documentation and data”. 2. Software is “a data structure that enables the programs to manipulate information”. Computer software is a product that design and built by software engineers. Software is designed to perform a well-defined task or function. Software controls integrate and manages the hardware components of computer system. Software is a collection of programs, documentation and operating procedures. Fig. Software = program + documentation + operating procedures Common attributes of good software:- a) Functionality: - It refers to the performance of the software against its intended purpose. b) Reliability: - It refers to the ability of software to avoid errors before they result in the product. Programs Operating Documentati

satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

Embed Size (px)

Citation preview

Page 1: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

Chapter 1. Overview of Software Engineering and the Software Development Process

Marks: 20

1.1 Introduction to software:

1.1.1 Definition of software:-

1. Software is defined as “a collection of programs, procedures, and associated documentation and data”.

2. Software is “a data structure that enables the programs to manipulate information”.

Computer software is a product that design and built by software engineers.

Software is designed to perform a well-defined task or function.

Software controls integrate and manages the hardware components of computer system.

Software is a collection of programs, documentation and operating procedures.

Fig. Software = program + documentation + operating procedures

Common attributes of good software:-

a) Functionality: - It refers to the performance of the software against its intended purpose.

b) Reliability: - It refers to the ability of software to avoid errors before they result in the product.

c) Usability:-The software is said to be good if it is easy and simple to use.

d) Maintainability:- Software must able to change.

e) Dependability:- The system should be trusted by user.

f) Efficiency:- Software should not make wasteful use of system resources.

g) Acceptability:- software must be accepted by users for which it was designed.

h) Portability: - Software should able to work on any platform.

i) Integrity: - An unauthorized access to the software can be prevented.

j) Robustness: - Software should able to handle an error and must keep on its working.

Programs

Operating ProceduresDocumentation

Page 2: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

1.1.2 Characteristics of software:-

The main characteristics of software are:-

1. Software is developed or engineered: In both software development and hardware manufacturing the focus is on quality.

Software projects cannot manage like hardware manufacturing projects.

The software is developed not manufactured.

2. Software does not wear out:-

Above fig is called as ‘bath tub curve’ which indicates that the hardware have high failure rate early

in its life ,then defects are corrected and failure rate drops to steady level for some period of time.

As time passes, the failure rate rises again because of environmental melodies like excess use,dust,

vibrations etc. and finally hardware begins to wear out. But the software does not wear out like

hardware.

The following fig shows the failure rate curve for idealized software.

During the life of software it will undergo change. As changes are made, new defects will be introduced, which

increases failure rate.

3. Most software is custom built:-

Page 3: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

To build the hardware fixed guidelines are followed by hardware manufacturer but to build the

software no fix format is there. For every software project, developer has to apply new ideas.

1.2 Types/categories of software:-

There are nine types of software:-

1) System Software:- System software is collection of programs designed to operate and control the processing capabilities

of computer itself.

It is a collection of programs written to service other programs.

System software’s are developed by computer manufacturer.

Without these software user cannot use the hardware.

Examples are Operating system, compilers, drivers etc.

2) Application Software:

Application software is the software that is designed to satisfy a particular need.

Examples are: Student record software, railway reservation software.

3) Embedded Software: It resides within hardware. It performs limited functions. Examples are: A.C., Washing machine, toys, mobile phones,

4) Real-Time Software:- A software program that monitors real-world events as they occur is called real-time.

Such software requires quick response from user.

A real time system must respond within strict time constraints.

Examples are aero plane, Car, Missiles etc.

5) Product-line Software::-

This software focuses on limited marketplace such as inventory control products.

Examples are spreadsheets, word processing, computer graphics, database management

6) Engineering/Scientific Software:-

These are used for scientific and engineering purpose.

Used for large computing.

Examples are Weather forecasting, CAD/CAM, MATLAB etc.

7) Web-based Software:-

This software act as interface between user and internet.

It is developed using set of linked hypertext pages (HTML) which consist of text and graphics,

JAVA, PHP etc.

The software related to web applications comes under this category.

Page 4: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

8) Artificial Intelligence (AI) Software:-

The science which enables the machines to behave like human being is known as artificial

intelligence.

Examples are Robotics, Game playing etc.

9) Personal Computer Software:-

This software is used in personal computers.

Used for both Official and personal use.

Examples are word processors, computer graphics, games, multimedia etc.

1.3 Software Engineering:- 1.3.1 Definition:-

Stephen Schach defined the software engineering as, “A discipline whose aim is the production of quality software, software that is delivered on time, within budget and that satisfies requirements.” OR

IEEE defines software engineering as,” The application of systematic, disciplined approach to the development, operation, and maintenance of software.”

The primary goal of software engineering is to produce high quality software in time within budget.

1.3.2 Need of Software Engineering:-

Following points describe the need of software engineering:-

i. As software development is expensive so proper measures are required so that the resources are used efficiently.

ii. To manage the time and cost software engineering is required.

iii. Software engineering is needed for building complex software system, in time with high quality.

iv. Some projects are complicated so software engineering is needed to develop such software.

v. Controlling and scheduling are the main activities of software project guided by software

engineering.

vi. Software project teams have to continuously deal with day to day or new technology challenges.

To solve above problems software engineering is formed.

Following points describe the importance of software engineering:-

i. Software engineering has a higher productivity.

ii. It acquires skills to develop large programs.

iii. Software engineering has ability to solve complex programming problems.

iv. It provides the techniques for specification design.

v. It increases the software quality.

vi. It reduces the cost.

Page 5: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

1.4. Relation between System Engineering and Software Engineering:-

System engineering is concerned with development of computer system which includes hardware

and software. But Software engineering is concerned with development of software infrastructure,

applications and databases in the system.

System engineers are involved in system specification, architectural design, integration and

deployment. But Software engineers are involved in developing Requirement specification,

designing, coding and testing.

Following fig shows infrastructure of System engineering :-

1. World View:- The system engineering process begins with world view. The entire business or product domain focuses on specific domain of interest. Within a specific domain, the need for targeted system elements (for example data, software,

hardware, and people) is analyzed.

Page 6: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

Finally requirement analysis, design, construction of system is started. 2. Domain View:-

Hardware engineering, software engineering, database engineering begins.3. Element View:-

The components are allocated to all elements.4. Detailed View:-

It contains construction, integration, code generation and testing etc. At the top of hierarchy, very broad context is established and at the bottom, detailed technical activities

are performed. The World View (WV) is composed of set of domains (Di).

WV= {D1, D2, D3… ……………..Dn} Each domain is composed of specific elements (Ej).

Di= {E1, E2, E3……………En} Finally each element is implemented by using technical components (Ck).

Ej= {C1, C2, C3 …………………Ck}

1.5 Software Engineering: A Layered Technology:

A software engineering is a layered technology.

Software engineering encompasses a process (activities), technical methods, and use of tools to develop

software product.

The following fig shows software engineering layers.

The quality focus is the basis of software engineering.

Process layer:- The foundation for software engineering is the process layer.

It holds the technology layers together.

It defines framework for set of key Process Areas (KPA) which can be used for effective

delivery of software engineering technology.

It forms the basis for management of software projects and provides the context in which

technical methods are applied, work products are produced, and changes are managed.

Methods layer:-

It provides technical knowledge for building software.

Methods

Process

A quality focus

Tools

Page 7: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

It consists of set of tasks such as communication, requirement analysis, design, coding, testing.

Tools layer:-

Provides automated or semi-automated support for process and methods.

A system for support of software development called Computer Aided Software Engineering

(CASE) is established.

1.6 Software Development Generic Process Framework:

“A process is a collection of activities, actions and tasks that are performed to develop the software.”

“A process framework is a collection of software development activities which forms base for software engineering process.”

1.6.1 Software Process OR Software engineering Process:-

Definition:

“Software process is defined as a collection of activities to develop software product according to goals or customer requirements.” OR

“It is the way in which we produce software”.

Software process includes guidelines useful for developing the software.

Set of activities are performed uniformly.

Every activity has entry and exit criteria, to find out the beginning and end of activity.

Characteristics of Software Process:-

a) Understandability: - Process should be defined simply and easy so it can be understood.

b) Visibility: - Process activities should give clear output or result so process is visible externally.

c) Supportability:-CASE (Computer Aided Software Engineering) tool must support process

activities.

d) Reliability:-Errors in the process should be avoided before they result in product.

e) Rapidity:-The speed with which complete software is delivered with specification.

f) Acceptability:- The extent to which s/w process is acceptable and usable by software developers

to produce the software.

g) Robustness:- The software process should continue in spite of unexpected errors or problems.

h) Maintainability:-The process should evolve to reflect the changing requirements.

Components of S/W process:-

S/W Process

Product Engineering Process (PEP)Process Management Process (PMP)

Page 8: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

Process management process (PMP) improves S/W process so cost effective and high quality s/w is developed.

Product Engineering Process (PEP) helps to develop s/w according to the user requirements. Components of PEP are:-

1. Development Process:- It is a process which is used during development of s/w. The development and quality assurance activities are performed.

2. Project Management process:- It defines set of activities which can be used to achieve goal.

3. Configuration Control Process:- It manages the change that occurs when requirements are modified.

1.6.2 Software Product OR Computer Software:-

The primary objective of software engineering is to produce software product. The software products are the

software system delivered to user with documentation which describes how to install and use the software.

The software project is developed when software processes are executed for particular requirements of the user.

The result or outcome of the software project is known as software product.

The software project uses software process to create software products.

Software product includes the source code and all associated documents like requirements documents, design

specification, source code, test plans, maintenance procedures, installation instructions etc.

The software product qualities are:-

1. Reliability: - The software is reliable if it is able to handle errors.

2. Correctness: - it is the degree to which the software performs its required function.

Project Management Process Configuration Control ProcessDevelopment Process

Page 9: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

3. Performance:-it is measured by processing speed, resource consumption, response time, throughput

and efficiency.

4. Understandability:-the software product must easy and simple to understand.

5. Portability:-A software product is portable if it can work in different environment.

6. Timeliness: - it is the ability to deliver the product on time.

7. Visibility: - a software product is visible if all steps and current status are documented clearly.

8. Interoperability:-It is the ability of product to co-operate with other systems.

9. Reusability: - the components of the software should be reusable.

10. Maintainability:-software product should able to adapt the changes.

1.6.3 Software Work Product:-

The product of software engineering is software.

The software engineer’s work products are produced after completion of each activity defined by

software process.

The examples are software requirements specification (SRS), Design specification, source code, test

reports etc.

The software product fall into two categories:-

1. Generic products:-

These are produced by development organization and sold on the open market to any customer who

is able to buy them.

Example: MS word, MS Excel, Antivirus software etc.

2. Customerized product:-

These products are commissioned by particular customer.

The software is developed for a single customer according to their specification or requirements.

1.6.4 Basic Framework Activities:-

A process framework consists of set of framework activities or tasks that are applicable to all

software projects.

It also consists of set of umbrella activities that are applicable across the entire software project.

Each framework activity consists of set of actions and each action in process framework consists of

individual work tasks that accomplish some part of work.

Following fig. shows a software process framework:

Software engineering action 1.1

Work TasksWork productsQuality assurance point

Process Framework

Umbrella activities

Framework activity 1Software engineering action 1.1

Page 10: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

Fig. A software Process Framework

The following five generic framework activities are performed to develop the computer software.1. Communication:

Involves the communication with customer and requirements are gathered.2. Planning:-

Establishes a plan for s/w engineering work that follows. It describes the technical tasks to be conducted, the resources to be required, and risks are

identified.

3. Modeling:- Models are developed for better understanding of developer and customer.

4. Construction:- Code is generated. Code is tested to uncover errors in the code.

5. Deployment:- The software is delivered to customer who evaluates the product and provides feedback.

1.6.5 Umbrella Activities:-

Umbrella activities are applied throughout a software project.

It helps a software team to manage and control progress, quality, change and risk.

The umbrella activities are as follows:-

Software engineering action 1.1

Work TasksWork productsQuality assurance point

Task Sets...

Work TasksWork productsQuality assurance pointProject milestone

Software engineering action 1.k

Task Sets..

Software engineering action 1.11.

Framework activity nSoftware engineering action n.1

Task Sets...

Work TasksWork productsQuality assurance pointProject milestone

Software engineering action n.m

Task Sets..

Work TasksWork productsQuality assurance pointProject milestone

Page 11: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

1. Software project tracking and Control:-

Software team keeps the track on progress of project to check whether the planned activities

are performed or not.

Also checks customer’s requirements are met or not.

2. Risk Management:-

Assesses the risk that may affect the outcome of the project or the quality of the product.

3. Software Quality Assurance:-

Performs the activities to ensure s/w quality.

Also check the software is satisfying the customer’s requirement or not.

4. Formal Technical Reviews:-

Assesses the work products to remove errors before propagated to the next activity.

5. Measurement:-

It defines and collects a project & product measure that helps the team to develop the

software.

6. S/W Configuration management:-

It manages the effect of changes.

7. Reusability Management:-

Defines the criteria for reuse of work product and software components.

8. Work product Preparation & Production:-

It encompasses activities required to create work products such as documents, models etc.

1.7 Personal and Team Process Model:

“PSP is an SEI technology that brings discipline to individual s/w engineers, for improving product

quality, cost & schedule predictability and reducing development time.”

“Team Software Process (TSP) is complementary SEI technology that enables teams to develop s/w

product effectively.”

Both models help to improve individual and team performance in terms of quality, cost, time and

defects.

Page 12: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

1.7.1 Personal Software Process (PSP) model:-

PSP is an s/w development process that helps s/w engineers to understand and improve their

performance by using disciplined procedure.

It is developed by Watts Humphrey.

PSP helps s/w engineers to:

Improve their estimating and planning skills.

Make commitment they can keep.

Manage quality of their project.

Reduce the number of defects in their work.

This model helps to improve quality and productivity.

PSP Activities:-

There are five activities performed in PSP.

1. Planning:-

Requirements are identified.

The size & required resources are estimated.

2. High level design review:-

Formal verification methods are applied to uncover errors in work product.

Design models are developed.

3. Postmortem:-

Using Metrics, measures collected, the effectiveness of process is determined.

4. Development:-

The design is reviewed and refined.

Code is generated, compiled, reviewed and tested.

Metrics are maintained.

5. High level design:-

External specifications and requirements for each component is developed.

All issues are traced and recorded.

Objectives and Goals of PSP:-

Page 13: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

1. PSP is intended to help s/w developers to understand and improve their performance.

2. The goal of PSP is to help the developers to develop zero defect or low defect products on schedule.

3. PSP has been used by Motorola and achieved zero defects in 18 projects.

Disadvantages:-

1. PSP is intellectually challenging and demands commitment that is not possible to obtain.

2. Training is lengthy and costly.

3. The required level of measurement is difficult and complex for software developers.

1.7.2 Team Software Process (TSP) model:-

TSP provides process framework that is designed to help the team of managers and engineers to

produce large and complex projects.

Improves the performance in terms of quality, cost, time, and productivity.

It is developed by Watts Humphrey.

TSP activities:-

There are eight activities performed in TSP.

1. Launch:-

During launch, the course objective is reviewed.

The TSP structure and contents are described.

Develop the team and assigns roles to all team members.

Describe the customer need.

2. Strategy:-

Creates design for product.

Develop the strategy to decide what will be produced in each cycle.

Estimates initial size.

Configuration, reuse and risk are managed.

3. Plan:-

Identifies tasks to be performed and estimates the time to complete tasks.

Assigns the tasks to team members.

Make weekly schedule for task completion.

4. Requirements:-

Analyze need statement and make communication with customers.

Specify and inspect the requirements.

5. Design:-

Creates high level design, specify design, inspect the design.

Page 14: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

6. Implement:-

Implements the modules or units.

Creates the design of modules, review the design.

Translate the design into code, review the code, compile and test the modules.

Analyze the quality of modules.

7. Test:-

Integrate all modules and build the software system.

Conduct the system test and produce documents.

8. Postmortem:-

Conduct postmortem analysis to check effectiveness of process.

Make the team evaluation.

Objectives and goals of TSP:-

1. The main goal of TSP is to build the self-directed team that organizes itself to produce high quality

software.

2. The objectives are:-

a. To provide improvement guidance to high maturity organizations.

b. To facilitate the university teaching of “Industrial Grade Team Skills”.

c. To build self-directed team that track and plan their work .each teams have 5 to 25 engineers.

d. To show managers, how to motivate their team members and how to improve the performance.

e. To improve the s/w development process by using CMM level 2 & 3.

3. Self-directed team has consistent understanding of objectives and goals.

4. Also defines responsibilities and roles to team member that are:-

a. Track quantitative project data.

b. Continuously assesses the risk and reacts to it.

c. Defines local standards that are applicable to s/w engineering work.

d. Identifies team process appropriate for project.

e. Tracks, manages project status.

5. Use variety of forms, standards and scripts (defines the process activities) that guides the team.

Difference between PSP and TSP:-

Sr.

No.PSP TSP

1 PSP stands for Personal Software Process. TSP stands for Team Software Process.

2It provides guidelines for individual S/W

developers.

It provides guidelines for S/W developer’s

teams.

Page 15: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

3 Focus is on individuals. Focus is on teams.

4

Consist of set of methods, tables, scripts that serve

as guidelines for s/w developers to improve

quality and productivity.

Consist of set of forms scripts, standards

that helps the teams to improve quality and

productivity.

5 PSP is designed for individual person.TSP is designed for group of 2 to 25

persons.

6 Make the use of CMM level 5. Make the use of CMM level 2 & 3.

7

In PSP, planning is short because initially top

level plan is developed for entire project &

detailed plan is covered in next three months.

In TSP planning is long because during

launch, the team puts the detailed project

plan.

1.7.3 Significance in ongoing software process improvement:-

The productivity and quality of the s/w is depends on 3 factors:-

Fig. Categories of process improvement

1. People:-

Having the best available people is important for any organization.

S/W is people- intensive discipline.

The productivity and quality are depends upon individual skills and experience.

So there is difference between productivity and quality results.

2. Technology:-

For developing the good software, the computer and software support is necessary and useful.

There are many new tools which can be used for developing software.

Old tools and technologies should not be used.

3. Process:-

The activity performed by people, to develop and to maintain the software is called s/w process.

People

ProcessTechnology

Components required to produce quality

Page 16: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

All development organizations must have appropriate s/w process.

All the above factors should be managed by organization to produce good s/w in low cost on time.

To develop good software, highly skilled peoples, using appropriate technology and best process are

required.

1.8. Process Models:

“A framework containing the processes, activities and tasks involved in the development, operation, and maintenance of software product for whole life of system”.

All s/w process models consist of generic framework activity and the workflow between activities.

There are two types of the process models:-

1. Prescriptive process models:-

There are three prescriptive models.

a. Waterfall model. b. Incremental model.

c. RAD (Rapid Application Development) model.

2. Evolutionary process models:-

There are two evolutionary models.

a. Prototyping model.

b. Spiral model.

1.8.1. Prescriptive process models:-

The models which have predefined process framework are known as prescriptive process models. It defines set of tasks, activities, actions and work products required to produce high quality software.

These models provide guidelines for developing the software.

There are three prescriptive process models.

1.8.1.1 Waterfall Model:-

This is first published model.

It is developed by Winston Royce.

It is linear model because after completion of one phase it enters into next phase.

The output of one phase is given as input for next phase so if output of one phase is wrong it affects the

next phases.

Features of waterfall model are:-

It can be implemented for all size projects.

It leads to clear approach for s/w development.

Testing is inherent in every phase.

At every stage, documentation is done which is helpful for s/w development.

The situation where it is applicable:-

Page 17: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

The projects which follows sequential flow for such projects this model can be applied.

Each phase consist of set of activities and performed by different people.

It has sequential linear flow among phases.

By using work products we can easily measure the progress of project.

Fig.Waterfall model

Phases of waterfall model :-1. Preliminary investigation or system engineering:-

In this phase, the requirements for all parts of the system are identified.

We decide the requirements of system elements.

2. Requirements Analysis:-

This phase focuses on the requirements of the software to be developed.

The analyst must understand the information domain, the required function, the performance, and

the interfacing.

3. System Design:-

This phase determines the detailed process of s/w development.

During this phase, the designer develops the design for four attributes of program:

i. Data structure.

ii. Software Architecture.

iii. Procedural detail

iv. Interface characterization.

4. System Coding:-

The design must be translated into a machine -readable form.

Preliminary Investigation

Requirement Analysis

System Coding

System Design

System Testing

Implementation & maintenance

Page 18: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

The coding step performs this task.

5. System Testing:-

Testing phase ensures that the software is developed as per the user’s requirements.

This phase focuses on the logical internals of the software (source code) and functional externals

(output of the software).

6. Implementation and maintenance:-

This phase delivers fully functioning software to the user.

There are certain problems encountered while applying waterfall model:

It is difficult to state all requirements by the customer.

The customer must have patience.

Advantages of Waterfall model:-

1. Waterfall model is linear model so it is very easy to implement.

2. The amount of resources required to implement this model is very minimum.

3. The documentation is produced at every stage of waterfall model development. This makes the

understanding of the product designing procedure simpler.

4. After coding stage, testing is done to check the correctness of the code.

5. In waterfall model, the progress is measurable.

6. Each phase of development proceeds sequentially.

Disadvantages of waterfall model:-

1. The model is rigid and monolithic.

2. Requirements need to be specified before the development proceeds.

3. Does not involve risk management.

4. Sometimes it happens that the customer is not able to tell what he wants from the software. Any

changes that he suggests may cause lot of confusion.

5. Small changes or errors that arise in the completed software may cause a lot of problems.

6. The lifecycle can take so long period so the product becomes invalid sometimes.

7. Estimation of time and cost is difficult for each stage.

8. The testing process starts after completion of code phase so the testers remain idle hence manpower is

wasted.

1.8.1.2 Incremental Model:-

It was developed by Mills Etal in 1980.

The incremental model is also known as iterative enhancement model.

In this model, the project is divided into small subsets called as increments and are implemented

individually.

Page 19: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

It combines the linear model with iterative philosophy.

Fig.Incremental Model

Each linear sequence produces a deliverable increment of the software.

When the incremental model is used, the first increment is a “core product”.

For later increments the supplementary features are added.

This model is useful when staff is unavailable for complete implementation and there is deadline.

Example: MS word is developed by using this model. The first increment was just providing editing and

documentation production, more sophisticated editing and documentation production was capabilities of

second increment. And spelling and grammar checking feature is added in the third increment.

Advantages of Incremental model:-

1. It combines the linear nature of waterfall model and iterative nature of prototyping model.

2. Number of people required is less.

3. Easy to add quality.

4. The system can be designed in such a way that it can be delivered into pieces.

5. Increments are developed one after the other, after feedback has been received from the user.

6. It is easy to predict the resources required for software development.

7. Technical risks can be managed.

8. Becomes understandable after successive refinements.

Disadvantages of Incremental model:-

1. Reusability of code is minimum.

2. Integration testing is difficult to do.

3. It is very difficult to assess the risks and to solve that.

4. Each increment requires testing.

5. It can be applied to only those projects whose modules are independent.

6. When there is time constraint or when the customer cannot accept, the product becomes invalid.

1.8.1.3 RAD (Rapid Application Development) Model:-

Analysis Design TestCodeIncrement 1 Delivery of 1st Increment

Analysis Design TestCode Increment 2

Analysis Design TestCodeIncrement 3

Delivery of 2nd Increment

Delivery of 3rd Increment

Page 20: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

It is a linear sequential software development model that focuses on an extremely short development.

It also focuses on the reuse of code, processes, and tools.

In RAD model, a separate team performs functions and then these functions are integrated to develop

whole.

RAD model is used for developing the “information system applications”.

Fig. RAD model

The RAD model encompasses following phases:-

1. Business Modeling (BM) :-

The information flow is modeled which answers the following questions:

What information is required?

What information is generated?

Who generate the information?

Where does the information go?

Who process it?

2. Data Modeling (DM):-

The information flow defined by business modeling is refined into set of data objects that are

needed by application.

The attributes of each object are identified and the relationship between the objects is defined.

3. Process Modeling(PM) :-

The functions are defined to process the data objects defined in the data modeling phase.

BM

DM

TT

AG

PM

BM

DM

TT

AG

PM

Team 1

Team 2

Page 21: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

Processing descriptions are created for adding, deleting, modifying or retrieving a data object.

4. Application Generation (AG):-

Applications are generated by using fourth generation programming languages and tools like

VB, VC++ rather than using third generation programming language.

The RAD makes the reuse of existing program components.

5. Testing & Turnover (TT):-

The RAD process emphasizes reuse, many of the program components have already been tested.

This minimizes the testing and development time.

Advantages of RAD Model:-

1. Flexible and helps to make the changes.

2. It has short development cycles so user can see the product quickly.

3. It involves user participation .so user can accept the final product easily.

4. Project risks are reduced.

5. Manual coding is reduced due to code generators and code reuse.

6. Encourages user involvement.

7. Less defects.

Disadvantages of RAD model:-

1. Useful only for large projects.

2. RAD projects will fail if there is no commitment by developers to perform activities rapidly.

3. If software is not properly modularized, building application becomes problematic.

4. RAD is not appropriate when technical risks are high.e.g.this occurs when new applications

make the use of new technology.

5. RAD projects will fail if there is no commitment by developers or users to get software

completed on time.

6. Not appropriate when technical risks are high.

1.8.2. Evolutionary process models:-

Evolutionary process models are iterative in nature.

It helps the software engineers to develop complete version of software.

There are two evolutionary models:

i. Prototyping Model. ii. Spiral Model

1.8.2.1 Prototyping Model:-

Prototyping is the process that enables the developers to create a working model of an information system application.

Page 22: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

Before designing & coding phase, a prototype is built to help the customers to identify the

requirements.

This model is applied when detailed information related to input and an output requirement is not

available.

A prototype model can take one of the three forms:-

1. A paper prototype. 2. A working prototype. 3. An existing prototype.

Prototype gives idea about the software system.it does not performs all functions of the final system.

Because of prototype the customers can get actual feel of system so he can easily understand the

requirements.

A customer evaluates the prototype and then suggests what changes needed in the system.

It does not require lot of cost to build.it can be prepared by pen, pencil, paper, soft wares like code

generators etc.

Steps performed in prototyping model is as follows:-

Fig. Prototyping Model

1. Requirements gathering and Refinement:-

Prototyping begins with the requirement gathering.

In this step both analyst and customer work together and define the objective for the software.

They both identify the requirement to be fulfilled.

2. Quick design:-

It focuses on those aspects of software that will visible to user.

Analyst estimates prototyping cost and gives idea to the management.

3. Building prototype:-

The design of prototype is developed.

Requirement gathering and refinement

Quick Design

Building prototype

Engineer product

Customer evaluation of prototype

Refining prototype

Start

Stop

Page 23: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

By referring the design a prototype is developed by using several tools.

Prototype represents the input screen format and output screen format.

4. Customer evaluation of prototype:-

The prototype is evaluated by the user and is used to refine the requirements for the software to

be developed.

User or customer works on prototype to evaluate its features and operations.

5. Refining prototype:-

The prototype is refined after getting information from user about what they want and what they

do not want.

Developer should understand the need of customer properly for making modifications in the

prototype.

6. Engineer product:-

Once requirements are completely met the user accepts the final prototype.

The final system is developed thoroughly.

Advantages or Benefits of prototyping model:-

1. It saves the time in system development.

2. Encourages the communication between developer and customer.

3. Misunderstanding between software developer and user may be identified.

4. Missing user-services may be detected.

5. Prototyping helps to build the system with user’s satisfaction and avoid wrong system delivery.

6. The prototype serves as basis for writing the specification for production of high quality

software.

7. Confusing user services may be identified and refined.

8. System can be delivered within time.

9. If proper tools are used, low cost is required for development of prototype.

10. Improved system usability.

Disadvantages of prototyping model:-

1. If the user is not satisfied by the developed prototype, then a new prototype is developed. This

process goes on until a perfect prototype is developed. Thus it becomes expensive and time

consuming.

2. The developer loses focus of the real purpose of software so it effect on the quality of software.

For example developers may use inefficient algorithms and inappropriate programming

languages while developing the prototype.

Page 24: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

3. Prototyping can lead to false expectations. For example the customer believes that the

development of final system is finished when it is not.

4. The primary goal of prototyping is speedy development so the system can be developed in

series without considering integration of all components.

1.8.2.2 Spiral Model or Process Model:-

The spiral model is software development model developed by Boehm in 1988.

Instead of representing the software process as a sequence of activities with backtracking from one

activity to another, the process is represented as a spiral.

Each loop of spiral represents a phase of the software process.

Spiral model can be defined as a ,“ a model of the software development process in which the activities

like requirement analysis,coding,integration and testing are performed iteratively until the software is

complete”.

The spiral model is useful in following situation:-

When development of project starts, it may be possible that work may be stopped due to any

reason.in such cases what step must be taken to solve the problem should be known.

Which path should be followed for particular procedure must be known in advance to the

development team.so the work will not be stopped.

Spiral helps us in above situation.

It is useful for identifying and eliminating the high risks.

The spiral model contains four stages and each stage is represented by one quadrant of a Cartesian

diagram. The radius of spiral represents the cost acquired in the process.

The four major activities of spiral model are:-

Page 25: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

1. Planning:-

It determines the objectives, alternatives and constraints of the product.

2. Risk analysis:-

The alternatives are evaluated.

Risk areas are identified.

The efforts are made to resolve the risks.

3. Engineering:-

By using the activities like simulation and prototyping, the development and verification of

the next level product is done.

4. Customer Evaluation:-

The customer evaluates the work products and makes suggestions and modifications.

The spiral model has two concepts:-

They provide guidance to software engineers on the order in which the technical activities should

be carried out within project.

They provide framework for managing development and maintenance, estimating resources and

define intermediate milestones.

It uses prototyping approach so the customer evaluation is done .so the final product is made as per the

customer requirements.

Advantages of spiral model:-

1. The spiral model is realistic approach to development of large scale software products.

2. It uses prototyping for risk reduction.

3. It maintains systematic stepwise approach.

4. This model should consider all technical risk and should reduce those risks.

5. It performs quality assurance activities.

6. As the work progresses the estimation of budget and schedule becomes easy.

7. Used be dynamic and complex projects.

Page 26: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

8. Re-evaluation after each step allows changes in user perspectives and technology advances.

Disadvantages of spiral model:-

1. For creating new prototype, this model is time consuming and expensive.

2. It is not much proven model because it is not controllable model.

3. Risk assessment and resolution of risks is not easy task.

4. Difficult to estimate budget and schedule in the beginning, because some of the analysis is not

done until the design of software is developed.

5. Prototyping can lead to false expectations.

1.9 Agile software development:-

Agile software development provides disciplined project management process that encourages

inspection, adaption, leadership philosophy that encourages teamwork, self-organization,

accountability , set of engineering practices to produce high quality software ,Business approach that

helps to achieve goal of customer and company..

It consist of several methodologies like extreme programming(XP),Scrum,Crystal,Dynamic System

Development Method(DSDM),lean development, feature driven development(FDD) etc.

agile methodologies generally promote:-

1. A project management process that encourages inspection and adaptation.

2. A leadership philosophy that encourages team work, self-organization, and accountability.

3. A set of best practices that allows for rapid delivery of high quality software.

4. A business approach that aligns development with customer needs and company goals.

General Agile Life Cycle:-

A generic agile lifecycle is as follows:-

Project Initiation

Project Plan ArchitectureElaborate requirement

Release

Time-box Time-box Time-box …….

Time-box Time-box Time-box …..Release

Page 27: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

Fig. Generic agile life cycle

The key elements are project initiation and project plan followed by one or more releases made up

of one or more time boxes.

Elaborate requirements and architecture are the optional phases which can be done in parallel with

the project plan.

The phases of generic agile life cycle are as follows:-

1. Project Initiation:-

Determine initial high level requirements.

Set up and justify the project.

2. Project plan:-

After project initiation plan is developed which includes whether you are going to have the

optional phases.

3. Elaborate Requirements(Optional):-

Very high level requirements are gathered during project initiation.

These requirements are expanded during this phase to elaborate requirements.

4. Architecture(Optional):-

This phase is optional in XP (extreme Programming).

In DSDM an architecture phase is compulsory and a “System Architecture Document”

(SAD) is developed.

5. Release:-

A release is a piece of code delivered to the customer.

Releases can be from 2 weeks to 6 months but usually 3 months long.

Releases have one or more time boxes.

In DSDM one release is there.

6. Time-Box:-

A time box is 1 to 6 weeks long but usually 3 to 4 weeks.

The important thing about time box is that the delivery date is fixed.

1.9.1. Difference between Prescriptive and Agile Process Models:-

Sr.No Agile Process Model Prescriptive Process Model

1 It promotes empirical rather than defined processes. A defined process has many predefined and ordered

Page 28: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

activities to be followed during development.

2.

Agile models :-

They are informal.

They are emphasizing on maneurabibilty,

adaptability and speed.

They are appropriate for many types of projects e.g.

web based development.

They are indicated:-

Facilitating planning.

Improving system quality.

Improving control.

Guiding project teams.

3Examples: Dynamic System Development

Method(DSDM) ,Scrum, Crystal etc.Examples:- waterfall model, RAD model etc.

1.9.2 Features of the Agile Software Development Approach:-

The various features of agile software development approach is as follows:-

1. Iterative: - Development process repeated many times until the end result is achieved.

2. Flexible: - Changes from clients are accommodated.

3. Adaptable: It adjusts in new environment.

4. Simple: - Easily adopted by development teams.

5. Transparent: - Encourages client or user involvement.

Page 29: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

1.9.3. Concept of Extreme Programming (XP):-

It is one of the most adopted agile methodologies.

It is developed by Kent Beck.

XP improves software project in 4 essential ways that are communication, simplicity, feedback, and

courage.

It release in short development cycle, so productivity is improved.

It takes the following “best practices”:-

XP works on ideas & methods occurred during 1980.

XP uses object oriented approach.

XP follows set of rules and practices during four framework activities. (Planning, designing, coding

and testing).

Goals of the Extreme programming (XP):-

Describes Software development discipline that helps people to produce high quality software faster.

It uses multiple short development cycles so the cost of change is reduced.

Page 30: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

The key activities of XP are as follows:-

1. Planning:-

It starts with creation of user stories which describes required functionality and features of software

to be built.

Story is written by customer.

Programmers listen to what the customers’ needs the system to do, what “business logic” is needed.

Programmers must able to give the feedback to customer about technical aspects of how the problem

to be solved.so the communication is required.

2. Design:-

While designing designers follows ‘Keep It Simple’ principle.

It provides implementation guidance for story as it is written - nothing less, nothing more.

Good designs avoids lots of dependencies within system so, the changing one part of system will not

affect other part of the system.

Uses CRC (Class-Responsibility Collaborator) cards for thinking about s/w in an object oriented.

A CRC card identifies and organizes object oriented classes.

CRC are work product of the design phase.

3. Coding:-

After designing, the coding phase is started.

During this phase, developers find out the solution.

Without code there is no work product.

It helps to communicate thoughts about programming problems.

i. Unit testing: -

When the code is complete, it can be unit tested providing feedback to the software.

ii. Pair Programming:-

Two peoples work together at one computer workstation to create code for story.

Provides mechanism for problem solving & quality assurance.

A pair programmer completes their code work & is integrated with work of others.

This is performed on daily basis by integration team.

4. Testing:-

Bugs and errors are very serious problems in software development.

Unit test determines whether software works as per customer requirements or not.

Page 31: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

Acceptance Test or Customer Test: - This test is performed by customer and it focuses on

functionality of overall system, which is visible by customer.

Advantages of XP:-

1. Emphasis on Customer involvement:-

A customer helps to developers in software development projects.

2. Emphasis on teamwork & communication:-

As with TSP, this is very important in improving the performance of every software team.

3. Programmer estimates before committing to a schedule:-

This helps to establish plans and schedules.

Also helps to get the programmers personally committed to their schedules.

4. Emphasis on responsibility for quality:-

It helps to produce high quality product.

5. Continuous measurement:-

Software development is people intensive so the programmers should measure their own work.

6. Incremental development:-

Consistent with modern development methods.

7. Simple Design:

Design is very simple to understand.

8. Frequent redesign or refactoring:-

It is good idea but problematic for smallest project.

9. Helping the engineers to manage functional content:-

Helps to control the functions.

10. Frequent, extensive testing:-

Detailed testing is performed frequently.

11. Continuous reviews:-

It is one of the practice which helps to measure the performance of the team.

Disadvantages of Extreme Programming:-

1. No peoples are involved, so this methodology is not effective.

2. Takes money from customers through lack of defining deliverables.

3. Lack of structure and documentation.

4. Only works with senior level developers.

5. Develops inefficient s/w design.

6. Requires too much cultural change to adopt.

7. Requires meetings at intervals, which causes expenses to customers.

Page 32: satishpise.files.wordpress.com · Web view2017/05/01 · Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1

8. Lead to more difficult contractual negotiations.

9. It can be inefficient if the requirements for the code are changed, the same programming may

need to be done several time over.

10. Impossible to make estimation of work efforts, because at the beginning of project, no one knows

the entire requirements.

11. Agile is feature driven so it is very hard to achieve the quality goal.

----------------------------------------------END OF CHAPTER--------------------------------------------------------------