You are on page 1of 60

INTRODUCTION TO SOFTWARE ENGINEERING

By Suman Bhattacharya

Chapter-1

Introduction

What is Software Engineering?

Software eng. is an engineering discipline which is


concerned with all aspects of software product.

In general, software engineering adopt a systematic


and organized approach to their work, as this is often the most effective way to produce high quality software.

What are the differences between Software Eng. And Computer Sc. ?

Computer science is concerned with theory and


fundamentals; software engineering is concerned

with the practicalities of developing and delivering


useful software.

Computer Sc.

Customer.

Problem

Theories

Computer Function

Software Eng.

Tools and Technique to solve problem

What are the differences between Software Eng. And System Eng. ?

System Eng. is concerned with all aspects of


computer based systems development, including

hardware, software and process engineering.


Software Eng. is a part of this process.

What is software process ?

A set of activities whose goal is the development or


evolution software.

What is software model?

A simplified representation of a software process,


presented from a specific perspective.

What is the main difference of Software Eng. with other Hardware Eng. ?

Project Organization Chart

Control Board Organization

Chapter-2

Software Qualities

Correctness

A program is written to provide functions specified


in its functional requirements specifications.

A program is functionally correct if it behaves


according to its stated functional specifications.

Reliability

Informally a software is reliable if user can depend on


it.

If a software will operate as expected over specified


time interval then we can say the software id reliable.
Reliability Correc tness

Robustness

A program is robust if it behaves reasonably ,


even in circumstances that were not anticipated in

the requirements specification for example disk


crash.

Performance

Any engineering product is expected to perform at


a certain level.

Ex a telephone switch may be required to process


10,000 calls per hour. Efficiency affects, and often determines, the performance of a system.

Usability

A software system is usable or user friendly if its


human users find it easy to use.

Verifiably

A software system is verifiable if its properties can


be verifiable if its properties verified easily.

Example : correctness or performance.

Maintainability

The term software maintenance is commonly used to


refer to the modifications that are made to a

software system after its initial release.


(i) Corrective, (ii) adaptive, (iii) perfective Maintenance cost exceed 60% of the total cost of the software.

Repair-ability

A software system is repairable if its defects can be


corrected with a reasonable amount of work.

Example of automobile

Reusability

In product evolution we modify a product to build a


new version of that same product.

Portability

Software is portable if it can run in different


environment. The term environment may refer to a

hardware platform or a software environment, such


as a particular operating system.

Interoperability

Interoperability refers to the ability of a system to


coexist and cooperate with other system.

Productivity

Productivity is a quality of the software production


process, referring to its efficiency and performance.

Timeliness

Timeliness

is

process related to

quality that refers


Function

to the ability to deliver a production


Time t0 t1 t2 t3 t4

Chapter-3

Software Development Life Cycle

Capability Maturity Model (CMM)

A bench-mark for measuring the maturity of an


organizations software process

CMM defines 5 levels of process maturity based on


certain Key Process Areas (KPA)

CMM Levels
Level 5 Optimizing (< 1%)
-- process change management -- technology change management -- defect prevention

-- organization process focus

Level 2 Repeatable (~ 15%)


-- software configuration management -- software quality assurance --software project tracking and oversight -- software project planning -- requirements management

Level 4 Managed (< 5%)


-- software quality management -- quantitative process management

Level 3 Defined

(< 10%)

-- reviews -- intergroup coordination -- software product engineering -- integrated software management -- training program -- organization process definition

Level 1 Initial

(~ 70%)

SDLC Model
A framework that describes the activities performed
at each stage of a software development project.

Feasibility Study
A feasibility study is conducted to find out whether
the proposed system will be

Possible
Affordable Acceptable

Purpose of Feasibility Study or Different aspects of conducting a Feasibility Study


Need Analysis Cost Benefit Analysis Technical Feasibility Legal Feasibility

Evaluating Analysis

Types of Feasibility Study


Operational Feasibility Economic Feasibility Technical Feasibility

Waterfall Model/liner sequential model/classic life cycle model


Feasibility Study

Requirement Definition

Design Specification

Coding & Unit Testing

Integration Testing

This model suggest a systematic, sequential approach to the software development that begins at system level and progress through analysis, design, development and coding, testing and maintenance

Implementation & Redelivery

Maintenance

Features of Waterfall Model

It brought a definite structure to the process of software


development, which was a major improvement over previous code-and-fix problem. Each phase is distinct and is mandatory for every project irrespective of project size.

Every phase has a well defined entry and exit criteria.


Every phase has a provision for verification, validation and

correction of error.

Waterfall Strengths

Easy to understand, easy to use


Provides structure to inexperienced staff

Milestones are well understood


Sets requirements stability

Good for management control (plan, staff, track)


Works well when quality is more important than cost or

schedule

Waterfall Deficiencies

All requirements must be known upfront Lack of flexibility Can give a false impression of progress Does not reflect problem-solving nature of software development iterations of phases Integration is one big bang at the end Little opportunity for customer to preview the system (until it may be too late)

When to use the Waterfall Model


Requirements are very well known


Product definition is stable

Technology is understood
New version of an existing product Porting an existing product to a new platform.

Spiral Model :

In this model at every spiral there is a risk assessment phase to evaluate the development effort and the associated risk involved for the particular iteration

Features of Spiral Model

It includes project activities in each spiral and


reduces risk factors.

It has verification activities and feed back within


each spiral.

It provides for user interaction through the development of prototypes in each spiral.

Advantages of Spiral Model

It provides a mechanism to cope with changing user


requirement.

It places appropriate emphasis on risk analysis.

Weakness of Spiral Model

It can also fall into the never-ending development


syndrome like the evolutionary model.

When to use Spiral Model


When costs and risk evaluation is important For medium to high-risk projects Long-term project commitment risky because of potential changes to economic priorities Users are unsure of their needs Requirements are complex New product line Significant changes are expected (research and exploration)

What is Prototype?
A prototype is a toy implementation of the system. A
prototype usually built using several shortcuts. The

software might be involve using in inefficient , inaccurate


or dummy functions. The code for prototype is usually

thrown away.

Prototype Model
Requirement Analysis

Quick Design

Customer Disapproves basic Design

Build a Prototype

Discard the prototype Customer Approves basic Design Rebuild a new prototype

Refine Design & Prototype Customer Satisfied

Full Scale Development

Prototype Model- Strengths

Customers can see the system requirements as they are


being gathered

Developers learn from customers


A more accurate end product

Unexpected requirements accommodated


Allows for flexible design and development

Steady, visible signs of progress produced

Prototype Model- Weaknesses

Tendency

to

abandon

structured

program

development for code-and-fix development

Bad reputation for quick-and-dirty methods


Overall maintainability may be overlooked The customer may want the prototype delivered. Process may continue forever (scope creep)

When to use Prototype Model ?


Requirements are unstable or have to be clarified


As the requirements clarification stage of a waterfall model Develop user interfaces Short-lived demonstrations New, original development With the analysis and design portions of object-oriented development.

V-Shaped Model
Requirement Analysis Operation and Maintenance
Valid ate R equir em en t

Acceptance Testing System Design System Design

Verif y Des ign

Program Design

Unit & Integration Testing

Coding

V-Shaped Strengths

Emphasize planning for verification and validation of


the product in early stages of product development

Each deliverable must be testable


Project management can track progress by milestones

Easy to use

V-Shaped Weaknesses

Does not easily handle concurrent events


Does not handle iterations or phases Does not easily handle dynamic changes in requirements

Does not contain risk analysis activities

When to use the V-Shaped Model

Excellent choice for systems requiring high reliability


hospital patient control applications

All requirements are known up-front


When it can be modified to handle changing requirements beyond analysis phase

Solution and technology are known

Rapid Application Model (RAD)


Requirements planning phase (a workshop utilizing structured discussion of business problems) User description phase capture information from users Construction phase productivity tools, such as code generators, screen generators, etc. inside a time-box. (Do until done) Cutover phase -installation of the system, user acceptance testing and user training

RAD Strengths

Reduced cycle time and improved productivity with


fewer people means lower costs

Mitigates cost and schedule risk


Customer involved throughout the complete cycle minimizes risk of not achieving customer satisfaction and business needs

RAD Weaknesses

Accelerated development process must give quick responses to the user Risk of never achieving closure Hard to use with legacy systems Requires a system that can be modularized Developers and customers must be committed to rapid-fire activities in an abbreviated time frame.

When to use RAD


Reasonably well-known requirements


User involved throughout the life cycle Functionality delivered in increments High performance not required Low technical risks

Incremental Model

Construct a partial implementation of a total system Then slowly add increased functionality The incremental model prioritizes requirements of the system and then implements them in groups. Each subsequent release of the system adds function to the previous release, until all designed functionality has been implemented.

Incremental Model Strengths


Develop high-risk or major functions first


Each release delivers an operational product Customer can respond to each build Uses divide and conquer breakdown of tasks Lowers initial delivery cost

Initial product delivery is faster


Customers get important functionality early Risk of changing requirements is reduced

Incremental Model Weaknesses


Requires good planning and design


Requires early definition of a complete and fully functional system to allow for the definition of increments

Total cost of the complete system is not lower

When to use the Incremental Model

Risk, funding, schedule, program complexity, or need


for early realization of benefits.

A need to get basic functionality to the market early


On projects which have lengthy development

schedules

On a project with new technology

You might also like