Software Engineering Unit 1
Software Engineering Unit 1
WHAT IS SOFTWARE?
Software is: (1) instructions (computer programs) that when executed provide desired
features, function, and performance;
(2)enable the programs to adequately manipulate information and (3) documentation
that describes the operation and use of the programs.
system software
application software
engineering/scientific software
embedded software
WebApps (Web applications)
AI software
LEGACY SOFTWARE
Some realities:
a concerted effort should be made to understand the problem before a software solution is developed
design becomes a prime activity
software should exhibit high quality
software should be maintainable
The definition:
[Software engineering is] the establishment and use of sound engineering principles in
order to obtain economically software that is reliable and works efficiently on real machines.
The IEEE definition:
Software Engineering: (1) The application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of software; that is, the application of
engineering to software. (2) The study of approaches as in (1).
S/W ENGG IS A LAYERED TECHNOLOGY
SOFTWARE CHARACTERISTICS
SOFTWARE CRISIS
Software Crisis is a term used in computer science for the difficulty of writing useful and
efficient computer programs in the required time
Reasons can be:
WATERFALL MODEL
PROTOTYPE MODEL
SPIRAL MODEL
EVOLUTIONARY DEVELOPMENT MODELS
ITERATIVE ENHANCEMENT MODELS
WATERFALL MODEL (CLASSIC LIFE CYCLE MODEL)
POINTS TO PONDER(WATERFALL MODEL)
Useful at places where requirements are fixed and work need to be completed in a linear manner.
THE INCREMENTAL MODEL
Advantages –
Error Reduction (core modules are used by the customer from the beginning of the phase and
then these are tested thoroughly)
Uses divide and conquer for breakdown of tasks.
Lowers initial delivery cost.
Incremental Resource Deployment.
Disadvantages –
Requires good planning and design.
Total cost is not lower.
Well defined module interfaces are required
THE RAD (RAPID APPLICATION DEVELOPMENT) MODEL:
Use of reusable components helps to reduce the cycle time of the project.
Feedback from the customer is available at initial stages.
Reduced costs as fewer developers are required.
Use of powerful development tools results in better quality products in comparatively
shorter time spans.
The progress and development of the project can be measured through the various stages.
It is easier to accommodate changing requirements due to the short iteration time spans.
DISADVANTAGES
• The use of powerful and efficient tools requires highly skilled professionals.
• The absence of reusable components can lead to failure of the project.
• The team leader must work closely with the developers and customers to close the project
in time.
• The systems which cannot be modularized suitably cannot use this model.
• Customer involvement is required throughout the life cycle.
• It is not meant for small scale projects as for such cases, the cost of using automated tools
and techniques may exceed the entire budget of the project.
ACTIVITY TIME
SCENARIO:
ABC - Honda 2- wheeler spare parts manufacturer industry - is searching for some s/w developer who
can create their website.
Client Profile: ABC is a well renowned name in Delhi NCR region for manufacturing and wholesale
selling of spare parts of two-wheeler of Honda company. It is one among the leading company in this
business. Yearly turnover is around 80 crores. It is clean and highly reputed industry.
Case 1: Reputation is most and most important thing for ABC. They are ready to pay but they want
best results. Ready to invest more time even. So, they have invested a lot of time and money to come
up with very clear requirements.
Case 2: Due to some top management and developer conflicts, company now started doubting the
work and want to see some output . It cannot wait anymore
Case 3 : Developer has crossed the timeline …company want the deliverables in next 90 days.
EVOLUTIONALRY PROCESS MODELS
The customers get to see the partial product early in the life cycle. This ensures a greater
level of customer satisfaction and comfort.
New requirements can be easily accommodated as there is scope for refinement.
Missing functionalities can be easily figured out.
Errors can be detected much earlier thereby saving a lot of effort and cost, besides
enhancing the quality of the software.
The developed prototype can be reused by the developer for more complicated projects in
the future.
Flexibility in design.
DISADVANTAGES –
Costly w.r.t time as well as money.
There may be too much variation in requirements each time the prototype is evaluated by
the customer.
Poor Documentation due to continuously changing customer requirements.
It is very difficult for the developers to accommodate all the changes demanded by the
customer.
There is uncertainty in determining the number of iterations that would be required before
the prototype is finally accepted by the customer.
After seeing an early prototype, the customers sometimes demand the actual product to be
delivered soon.
Developers in a hurry to build prototypes may end up with sub-optimal solutions.
The customer might lose interest in the product if he/she is not satisfied with the initial
prototype.
THE SPIRAL MODEL
Originally proposed by Barry Boehm, the spiral model is an evolutionary software process
model that couples the iterative nature of prototyping with the controlled and systematic
aspects of the waterfall model.
It provides the potential for rapid development of increasingly more complete versions of
the software.
Boehm describes the model in the following manner:
"The spiral development model is a risk-driven process model generator that is used to guide multi-
stakeholder concurrent engineering of software intensive systems.
It has two main distinguishing features. One is a cyclic approach for incrementally growing a
system’s degree of definition and implementation while decreasing its degree of risk. The other is a
set of anchor point milestones for ensuring stakeholder commitment to feasible and mutually
satisfactory system solutions."
KEY POINTS : SPIRAL MODEL
In this Model, you can start with some of the software specifications and develop the first
version of the software. After the first version if there is a need to change the software,
then a new version of the software is created with a new iteration. Every release of the
Iterative Model finishes in an exact and fixed period that is called iteration.
The Iterative Model allows the accessing earlier phases, in which the variations made
respectively. The final output of the project renewed at the end of the Software
Development Life Cycle (SDLC) process.
WHEN TO USE THE ITERATIVE MODEL?