02 SWEng - SWProcess - Lec02
02 SWEng - SWProcess - Lec02
Process
Software Engineering
1 Presented By Dr. Huda Amin
Information Systems
[email protected]
Software Engineering - H.A.
What is the difference between software
2
engineering and computer science?
Computer science focuses on theory and fundamentals;
software engineering is concerned with the practicalities
of developing and delivering useful software.
Some knowledge of computer science is essential for
software engineers in the same way that some knowledge
of physics is essential for electrical engineers.
They include
Sub-activities such as requirements validation, architectural
design, unit testing, etc.
Supporting process activities such as documentation and
software configuration management.
The ordering of these activities.
Products, which are the outcomes of a process activity. For
example, the outcome of the activity of architectural design
may be a model of the software architecture.
Software Engineering - H.A.
Process Descriptions cont’d
6
They include
Roles, which reflect the responsibilities of the people involved in
the process. Examples of roles are project manager, configuration
manager, programmer, etc.
Pre- and post-conditions, which are statements that are true
before and after a process activity has been enacted or a
product produced.
◼ For example, before architectural design begins, a pre-condition may
be that all requirements have been approved by the customer; after
this activity is finished, a post-condition might be that the UML models
describing the architecture have been reviewed.
Software Engineering - H.A.
Software Processes Categories
7
Advantages
Disadvantages
Component
Requirements analysis: Given The
modification: the requirements
requirementsare specification, a
analyzed using
System
search design
is made for with reuse: The
components framework
to implement ofspecification.
the system is
information
Developmentabout the components
and integration: that havethat
Software been
thatdiscovered.
cannot be
designed
Usually, or
therethen an
is no existing
exact matchframework is
and thethe reused.
componentsThe designers
may betake
They are
externally modified
procured istodeveloped,
reflect the that
available
and components.
components and
usedinto account the
onlymodifications
provide components that are reused and organize the
Where
COTS systemssome of
are are the functionality
impossible,
integrated therequired.
to create component analysis
the new system. System
framework to cater for this. Some new software may have to be
activity may beinre-entered
integration, this model, to search
may be for alternative
part of thesolutions.
development
designed if reusable components are not available.
process rather than a separate activity.
Advantages
Reduces the amount of software to be developed and so
reducing 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.
Software Engineering - H.A.
26 Coping with Change
Change is inevitable in all large software projects:
• Business changes lead to new and changed system
requirements.
• New technologies open up new possibilities for improving
implementations.
• Changing platforms require application changes.
1. 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. The number of requirements change proposals
made after delivery is therefore likely to be reduced.
2. Incremental delivery:
where system increments are delivered to the customer for comment
and experimentation. This supports both change avoidance and
change tolerance. It avoids the premature commitment to requirements
for the whole system and allows changes to be incorporated into later
increments at relatively low cost.
Incremental development
Develop the system in increments and evaluate each increment
before proceeding to the development of the next increment by
exposing it to customers for comment, without actually delivering
it and deploying it in the customer’s environment
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.
Software Engineering - H.A.
38
1. Customers can use the early increments as prototypes and gain experience
that informs their requirements for later system increments. Unlike
prototypes, these are part of the real system so there is no re-learning
when the complete system is available.
2. Customers do not have to wait until the entire system is delivered before
they can gain value from it. The first increment satisfies their most critical
requirements so they can use the software immediately.
3. As the highest-priority services are delivered first and increments then
integrated, the most important system services receive the most testing.
This means that customers are less likely to encounter software failures in
the most important parts of the system.