UNIT-I
Introduction to Software Engineering : The Evolving role of Software.
Software characteristics and applications, Evolution of Software Engineering, Software crisis. The Software Engineering challenges, The Software Engineering approach. Software development life cycle.
Software Development Process Models (Paradigms): Waterfall
Model. Prototyping, Iterative Development, Spiral Model. Software Project: Planning a Software Project. Effort Estimation: (COCOMO and Function Points Model), Project Scheduling, Staffing and Personnel Planning, Software Configuration Management Plan, Quality Assurance
The Waterfall Model
2
•It is the oldest paradigm for SE. When requirements are
well defined and reasonably stable, it leads to a linear fashion.
•The classic life cycle suggests a systematic, sequential
approach to software development.
Problems: 1. rarely linear, iteration needed. 2. hard to state
all requirements explicitly. 3.Blocking state. 4. code will
not be released until very late.
Waterfall model
✓ Classical model of software engineering
✓Sequential development approach
Basic Principles
✓ Project is divided into sequential phases, with some overlap and splash back acceptable between phases.
✓Stretched control is maintained over the life of the project via
extensive written documentation, formal reviews, and approval/signoff by the user and information technology management occurring at the end of most phases before beginning
the next phase. 4
When to use the waterfall model:
✓Requirements are very well known, clear and fixed.
✓Product definition is stable.
✓Technology is understood.
✓There are no ambiguous requirements
✓ Sufficient resources with required knowledge are available freely
✓The project is short.
The following list details the steps for using the waterfall model:
System requirements
✓ Establishes the components for building the system
✓ Include hardware requirements, software tools, and other necessary
components.
Software requirements
✓ Requirements analysis includes determining interaction needed with
other applications and databases, performance requirements, user interface requirements, and so on.
Architectural design
✓ Defines the major components and the interaction of those components, but it does not define the structure of each component. 6
Detailed design
✓Defines the specification of each component in detail Coding
✓Implements the detailed design specification Testing
✓Determines whether the software meets the specified requirements and finds any errors present in the code
Maintenance
✓ Addresses problems and enhancement requests after the software releases
Waterfall Model - Advantages
✓Simple and easy to understand and use.
✓Easy to manage due to the rigidity of the model. ...
✓Phases are processed and completed one at a time.
✓Works well for smaller projects where requirements are very well understood.
✓Clearly defined stages.
✓Well understood milestones.
✓Easy to arrange tasks.
✓Reinforces good habits: define-before- design, design-before- code
8
Disadvantages
✓ Idealized, doesn’t match reality well.
✓ it does not allow much reflection or revision.
✓ Once an application is in the testing stage, it is very difficult to
go back and change something that was not well-documented or thought upon in the concept stage.
✓ Software is delivered late in project, delays discovery of serious errors.
✓ Difficult to integrate risk management.
✓ Difficult and expensive to make changes.
Incremental Process Models
1. The Incremental Model
2. The RAD Model
10
The Incremental Model
Basic Principles
✓ Iterative model, the project is divided into small parts.
✓ Allows the development team to make obvious results
earlier in the process and obtain valuable feedback from system users.
✓ Each iteration is actually a mini-Waterfall process with
the feedback from one phase providing critical information for the design of the next phase.
12
The Incremental model
Software releases in increments.
1
stincrement constitutes Core product.
Basic requirements are addressed.
Core product undergoes detailed evaluation by the customer.
As a result, plan is developed for the next increment,
Plan addresses the modification of core product to better meet the needs of customer.
Process is repeated until the complete product is produced.
When to use iterative model:
✓ Requirements of the complete system are clearly defined and understood.
✓ When the project is big.
✓ Major requirements must be defined; however, some details can evolve with time.
14
Advantages
✓Generates working software quickly and early during the software life cycle.
✓More flexible
✓less costly to change scope and requirements
✓Easier to test and debug during a smaller iteration.
✓Easier to manage risk because risky pieces are identified and handled during its iteration.
✓Allows feedback to proceeding stages
✓Can be used where the requirements are not well understood
16
Disadvantages
✓ Needs good planning and design.
✓ Needs a clear and complete definition of the whole
system before it can be broken down and built incrementally.
✓ Total cost is higher than waterfall.
✓ Not easy to manage this model.
✓ No clear milestones in the development process.
THE RAD MODEL
(Rapid Application Development)
An incremental software process model
Having a short development cycle
High-speed adoption of the waterfall model using a component based construction approach
Creates a fully functional system within a very short
span time of 60 to 90 days
18
When to use RAD Methodology?
•When a system needs to be produced in a short span of time (2-3 months)
•When the requirements are known
•When the user will be involved all through the life cycle
•When technical risk is less
•When there is a necessity to create a system that can be modularized in 2-3 months of time
•When a budget is high enough to afford designers for
modeling along with the cost of automated tools for code
generation
The RAD Model
Communication
Planning
Construction
Component reuse automatic code
generation testing
Modeling
Business modeling Data modeling Process modeling
Construction
Component reuse automatic code
generation testing
Modeling
Business modeling Data modeling Process modeling
Construction
Component reuse automatic code
generation testing
Modeling
Business modeling Data modeling Process modeling
Team # 1 Team # 2
Team # n
Deployment
integration delivery feedback
THE RAD MODEL
Multiple software teams work in parallel on different functions
Modeling encompasses three major phases: Business modeling, Data modeling and process modeling
Construction uses reusable components, automatic code generation and testing
Problems in RAD
Requires a number of RAD teams
Requires commitment from both developer and customer for rapid- fire completion of activities
Requires modularity
Not suited when technical risks are high 20
Phases of RAD model Activities performed in RAD Model
➢
Business Modeling: On basis of the flow of information and distribution between various business channels, the product is designed
➢
Data Modeling: The information collected from
business modeling is refined into a set of data objects
that are significant for the business
22
➢
Process Modeling: The data object that is declared in the data modeling phase is transformed to achieve the information flow necessary to implement a business function
➢
Application Generation: Automated tools are used for the construction of the software, to convert process and data models into prototypes
➢
Testing and Turnover: As prototypes are
individually tested during every iteration, the overall
testing time is reduced in RAD.
Advantages of RAD Model
✓ Flexible and adaptable to changes
✓ It is useful when you have to reduce the overall project risk
✓ Due to code generators and code reuse, there is a reduction of manual coding
✓ Due to prototyping in nature, there is a possibility of lesser defects
✓ Each phase in RAD delivers highest priority functionality to client
✓ With less people, productivity can be increased in short
24