4sem BCA SA&SE Unit2 Notes
4sem BCA SA&SE Unit2 Notes
Definition
Fritz Bauer defined software engineering 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”.
Stephen Schach defined the same as "A discipline whose aim is the production of quality software
software that is delivered on time, within budget, and that satisfies its requirements”.
Program Vs Software
Software is more than programs. It consists of programs, documentation of any facet of the program
and the procedures used to setup and operate the software system. The components of the software
system are shown below.
Program is a combination of source code and object code. Documentation consists of different
types of manuals are shown below.
Operating procedures consist of instructions to setup and use the software system and instructions
on how to react to system failure. List of operating procedure manuals/documents is given below.
Software process
The software process is the way in which we produce software. This differs from organization to
organization. Many organizations are looking at software process improvement as a way to improve
the quality, productivity and maintenance efforts. But it is difficult to improve software process
because of
• Not enough time
• Lack of knowledge
• Wrong motivations
• Insufficient commitment
Not enough time - Unrealistic schedules leave insufficient time to do the essential project work.
Customers and senior managers are demanding more software, of higher quality in minimum
possible time. So there is always a shortage of time. One consequence is that software organizations
may deliver release 1.0 on time, but then they have to ship release 1.01 almost immediately
thereafter to fix the recently discovered bugs.
Lack of knowledge - Most of the developers are unaware of best known ways of software
development. They may know many languages but do not spent time to improve their knowledge
about industry best practices.
Wrong motivations – Software developers should be motivated by the prospect of meeting their
commitments, improving customer satisfaction, and delivering excellent products that meet
customer expectations. But most organizations launch process improvement initiatives for the
wrong reasons. May be a contractor demanded that the development organization should achieve
CMM level X by date Y. Or perhaps a senior manager learned just enough about the CMM and
directed his organization to climb on the CMM bandwagon.
Insufficient commitment - Many times, process improvement fails due to lack of commitment.
Management sets no expectations from the development community around process improvement,
they devote insufficient resources, write no improvement plan, develop no roadmap, and pilot no
new processes.
Software Characteristics
Software is a logical entity rather than a physical system. So characteristics of software is different
from hardware. Some of the important characteristics are:
• Software does not wear out
• Software is not manufactured
• Reusability of Components
• Software is flexible
Software does not wear out: There is a well-known “bath tub curve” in reliability studies for
hardware products. The curve is given in Fig. 1.5. The shape of the curve is like “bath tub”; and is
known as bath tub curve.
For eg, in a simple database application, one cycle might implement the graphical user interface:
another file manipulation; another queries; and another updates. All four cycles must complete
before there is working product available. GUI allow users to interact with the system; file
manipulation allows data to be saved and retrieved; queries allow users to get data out of the
system: and updates allow users to put data into the system. In contrast, an iterative enhancement
model would start by developing a very simplistic, but usable database.
This model is useful for projects using new technology that is not well understood. This is also used
for complex projects where all functionality must be delivered at one time, but the requirements are
unstable or not well understood at the beginning.
Prototyping Model
In this model, a working prototype is developed first instead of developing actual software. It is
developed as per current available requirements in minimum time. It has limited functional
capabilities, low reliability and quality. Developers use this prototype to refine requirements and
prepare final SRS. Because the working prototype has been evaluated by the customer, it is
reasonable to expect that SRS will be correct. Moreover, the experience gathered helps in
developing the actual system. The development of a prototype might involve extra cost, but overall
cost might turnout to be lower than that of an equivalent system developed using the waterfall
model.
The prototype may be a usable program but is not suitable as the final software product. The code
for the prototype is thrown away after determining customer's real needs and actual system is
developed using waterfall approach. Thus it is used as an input to waterfall model and produce
maintainable and good quality software.
Spiral Model
Traditional process models do not deal with uncertainty which is inherent to software projects.
Important software projects have failed because project risks were neglected & nobody was
prepared when something unforeseen happened. Barry Boehm recognized this and tried to
incorporate the “project risk” factor into a life cycle model. The result is the spiral model, which
was presented in 1986.
The radial dimension of the model represents the cumulative costs. Each path around the spiral is
indicative of increased costs. The angular dimension represents the progress made in completing
each cycle. Each loop of the spiral from X-axis clockwise through 360° represents one phase. One
phase is split roughly into four sectors of major activities:
Planning: Determination of objectives, alternatives and constraints
Risk analysis: Analyze alternatives and attempts to identify and resolve the risks involved
Development: Product development and testing product
Assessment: Customer evaluation
During the first phase, planning is performed, risks are analyzed, prototypes are built, and
customers evaluate the prototype. During the second phase, a more refined prototype is built,
requirements are documented and validated, and customers are involved in assessing the new
prototype. By the time the third phase begins, risks are known, and a somewhat more traditional
development approach is taken.
An important feature of the spiral model is that each phase is completed with a review by the people
concerned with the project (designers and programmers). This review consists of a review of all the
products developed up to that point and includes the plans for the next cycle.
Merits:
• The main advantage of this model is the wide range of options to accommodate the good
features of other life cycle models.
• It becomes equivalent to another life cycle model in appropriate situations.
• It also incorporates quality goals into software development.
• The risk analysis and validation steps eliminate errors in the early phases of development.
• Changing requirements can be accommodated.
• Allows extensive use of prototypes.
• Requirements can be captured more accurately.
• Users see the system early.
• Development can be divided into smaller parts and the risky parts can be developed earlier
which helps in better risk management.
Demerits:
The spiral model has some difficulties that need to be resolved before it can be a universally applied
life cycle model. These difficulties include,
• Lack of explicit process guidance in determining objectives, constraints, alternatives;
• Requires highly specific expertise in risk analysis.
• provides more flexibility than required for many applications.
• Not suitable for small or low risk projects and could be expensive for small projects.
SELECTION OF A LIFE CYCLE MODEL
The selection of a suitable model is based on the following characteristics/categories:
• Requirements
• Development team
• Users
• Project type and associated risk.
Characteristics of Requirements
Requirements are very important for the selection of an appropriate model. There are number of
situations and problems during requirements capturing and analysis. The details are given in Table
2.1.
Table 2.1
Status of Development Team
The status of the development team in terms of availability, effectiveness, knowledge, intelligence,
team work etc., is very important for the success of the project. If we know the above mentioned
parameters and characteristics of the team, then we may choose an appropriate life cycle model for
the project. Some of the details are given in Table 2.2.
Table 2.2
Involvement of Users
Involvement of users increases the understandability of the project. Hence user participation, if
available, plays a very significant role in the selection of an appropriate life cycle model. Some
issues are discussed in Table 2.3.
Table 2.3