Module 2 - Software Process
Module 2 - Software Process
Module 2 - Software Process
SOFTWARE ENGINEERING
(T-CPET423)
Prayer:
Thank you God for all the things you've made our world to be.
For every single living plant, insect, bird and tree.
Thank you God for all the people you have placed around us.
For every single parent, friend and teacher that we trust.
Thank you Lord for all the gifts you send to us each day.
For every single meal and snack, for cuddles, toys and play.
Thank you God for caring for us, we know you always see,
Our every need, our worries, cares, our laughter, joys and tears.
Thank you Lord that you're our friend, you delight in all we do,
Especially when you hear our prayers, and we give thanks to you.
Amen.
Learning Outcome
Plan-driven processes are processes where all of the process activities are planned in
advance and progress is measured against this plan.
In agile processes, planning is incremental and it is easier to change the process to reflect
changing customer requirements.
In practice, most practical processes include elements of both plan-driven and agile
approaches.
There are no right or wrong software processes.
Incremental development
Incremental development benefits
The cost of accommodating changing customer requirements is reduced.
The amount of analysis and documentation that has to be redone is much less
than is required with the waterfall model.
It is easier to get customer feedback on the development work that has been done.
Customers can comment on demonstrations of the software and see how much
has been implemented.
More rapid delivery and deployment of useful software to the customer is possible.
Customers are able to use and gain value from the software earlier than is
possible with a waterfall process.
Process activities
Real software processes are inter-leaved sequences of technical, collaborative and
managerial activities with the overall goal of specifying, designing, implementing and
testing a software system.
The 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, whereas in incremental development they are inter-leaved.
Software specification
The process of establishing what services are required and the constraints on the system’s
operation and development.
Requirements engineering process
Feasibility study
• Is it technically and financially feasible to build the system?
Requirements elicitation and analysis
• What do the system stakeholders require or expect from the system?
Requirements specification
• Defining the requirements in detail
Requirements validation
• Checking the validity of the requirements
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 conforms to its
specification and meets the requirements of the system customer.
Involves checking and review processes and system testing.
System testing involves executing the system with test cases that are derived from the
specification of the real data to be processed by the system.
Testing is the most commonly used V & V activity.
Stages of testing
Testing stages
Development or component testing
Individual components are tested independently;
Components may be functions or objects or coherent groupings of these entities.
System testing
Testing of the system as a whole. Testing of emergent properties is particularly
important.
Acceptance testing
Testing with customer data to check that the system meets the customer’s needs.
Software evolution
Software is inherently flexible and can change.
As requirements change through changing business circumstances, the software that
supports the business must also evolve and change.
Although there has been a demarcation between development and evolution
(maintenance) this is increasingly irrelevant as fewer and fewer systems are completely
new.
System evolution
Software prototyping
A prototype is an initial version of a system used to demonstrate concepts and try out
design options.
A prototype can be used in:
The requirements engineering process to help with requirements elicitation and
validation;
In design processes to explore options and develop a UI design;
In the testing process to run back-to-back tests.
Benefits of prototyping
Improved system usability.
A closer match to users’ real needs.
Improved design quality.
Improved maintainability.
Reduced development effort.
Prototype development
Prototypes should be discarded after development as they are not a good basis for a
production system:
It may be impossible to tune the system to meet non-functional requirements;
Prototypes are normally undocumented;
The prototype structure is usually degraded through rapid change;
The prototype probably will not meet normal organisational quality standards.
Incremental delivery
Rather than deliver the system as a single delivery, the development and delivery is
broken down into increments with each increment delivering part of the required
functionality.
User requirements are prioritised and the highest priority requirements are included in
early increments.
Once the development of an increment is started, the requirements are frozen though
requirements for later increments can continue to evolve.
Incremental delivery
Incremental delivery advantages
Customer value can be delivered with each increment so system functionality is available
earlier.
Early increments act as a prototype to help elicit requirements for later increments.
Lower risk of overall project failure.
The highest priority system services tend to receive the most testing.
Objective setting
Specific objectives for the phase are identified.
Risk assessment and reduction
Risks are assessed and activities put in place to reduce the key risks.
Development and validation
A development model for the system is chosen which can be any of the generic
models.
Planning
The project is reviewed and the next phase of the spiral is planned.
Spiral model has been very influential in helping people think about iteration in software
processes and introducing the risk-driven approach to development.
In practice, however, the model is rarely used as published for practical software
development.
A modern generic process derived from the work on the UML and associated process.
Brings together aspects of the 3 generic process models discussed previously.
Normally described from 3 perspectives
A dynamic perspective that shows phases over time;
A static perspective that shows process activities.
A proactive perspective that suggests good practice.
Assessment Task