Lect2 1
Lect2 1
Feasibility Study
Coding
Integration and
Testing
Maintenance
Relative Effort for Phases
· Phases between
feasibility study and 60
testing 50 Relative Effort
- known as development
40
phases.
30
· Among all life cycle
20
phases
- maintenance phase 10
consumes maximum 0
Maintnce
Design
Req. Sp
Coding
Test
effort.
· Among development
phases,
- testing phase consumes
the maximum effort.
Classical Waterfall Model (CONT.)
· Engineers doing
requirements analysis
and specification:
- are designated as
analysts.
Design
· Design phase transforms
requirements
specification:
- into a form suitable for
implementation in some
programming language.
Design
· In technical terms:
- during design phase,
software architecture is
derived from the SRS
document.
· Two design approaches:
- traditional approach,
- object oriented approach.
Traditional Design Approach
· Object structure
- further refined to obtain the
detailed design.
· OOD has several
advantages:
- lower development effort,
- lower development time,
- better maintainability.
Implementation
· Purpose of
implementation phase
(aka coding and unit
testing phase):
- translate software design
into source code.
Implementation
M1 M2
M3 M4
System Testing
· Corrective maintenance:
- Correct errors which were not discovered
during the product development phases.
· Perfective maintenance:
- Improve implementation of the system
- enhance functionalities of the system.
· Adaptive maintenance:
- Port software to a new environment,
* e.g. to a new computer or to a new operating
system.
Iterative Waterfall
Model
Iterative Waterfall Model
· Classical waterfall model is
idealistic:
- assumes that no defect is
introduced during any
development activity.
- in practice:
* defects do get introduced in
almost every phase of the life
cycle.
Iterative Waterfall Model (CONT.)
Feasibility Study
Req. Analysis
Design
Coding
Testing
Maintenance
Iterative Waterfall Model (CONT.)
· Verification and
validation software development
process model.
· This V shape demonstrates the
relationships between each phase
of the development life cycle and
its associated phase of testing.
V-Model (Verification and Validation)
· Any phase in the development process begins
only if the previous phase is complete and has
a correspondence related testing phase which
is performed against this phase completion.
- Similar to the Waterfall model, the V-Model does not
define the process to go back to the previous
phase to handle changes in requirement.
· The technical aspect of the project cycle is
considered as a V shape starting with the
business needs on the upper left and ending
with the user acceptance testing on the upper
right.
V-Model (Verification and Validation)
Build Prototype
Refine Implement
Requirements
Test
Maintain
Prototyping Model (CONT.)
C
A AB A
B
Necessary Conditions for
Implementing of Evolutionary
Model
· Customer needs are clear and been
explained in deep to the developer team.
· There might be small changes required in
separate parts but not a major change.
· As it requires time, so there must be some
time left for the market constraints.
· Risk is high and continuous targets to
achieve and report to customer repeatedly.
· It is used when working on a technology is
new and requires time to learn.
Advantages of Evolutionary
Model
· Users get a chance to experiment with
a partially developed system:
- much before the full working version is
released,
· Helps finding exact user
requirements:
- much before fully working system is
developed.
· Core modules get tested thoroughly:
- reduces chances of errors in final
product.
Disadvantages of
Evolutionary Model
· Often, difficult to subdivide
problems into functional
units:
- which can be incrementally
implemented and delivered.
- evolutionary model is useful
for very large problems,
* where it is easier to find
modules for incremental
implementation.
Evolutionary Model with
Iteration
· Many organizations use a
combination of iterative
and incremental
development:
- a new release may include
new functionality
- existing functionality from
the current release may also
have been modified.
Evolutionary Model with
iteration
· Several advantages:
- Training can start on an earlier
release
* customer feedback taken into
account
- Markets can be created:
* for functionality that has never been
offered.
- Frequent releases allow
developers to fix unanticipated
problems quickly.
RAPID APPLICATION
DEVELOPMENT (RAD)
RAPID APPLICATION
DEVELOPMENT (RAD)
Customer
Evaluation of Develop Next
Prototype Level of Product
Spiral Model (CONT.)
Objective Setting (First Quadrant)
· Amplify learning-
- extensive code review and cross-team meetings.
· Decide as late as possible-
- when you develop an application and discover that it is entirely
unsuitable for the market.
- This approach foresees this danger and allows improvement by
deferring irreversible judgments until all experiments are completed.
· Deliver as fast as possible
- Previously, long-term planning was considered critical to
corporate success
- Rapidly developing products with limited functionality
and launching them to market to measure reaction.
Lean Principle
· Empower the team
- LSD is more concerned with empowering team members
than with dominating them.
- Establishing a collaborative environment maintains a
great balance when faced with tight deadlines and an
enormous workload.
· Build in integrity
- It is all about minimizing waste while maintaining a focus on quality.
- Developers frequently use test-driven programming to validate their
code before writing it.
· Optimize the whole
- Lean's approach enables managers to break down a
problem into its constituent elements to optimize the
team's workflow, foster team togetherness, and instill a
sense of shared responsibility, all of which result in
improved team performance.
Kanban
· Kanban (signboard or billboard) is a lean
method to manage and improve work across
human systems.
Kanban
· This approach aims to manage work by balancing
demands with available capacity, and by
improving the handling of system-
level bottlenecks.
· Work items are visualized to give participants a
view of progress and process, from start to finish
—usually via a kanban board.
· Work is pulled as capacity permits, rather than
work being pushed into the process when
requested.
Scaling agile methods
· Agile methods have proved to be
successful for small and medium sized
projects that can be developed by a small
co-located team.
· It is sometimes argued that the success of
these methods comes because of
improved communications which is
possible when everyone is working
together.
· Scaling up agile methods involves
changing these to cope with larger, longer
projects where there are multiple
Large systems development
· Large systems are usually collections of separate,
communicating systems, where separate teams
develop each system. Frequently, these teams are
working in different places, sometimes in different
time zones.
· Large systems are ‘brownfield systems’, that is they
include and interact with a number of existing
systems. Many of the system requirements are
concerned with this interaction and so don’t really
lend themselves to flexibility and incremental
development.
· Where several systems are integrated to create a
system, a significant fraction of the development is
concerned with system configuration rather than
Large system development
· Large systems and their development processes
are often constrained by external rules and
regulations limiting the way that they can be
developed.
· Large systems have a long procurement and
development time. It is difficult to maintain
coherent teams who know about the system over
that period as, inevitably, people move on to
other jobs and projects.
· Large systems usually have a diverse set of
stakeholders. It is practically impossible to
involve all of these different stakeholders in the
development process.
Scaling out and scaling up
· ‘Scaling up’ is concerned with using agile
methods for developing large software
systems that cannot be developed by a
small team.
· ‘Scaling out’ is concerned with how agile
methods can be introduced across a large
organization with many years of software
development experience.
· When scaling agile methods it is essential
to maintain agile fundamentals
- Flexible planning, frequent system releases,
continuous integration, test-driven
Scaling up to large systems
· For large systems development, it is not possible to
focus only on the code of the system. You need to do
more up-front design and system documentation
· Cross-team communication mechanisms have to be
designed and used. This should involve regular phone
and video conferences between team members and
frequent, short electronic meetings where teams
update each other on progress.
· Continuous integration, where the whole system is
built every time any developer checks in a change, is
practically impossible. However, it is essential to
maintain frequent system builds and regular releases
of the system.
Scaling out to large
companies
· Project managers who do not have experience of agile
methods may be reluctant to accept the risk of a new
approach.
· Large organizations often have quality procedures and
standards that all projects are expected to follow and,
because of their bureaucratic nature, these are likely to
be incompatible with agile methods.
· Agile methods seem to work best when team members
have a relatively high skill level. However, within large
organizations, there are likely to be a wide range of
skills and abilities.
· There may be cultural resistance to agile methods,
especially in those organizations that have a long
history of using conventional systems engineering
processes.