Ch 1 Software Engineering and Models
Ch 1 Software Engineering and Models
Software is playing an increasingly important and central role in all aspects of daily life , e.g. :
Government , Teaching , Transportation ,Entertainment , Medication , Farming , Law , Banking
and Finance .
Software Engineering is defined by Fritz Bauer as: The establishment and use of sound
Engineering Principles in order to obtain economically developed software that is reliable and
works efficiently on real machines.
Software Engineering is an engineering approach for the software development. We can
alternatively view it as a systematic collection of past experience. This experience is arranged in
the form of methodologies and guidelines. It is possible to write small programs without using
software engineering principles. But if one wants to develop a huge Software Product, then
software engineering principles are crucial , to achieve a excellent quality of software , that is cost-
effective .
For example, if a friend asked you to build a small wall, you would be able to do that using your
common sense. You will use materials like Bricks, Cement, etc. And build the wall. But what would
happen if that same friend asked you to build a large Multi-Storeyed Building. It would be Very
difficult to extend your Knowledge about, small wall construction, in to constructing a large
building.
Similarly, without the Principles of Software Engineering it would be difficult to develop large
programs. In Industry, Software engineering is used to accommodate multiple functions, during the
development of Large Programs. The Difficulty with developing such huge Business-related
Programs is that, the difficulty level of such programs increases exponentially with their size. For
example, a program of 1,000 lines of code has some complexity, but a program with 10,000 lines
of code maybe 10 times or even 100 times more difficult, unless Software Engineering Principles
are used. Software Engineering helps to reduce programming Complexity by using two main
techniques:
1] Abstraction
2] Decomposition
1] Abstraction: To Hide Complex details with easy to understand Information, about the Process.
2] Decomposition: To break something into its basic elements. And then understand the elements
one-by-one.
Waterfall Model
Requirement Gathering and analysis − All possible requirements of the system to be developed
are captured in this phase and documented in a requirement specification document.
System Design − The requirement specifications from first phase are studied in this phase and
the system design is prepared. This system design helps in specifying hardware and system
requirements and helps in defining the overall system architecture.
Implementation − With inputs from the system design, the system is first developed in small
programs called units, which are integrated in the next phase. Each unit is developed and tested
for its functionality, which is referred to as Unit Testing.
Integration and Testing − All the units developed in the implementation phase are integrated into
a system after testing of each unit. Post integration the entire system is tested for any faults and
failures.
Deployment of system − Once the functional and non-functional testing is done , the product is
deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To fix those
issues, patches are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment.
Advantages:
1] Simple and Easy to understand
2] Easy to manage
3] Phases do not overlap
4] Best for small Projects
Disadvantages:
1] Difficult to go back and Change Something
2] No working Software until late stages of SDLC
3] Risks and Uncertainty
4] Not suitable for complex and object oriented projects
Ref: [Click for Video Info ]
Spiral Model
The Spiral Model is Software Development Process joining elements of both design and
prototyping, in an effort to combine the advantages of top-down and bottom-up concepts . This
model of development combines the features of the prototyping model and the waterfall model.
The spiral model intended for large, expensive and complicated projects.
The spiral model is divided into a number of framework activities, also known as task regions.
Each of the regions is populated with a series of work tasks that are adapted according to the
characteristics of the project undertaken. Typically there are six task regions as shown in the
figure:
1] Customer communication: This requires to set-up effective communication between
developer and customer.
2] Planning: This task requires defining resources, timelines and additional project related
information.
3] Risk Analysis: Requirements are studied, risks are identified and risk mitigation strategy is
planned and finalized.
4] Engineering: Task requires building one or more representations of the application.
5] Construction and Release: Involves the construction, testing, installation and providing user
support (e.g.: documentation and training).
6] Customer Evaluation: This task requires obtaining customer feedback based on the ratings, of
software representations created during engineering stage and the software implemented during
installation stage.
Advantages:
1] High amount of Risk Analysis
2] Good for large and mission-critical Projects
3] Software is produced early in the software life cycle
Disadvantages:
1] A costly model
2] Risk analysis requires High Expertise
3] Project’s Success is dependent on Risk Analysis Phase
4] Will not work for smaller projects
Rapid Application Development Model or RAD for short, is a “try before you buy” approach to
software development. The theory is that end users can produce better feedback when examining
a live system, as opposed to working strictly with documentation. RAD-based development cycles
have resulted in a lower level of rejection when the application is placed into production, but this
success most often comes at the expense of a dramatic overruns in project costs and schedule.
The down side to RAD is the propensity of the end user to force scope creep into the development
effort. Since it seems so easy for the developer to produce the basic screen, it must be just as
easy to add a widget or two. In most RAD lifecycle failures, the end users and developers were
caught in an unending cycle of enhancements, with the users asking for more and more and the
developers trying to satisfy them. The participants lost sight of the goal of producing a basic,
useful system, in favour of the siren song of glittering perfection.
Advantages of RAD:
1] RAD reduces the development time and reusability of components help
to speed up development
2] All functions are modularized so it is easy to work with
3] For large projects RAD require highly skilled engineers in the team
Disadvantages of RAD:
1] Both end customer and developer should be committed to complete the System in a much
abbreviated time frame
2] If commitment is lacking, RAD will fail
3] RAD is based on Object Oriented approach and if it is difficult to Modularize the project, and
then RAD may not work well