Part 2
Part 2
Products
Programs Software Products
● Usually small in size ● Large in size
● Author is sole user ● Multiple users
● Single developer ● Team of developers
● Lacks proper user ● Well-designed
interface interface
● Lacks proper ● Well documented &
documentation user-manual prepared
● Ad hoc development. ● Systematic
development
● Customer requirement
● Team attributes
For describing processes, we require who is involved, what is produced, and conditions that
influence the sequence of activities, that is:
● Products, which are the outcomes of a process activity;
● Roles, which reflect the responsibilities of the people involved in the process;
● Pre- and postconditions, which are statements that are true before and after a process activity
has been enacted. For example, precondition: consumer has approved all requirements.
likely to be better.
Plan-driven and agile processes
● 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. It all depends on ????
● Software process model a.k.a Software Development Life Cycle (SDLC) model is a
simplified representation of a software process from a particular perspective, thus it
provides partial information. For example, a process activity model shows the
activities and their sequence but may not show the roles of the people involved in
these activities.
A software process model is an abstract representation of a process.
Software process models
The waterfall model
Plan-driven model. Separate and distinct phases of specification and development.
Incremental development
Specification, development and validation are interleaved. May be plan-driven or
agile.The system is developed as a series of versions (increments), with each
version adding functionality to the previous version.
Principle: You plan and schedule all of the process activities before starting
software development.
There are separate identified phases in the waterfall model:
● Requirements analysis and definition
● System and software design
● Implementation and unit testing
● Integration and system testing
● Operation and maintenance
The following phase should not start until the previous phase has finished. Is
it making sense for hardware and software?
The software process, in practice, is never a simple linear model but
involves feed-back from one phase to another.
The waterfall model is mostly used for large systems engineering projects
where a system is developed at several sites.
● In those circumstances, the plan-driven nature of the waterfall model helps
coordinate the work.
The waterfall model problems
● User is not clear about exact descriptions
● Freezing the requirements usually requires choosing the hardware. It is
likely that the final software will use a hardware technology on the
verge of becoming obsolete.
● “Big bang” approach-the entire software is delivered at the end. This
entails heavy risks, as the user does not know until the very end what
they are getting. Furthermore, if the project runs out of money in the
middle, then there will be no software.
● It encourages “requirements bloating”. Since all requirements must be
specified at the start and only what is specified will be delivered, it
encourages the users and other stakeholders to add even those
features which they think might be needed (which finally may not get
used).
Coping with change
Change is inevitable in all large software projects.
● Business changes lead to new and changed system requirements
Change leads to rework so the costs of change include both rework (e.g. re-
analysing requirements) as well as the costs of implementing new functionality.
How to reduce cost of rework?
Change anticipation, where the software process includes activities that can
anticipate possible changes before significant rework is required.
● For example, a prototype system may be developed to show some key features
changes may be implemented in increments that have not yet been developed. If
this is impossible, then only a single increment (a small part of the system) may
have be altered to incorporate the change.
Software Prototyping
Benefits of prototyping:
● Improved system usability.
● A closer match to users’ real needs.
● Improved design quality.
● Improved maintainability.
● Reduced development effort.
Software Prototyping Development
Software Prototyping Development
increments.
● Lower risk of overall project failure.
● The highest priority system services tend to receive the most testing.
Disadvantages:
● As requirements are not defined in detail until an increment is to be
the final increment is specified. This requires a new form of contract, which
large customers such as government agencies may find difficult to
accommodate.
● Iterative delivery is problematic when the new system is intended to replace
an existing system. Users need all of the functionality of the old system and
are usually unwilling to experiment with an incomplete new system.
Practically Applying Software process models
Practical software processes: General model along with features of other models.
Incremental delivery
● Deploy an increment for use by end-users;
● More realistic evaluation about practical use of software;
● Difficult to implement for replacement systems as increments have less
functionality than the system being replaced.
Incremental development
● Develop the system in increments and evaluate each increment before
proceeding to the development of the next increment;
● Normal approach used in agile methods;
● Evaluation done by user/customer proxy.
Incremental development
Intuition: Develop an initial implementation, getting feedback from users and others, and
evolving the software through several versions until the required system has been
developed
● In plan-driven approach, the system increments are identified in advance.
● In agile approach, the early increments are identified, but later increments depends on
progress and customer priorities.
Incremental development
It uses incremental development, i.e., develop a system incrementally and expose it to
customers for comment, without necessarily delivering it and deploying it in the
customer’s environment
Each increment or version of the system incorporates some of the functionality that is
needed by the customer.
Generally, early increments are the most important or most urgently required
functionality.
It is problematic for complex systems where different teams develop different parts of
the system. They need responsibilities of the different teams working on parts of the
system need to be clearly defined with respect to that architecture.
Each entry in the list is a task that should be performed in one step of the iterative
enhancement process and should be simple enough to be completely understood.
Selecting tasks in this manner will minimize the chances of error and reduce the
redesign work.
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.
Problems
The process is not visible.
● Managers need regular deliverables to measure progress. It is not cost-effective to produce
documents that reflect every version of the system.
System structure tends to degrade as new increments are added.
● Unless time and money is spent on refactoring to improve the software, regular change tends
to corrupt its structure. Incorporating further software changes becomes increasingly difficult
and costly.
Modified Incremental delivery
One common approach for iterative development:
● Perform requirement specifications and the architecture design in a standard
waterfall or prototyping approach, i.e., most of the requirements are specified
upfront.
● Then, deliver the software iteratively. At the start of each delivery iteration,
which requirements will be implemented in this release are decided, and then
the design is enhanced and code developed to implement the requirements.
● The iteration ends with delivery of a working software system.
Advantages:
● Requirements are mostly known: waterfall advantages.
● Rework in development iterations will diminish: iterative approach
advantages.
● It does not have the all-or-nothing risk.
● Each time box is divided into a sequence of stages, like waterfall model.
● Each stage performs some clearly defined task for the iteration.
● Duration of each stage is approximately the same.
● There is a dedicated team for each stage.
Timeboxing Model
Tradeoff to achieve
reduced time:
● Increase resources
and project
management
● Timeboxing requires
dedicated teams for
different stages and
the total size is their
sum.
● Other models use
single team to
perform nearly all
the stages.
So, a project, if it so wishes, may do detailed requirements only for some features during the
elaboration phase, and may do detailing of other requirements while the elaboration is going on.
It provides better flexibility in planning because it is often not possible to specify all requirements at
the start and it is best to start the project with some requirements and work out the details later.
RUP provides a flexible process model, which follows an iterative approach not only at a top level
(through cycles), but also encourages iterative approach during each of the phases in a cycle.
Thanks
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.
∙ For example, in the waterfall model, they are organized in
sequence, whereas in incremental development they are
interleaved.
∙ These activities are carried out depends on the type of
software being developed, the experience and competence of
the developers, and the type of organization developing the
software.
Software specification/ requirements engineering
The process of establishing what services are required and the
constraints on the system’s operation and development.
Mistakes in this stage lead to later problems in the system design
and implementation. Need Rectification:WHY????
Requirements are presented at two levels of detail:
1) End-users and customers need a high-level statement of the requirements
2) System developers need a more detailed system specification.
Requirements engineering process
1) Requirements elicitation and analysis
✔ What do the system stakeholders require or expect from the system?
✔ May include prototype design
2) Requirements specification
✔ Defining and documenting the requirements in detail
3) Requirements validation
✔ Checking the validity, consistency, and completeness of the requirements
✔ Errors in the requirements document are modified
Software specification/ requirements engineering
Implementation
✔ Translate this structure into an executable program;
Component testing
✔ Individual components are tested independently to find component defects;
✔ Components may be functions, objects or coherent groupings of these.
System testing
✔ Testing of the system as a whole to find interface and integration problems.
Testing of emergent properties is particularly important.
Customer testing
✔ Testing with customer data to check that system meets the customer’s needs.
Beta testing involves delivering a system to a number of potential customers before
delievery who agree to use that system. They exposes the product to real use and detects
errors that may not have been anticipated by the product developers. From their feedback,
the software product may be modified and released for further beta testing or general sale.
Testing phases in a plan-driven software process
(V-model)
Software evolution
● As requirements change due to the 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.
Thanks