Software
Development
Process
(12 Marks)
Program: Computer Engineering
Course Name: Software Engineering
Course Code:22413
Course Outcome:Select suitable software Process model
for software Development.
What we will learn today
1. Software
2. Engineering
3. Software Engineering
4. Characteristics of Software
5. Types of Software
6. Software engineering as layered technology approach
7. Software Process Framework activities
What is Software?
▪ The product that software professionals build and then support over the long
term.
▪ Software encompasses:
▪ (1) instructions (computer programs) that when executed provide desired
features, function, and performance;
▪ (2) data structures that enable the programs to adequately store and
manipulate information and
▪ (3) documentation that describes the operation and use of the programs.
What is Engineering ?
▪ Engineering on the other hand, is all about developing products, using well-
defined, scientific principles and methods .
Software Engineering Definition
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 an efficient and reliable software product.
Characteristics of Software
Software has characteristics that are considerably different than those of
hardware:
1) Software is developed or engineered:
• It is not manufactured in the Classical Sense.
• Although some similarities exist between software development and hardware
manufacture, the two activities are fundamentally different.
• In both the activities, high quality is achieved through good design, but the
manufacturing phase for hardware can introduce quality problems that are nonexistent
or easily corrected for software.
• Both the activities are dependent on people, but the relationship between people is
totally varying.
Characteristics of Software
2)Software doesn’t “Wear Out” .
• As time passes, however, the failure rate rises again as hardware components
suffer from the cumulative effects of dust, vibration, abuse, temperature
extremes, and many other environmental maladies.
• So stated simply, the hardware begins to wear out. Software is not susceptible
to the environmental maladies that cause hardware to wear out.
Characteristics of Software
2)Software doesn’t “Wear Out” .
• The following figure shows the relationship between failure rate and time.
Consider the failure rate as a function of time for hardware.
• The relationship is called the bathtub curve, indicates that hardware exhibits
relatively high failure rates early in its life, defects are corrected, and the failure
rate drops to a steady-state level for some period of time.
Characteristics of Software
3) Although the industry is moving toward component-based construction, most software
continues to be custom built.
• A software component should be designed and implemented so that it can be reused in
many different programs.
• Modern reusable components encapsulate both data and the processing that is applied
to the data, enabling the software engineer to create new applications from reusable
parts.
Types of Software
Types of Software
1. System software: such as compilers, editors, file management utilities.
2. Application software: stand-alone programs for specific needs.
3. Engineering/scientific software: Characterized by “number crunching "algorithms. such as
automotive stress analysis, molecular biology, orbital dynamics etc .
4. Embedded software resides within a product or system. (key pad control of a microwave
oven, digital function of dashboard display in a car) software application.
Types of Software
5. Product-line software focus on a limited marketplace to address mass consumer market.
(word processing, graphics, database management)
6. WebApps (Web applications) network centric software. As web 2.0 emerges, more
sophisticated computing environments is supported integrated with remote database and
business applications.
•7. AI software uses non-numerical algorithm to solve complex problem. Robotics, expert
system, pattern recognition game playing .
Software Engineering as layered technology approach
• Any engineering approach must rest on organizational commitment to quality which fosters
a continuous process improvement culture. The bedrock that supports software
engineering is a quality focus.
Software Engineering as layered technology approach
• The foundation for software engineering is the process layer.
• Software Engineering process is the glue that holds the technology layers together and
enables rational and timely development of computer software.
• Process defines a framework that must be established for effective delivery of software
engineering technology.
• The software process forms the basis for management control of software projects and
establishes the background in which technical methods are applied, works products
(models, documents, data, reports, forms etc.) are produced, milestones are established,
quality is ensured, and change is properly managed.
Process Framework Activities
Software Engineering as layered technology approach
• Method provides technical how-to’s for building software. It encompasses
many tasks including communication, requirement analysis, design
modeling, program construction, testing and support.
• Tools provide automated or semi-automated support for the process and
methods. When tools are integrated so that information created by one tool
can be used by another tool.
Process Framework Activities
Process Framework Activities are:
1. Communication:
Communication framework activity involves heavy communication and collaboration with the
customer, encompasses requirements gathering, data gathering and other related activities.
2. Planning:
Planning activity establishes a plan for software engineering work that follows.
Planning describes the technical tasks to be conducted, the resources that will be required,
schedule, and the risks that are likely in the work products to be produced.
Process Framework Activities
Process Framework Activities are:
[Link]:
Modelling activity encompasses the creation of models that allow the developer and the
customer to better understand software requirements specifications and the design that will
achieve those requirements.
There are two types of modelling i.e. analysis modelling and design modelling.
4. Construction:
Construction activity combines code generation and the testing.
[Link]:
The software is delivered to the customers who evaluates the delivered product and provides
feedback based on the evaluation.
Software Engineering umbrella activities
1. Software project tracking and control
Allows the software team to assess progress against the project plan and take any necessary
action to maintain the schedule.
2. Risk management
Assesses risks that may affect the outcome of the project or the quality of the product.
[Link] Quality Assurance
Defines and conducts the activities required to ensure software quality.
Software Engineering umbrella activities
[Link] Technical reviews
Assesses software engineering work products in an effort to uncover and remove errors
before they are propagated to the next activity.
[Link]
Defines and collects process, project, and product measures that assist the team in delivering
software that meets stakeholders’ needs; can be used in conjunction with all other
framework and umbrella activities.
Software Engineering umbrella activities
6. Reusability management
Defines criteria for work product reuse (including software components) and establishes
mechanisms to achieve reusable components.
[Link] Configuration Management
Manages the effects of change throughout the software process.
8. Work product preparation and production
Encompasses the activities required to create work products such as models, documents,
logs, forms, and lists.
Waterfall Model
• The waterfall model, sometimes called the classic life cycle
• It suggests a systematic, sequential approach to software development that
begins with customer specification of requirements and progresses through
planning, modeling, construction, and deployment, culminating in ongoing
support of the completed software.
Fig: Waterfall Model
Waterfall Model
Situation in which waterfall model is applicable:
• There are times when the requirements for a problem are well understood
• when work flows from communication through deployment in a reasonably
linear fashion.
• This situation is sometimes encountered when well-defined adaptations or
enhancements to an existing system must be made.
Waterfall Model
Framework Activities involved are:
[Link]
[Link]
[Link]
[Link]
[Link]
Advantages of Waterfall Model
• It is the simplest software process model.
• Easy to understand
• Phases are completed one at a time.
• Works well for smaller projects
Disadvantages of Waterfall Model
• Real projects rarely follow the sequential flow that the model proposes.
Changes can cause confusion as the project team proceeds.
• It is often difficult for the customer to state all requirements explicitly.
• The customer must have patience. A working version of the program(s) will not
be available until late in the project time span..
Disadvantages of Waterfall Model
• Real projects rarely follow the sequential flow that the model proposes.
Changes can cause confusion as the project team proceeds.
• It is often difficult for the customer to state all requirements explicitly.
• The customer must have patience. A working version of the program(s) will not
be available until late in the project time span..
Incremental Model
Incremental Model
• The incremental model combines elements of linear and parallel process flows
.Referring to Figure the incremental model applies linear sequences in a staggered
fashion as calendar time progresses.
• Each linear sequence produces deliverable “increments” of the software.
Incremental Model
Situation in which incremental model is applicable:
• There are many situations in which initial software requirements are reasonably
well defined, but the overall scope of the development effort precludes a purely
linear process.
• In addition, there may be a compelling need to provide a limited set of software
functionality to users quickly and then refine and expand on that functionality in
later software releases.
Incremental Model
• Example:
• Word-processing software developed using the incremental paradigm might
deliver basic file management and editing, in the first increment;
• more sophisticated editing and document production capabilities in the second
increment;
• spelling and grammar checking in the third increment;
• and advanced page layout capability in the fourth increment.
• It should be noted that the process flow for any increment can incorporate the
prototyping paradigm.
Incremental Model
Advantages:
• Useful when staffing is unavailable
• Less costly to change the scope of the project
• Customer can respond to each build.
Disadvantages:
• Cost is higher than waterfall model.
• Needs good planning and design
Prototyping model
Prototyping model
Situation in which prototyping model is applicable:
• Often, a customer defines a set of general objectives for software, but does not
identify detailed requirements for functions and features.
• In other cases, the developer may be unsure of the efficiency of an algorithm, the
adaptability of an operating system, or the form that human-machine interaction
should take.
• In these, and many other situations, a prototyping paradigm may offer the best
approach.
• The prototyping paradigm assists you and other stakeholders to better understand
what is to be built when requirements are fuzzy.
Prototyping model
• The prototyping paradigm begins with communication.
• You meet with other stakeholders to define the overall objectives for the
software,
• identify whatever requirements are known, and outline areas where further
definition is mandatory.
Prototyping model
• Prototyping iteration is planned quickly, and modeling (in the form of a “quick
design”) occurs.
• A quick design focuses on a representation of those aspects of the software that
will be visible to end users (e.g., human interface layout or output display
formats).
• The quick design leads to the construction of a prototype.
Prototyping model
• The prototype is deployed and evaluated by stakeholders, who provide feedback
that is used to further refine requirements.
• Iteration occurs as the prototype is tuned to satisfy the needs of various
stakeholders, while at the same time enabling you to better understand what
needs to be done.
Prototyping model
Advantages:
• Users are actively involved in the development.
• Users get better understanding of the system being developed.
• Errors can be detected much earlier.
• Quick user feedback is available.
Disadvantages:
• Overall software quality or maintainability may not get considered when the
prototype is being developed.
• An inefficient algorithm may be implemented.
• Inappropriate OS or programming language maybe used simply because it is available.
Spiral model
Spiral model
• 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.
Spiral model
• Using the spiral model, software is developed in a series of evolutionary releases.
During early iterations, the release might be a model or prototype.
• During later iterations, increasingly more complete versions of the engineered
system are produced.
Spiral model
• A spiral model is divided into a set of framework activities defined by the software
engineering team. Each of the framework activities represent one segment of the
spiral path illustrated in Figure.
• As this evolutionary process begins, the software team performs activities that are
implied by a circuit around the spiral in a clockwise direction, beginning at the
center.
Spiral model
• Risk is considered as each revolution is made.
• The first circuit around the spiral might result in the development of a product
specification; subsequent passes around the spiral might be used to develop a
prototype and then progressively more sophisticated versions of the software.
Spiral model
• Each pass through the planning region results in adjustments to the project
plan.
• Cost and schedule are adjusted based on feedback derived from the
customer after delivery. In addition, the project manager adjusts the
planned number of iterations required to complete the software.
Spiral model
Advantages:
The spiral model is a realistic approach to the development of large-scale systems and
software.
High amount of risk analysis hence, avoidance of risk is enhanced.
Disadvantages:
It may be difficult to convince customers (particularly in contract situations) that the
evolutionary approach is controllable.
It demands considerable risk assessment expertise and relies on this expertise for success.
If a major risk is not uncovered and managed, problems will undoubtedly occur.
Thank You
Supriya Kadam
Department of Computer Engineering (NBA Accredited)
Vidyalankar Polytechnic
Vidyalankar College Marg, Wadala(E), Mumbai 400 037
E-mail: [Link]@[Link]
46
47