SOFTWARE ENGINEERING
SOFTWARE PROCESSES
SESSION 2
Objectives
understand the concepts of software processes and software process models;
Understand the 3 software process models and their usage
Understand the fundamental process activities of software requirements
engineering, software development, testing, and evolution;
understand why processes should be organized to cope with changes in the
software requirements and design
Software Process
Defn
is a set of related activities that leads to the production of a software
product.
Can be development from scratch/extend/modify existing systems
Software Process Activities
Software specification
The functionality of the software and constraints on its operation must be defined.
Software design and implementation
The software to meet the specification must be produced.
Software validation
The software must be validated to ensure that it does what the customer wants.
Software evolution
The software must evolve to meet changing customer needs.
Software process models
a software process model is a simplified representation of a software
process.
Each process model represents a process from a particular perspective,
and thus provides only partial information about that process
Waterfall Method
Incremental development
Reuse-oriented software engineering
Waterfall Method
Takes a linear set of process activities of specification, development, validation,
and evolution and
Represents them as separate process phases such as requirements specification,
software design, implementation, testing, and so on.
It’s a plan-driven software model.
Waterfall Model
Requirements analysis and definition
The system’s services, constraints, and goals are established by consultation with
system users. They are then defined in detail and serve as a system specification
System and software design
The systems design process allocates the requirements to either hardware or
software systems by establishing an overall system architecture.
Software design involves identifying and describing the fundamental software
system abstractions and their relationships.
Implementation and unit testing
During this stage, the software design is realized as a set of programs or program
units
Integration and system testing
The individual program units or programs are integrated and tested as a
complete system to ensure that the software requirements have been met. After
testing, the software system is delivered to the customer.
Operation and maintenance
Maintenance involves correcting errors which were not discovered in earlier
stages of the life cycle, improving the implementation of system units and
enhancing the system’s services as new requirements are discovered
Cont
In principle, the result of each phase is one or more documents that are
approved (‘signed off’).
In practice, these stages overlap and feed information to each other
During design, problems with requirements are identified
During coding, design problems are found etc
This necessitates documentation changes
To reduce costs in preparing and approving updated
documents “freezing” is done
Problems are left for later resolution,
ignored, or
programmed around.
Incremental development
Based on the idea of developing an initial implementation, exposing
this to user comment and evolving it through several versions until an
adequate system has been developed
Suitable for most business, e-commerce, and personal
systems.
developing the software incrementally, it is cheaper and
easier to make changes in the software as it is being
developed
Benefits
cost of accommodating changing customer requirements is reduced
amount of analysis and documentation that has to be redone is
much less
It is easier to get customer feedback on the development work that
has been done.
More rapid delivery and deployment of useful software to the
customer is possible, even if all of the functionality has not been
included
Challenges
The process is not visible. Managers need regular
deliverables to measure progress.
System structure tends to degrade as new increments are
added
Reuse-oriented software engineering
Utilizes software reuse
Look for code/module similar to what you need, pick and modify it
i.e Payment plugins, sms plugins etc
Depends on large base of reusable software components
Component analysis
Given the requirements specification, a search is made for components
to implement that specification.
Requirements modification
The requirements are analyzed using information about the components
that have been discovered. They are then modified to reflect the
available components.
System design with reuse
The structure of the system is designed or an existing structure is
reused. The designers take into account the components that are reused
and organize the framework to cater for this
Development and integration
Software that cannot be externally procured is developed, and the
components are integrated to create the new system
Three types of software component
Web services that are developed according to service standards
and which are available for remote invocation.
Collections of objects that are developed as a package to be
integrated with a component framework such as .NET or J2EE.
Stand-alone software systems that are configured for use in a
particular environment.
Advantages
reducing the amount of software to be developed
Reducing the cost and risks.
leads to faster delivery of the software
Disadvantages
requirements compromises are inevitable and this may lead to a system
that does not meet the real needs of users
some control over the system evolution is lost as new versions of the
reusable components are not under the control of the organization using
them
ONLINE HOTEL RESERVATION SYSTEM
To provide a platform to manage on-desk and online bookings
To display organized information of hotel, prices and pictures.
To add multiple hotels/rooms to the system.
To change prices of hotel rooms when needed.
To view of availability of rooms in real time.
To store customer information which can be accessed anytime.
To provide a user-friendly interface for customers for the easy
booking process.
To provide a secure payment gateway for online transaction
Process Activities
PROCESS ACTIVITIES
Four basic process activities of specification, development,
validation, and evolution are organized differently in different
development processes.
In the waterfall model, they are organized in sequence
Incremental development they are interleaved
Software specification/Requirements Engineering
It is the process of understanding and defining what services are
required from the system and identifying the constraints on the
system’s operation and development
Requirements are usually presented at two levels of detail.
End-users and customers need a high-level statement of the
requirements;
system developers need a more detailed system specification.
Activities in Requirements Engineering Process
Feasibility study
An estimate is made of whether the identified user needs may be satisfied using
current software and hardware technologies
Requirements elicitation and analysis
The process of deriving the system requirements through observation of existing
systems, discussions with potential users and procurers, task analysis, and so on.
Requirements specification
Is the activity of translating the information gathered during the analysis activity
into a document that defines a set of requirements
User requirements are abstract statements of the system requirements for the customer and
end-user of the system;
system requirements are a more detailed description of the functionality to be provided
Requirements validation
This activity checks the requirements for realism, consistency, and completeness.
Errors in the requirements document are inevitably discovered.
Software design and implementation.
Software implementation
is the process of converting a system specification into an executable
system.
It always involves processes of software design and programming
A software design
is a description of the structure of the software to be implemented, the
data models and structures used by the system, the interfaces between
system components and, sometimes, the algorithms used
Model of the Design Process
Four Activities
Architectural design,
where you identify the overall structure of the system, the principal components
(sometimes called sub-systems or modules), their relationships, and how they are
distributed
Interface design,
where you define the interfaces between system components
Component design,
where you take each system component and design how it will operate
Database design,
where you design the system data structures and how these are to be represented
in a database
Software validation
verification and validation (V&V) is intended to show that a system
both conforms to its specification and that it meets the expectations of
the system customer.
stages in the testing process
Development testing
The components making up the system are tested by the people
developing the system. Each component is tested independently, without
other system components
System testing
System components are integrated to create a complete system. This
process is concerned with finding errors that result from unanticipated
interactions between components and component interface problems
Acceptance testing /Alpha
This is the final stage in the testing process before the system is
accepted for operational use. The system is tested with data supplied by
the system customer rather than with simulated test data
Alpha versus Beta Testing
Alpha
Custom systems are developed for a single client.
The alpha testing process continues until the system developer and
the client agree that the delivered system is an acceptable
implementation of the requirements
Beta
Involves delivering a system to a number of potential customers
who agree to use that system.
They report problems to the system developers.
This exposes the product to real use and detects errors that may not
have been anticipated by the system builders.
After this feedback, the system is modified and released either for
further beta testing or for general sale.
Software evolution
This is where software is continually changed over its lifetime
in response to changing requirements and customer needs.
Coping with Change
Software changes due to
business procuring the system responds to external pressures
Management priorities change.
As new technologies become available,
new design and implementation possibilities emerge.
Dealing with Change
Change avoidance,
where the software process includes activities that can anticipate possible
changes before significant rework is required i.e prototyping
Change tolerance,
where the process is designed so that changes can be accommodated at
relatively low cost(incremental delivery)
Cont’
System prototyping,
where a version of the system or part of the system is developed
quickly to check the customer’s requirements and the feasibility of some
design decisions.
This supports change avoidance as it allows users to experiment with
the system before delivery and so refine their requirements
Incremental delivery,
where system increments are delivered to the customer for comment and
experimentation.
This supports both change avoidance and change tolerance
Prototype development
A prototype
It is an initial version of a software system that is used to demonstrate
concepts, try out design options, and find out more about the problem
and its possible solutions
Helps put costs under control and system stakeholders experiment with
the system early
In the requirements engineering process, a prototype can help
with the elicitation and validation of system requirements.
In the system design process, a prototype can be used to explore
particular software solutions and to support user interface design.
Process of prototype development
Incremental delivery
is an approach to software development where some of the developed
increments are delivered to the customer and deployed for use in an
operational environment
Customers identify services needed and the priority order
Number of delivery increments defined with each having subset of system
functionality.
As new increments completed, they are integrated to existing increments
Advantages
Customers can use the early increments as prototypes and gain
experience that informs their requirements for later system
increments
Customers do not have to wait until the entire system is delivered
before they can gain value from it
The process maintains the benefits of incremental development
in that it should be relatively easy to incorporate changes into the
system.
As the highest-priority services are delivered first and increments
then integrated, the most important system services receive the
most testing.
Challenges
Iterative development can also be difficult when a replacement
system is being developed.
The essence of iterative processes is that the specification is
developed in conjunction with the software however
procurement procedures differ.
Most systems require a set of basic facilities that are used by
different parts of the system which may be hard to identify at the
beginning.
Boehm’s spiral model
the software process is represented as a spiral, rather than a
sequence of activities with some backtracking from one activity
to another.
Each loop in the spiral represents a phase of the software process.
Thus, the innermost loop might be concerned with system
feasibility, the next loop with requirements definition, the next
loop with system design, and so on.
Boehm’s spiral model
To Be Continued