Specialized Process Models: Muhammad Noman
Specialized Process Models: Muhammad Noman
Specialized Process Models: Muhammad Noman
Specialized Process
Models
Muhammad Noman
1
Specialized Process Models
take on many of the characteristics of
one or more of the traditional models.
these models tend to be applied when a
specialized or narrowly defined software
engineering approach is chosen.
Component-Based Development
The Formal Methods Model
2
Component-Based Development
The component-based development model
incorporates many of the characteristics of the
spiral model. It is evolutionary in nature
demanding an iterative approach to the
creation of software.
However, the component-based development
model constructs applications from
prepackaged software components.
Modeling and construction activities begin with
the identification of candidate components.
3
Component-Based Development
the component-based development model incorporates
the following steps (implemented using an evolutionary
approach):
1. Available component-based products are researched
and evaluated for the application domain in question.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate
the components.
4. Components are integrated into the architecture.
5. Comprehensive testing is conducted to ensure proper
functionality.
. 4
Component-Based Development
The component-based development model leads
to software reuse, and reusability provides
software engineers with a number of measurable
benefits.
Your software engineering team can achieve a
reduction in development cycle time as well as a
reduction in project cost if component reuse
becomes part of your culture.
5
The Formal Methods Model
. 6
The Formal Methods Model
7
If formal methods can demonstrate
software correctness, why is it they
are not widely used?
8
Chapter 3
Agile Development
9
What is “Agility”?
A software requires change when the user’s requirement
is changed. “Agility” is the term in software engineering
that is related to change, that is effective (rapid and
adaptive) response to change.
In order to response to change effectively there must be
effective communication between all the stakeholders.
stakeholders means all those people who are involved in
the development of a software, e.g. analyst, designer,
programmer and etc. In agility drawing the customer onto
the team that is working on the software is very necessary
and for that a team should be organized that includes all
the skilled and professional people so that it is in control
of the work performed.
10
What is “Agility”?
Effective (rapid and adaptive) response to
change
Effective communication among all stakeholders
Drawing the customer onto the team
Organizing a team so that it is in control of the
work performed
Yielding …
Rapid, incremental delivery of software
11
The agile methods
Focus of the software engineer should be on the
code instead of design
Agility should be based on the interactive
approach to software development.
The method of agility is intended to work on the
software efficiently and quickly and deliver the
project as early as possible because delivery of
the software in time helps the team to meet the
changing requirements.
12
An Agile Process
Is driven by customer descriptions of what is
required (scenarios)
Recognizes that plans are short-lived
Develops software iteratively with a heavy
emphasis on construction activities
Delivers multiple ‘software increments’
Adapts as changes occur
13
Agility Principles - I
1. Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software.
2. Welcome changing requirements, even late in development.
Agile processes harness change for the customer's
competitive advantage.
3. Deliver working software frequently, from a couple of weeks to
a couple of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily
throughout the project.
5. Build projects around motivated individuals. Give them the
environment and support they need, and trust them to get the
job done.
6. The most efficient and effective method of conveying
information to and within a development team is face–to–face
conversation.
14
Agility Principles - II
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The
sponsors, developers, and users should be able to maintain a
constant pace indefinitely.
9. Continuous attention to technical excellence and good design
enhances agility.
10. Simplicity – the art of maximizing the amount of work not
done – is essential.
11. The best architectures, requirements, and designs emerge
from self–organizing teams.
12. At regular intervals, the team reflects on how to become more
effective, then tunes and adjusts its behavior accordingly.
15
Human Factors
Agile development focuses on the talents and skills of
individuals, molding the process to specific people and
teams. “the process molds to the needs of the people and
team, not the other way around”
key traits must exist among the people on an agile team
and the team itself:
Competence.
Common focus.
Collaboration.
Decision-making ability.
Fuzzy problem-solving ability.
Mutual trust and respect.
Self-organization. 16
Human Factors
Competence.
In an agile development (as well as software engineering)
context, “competence” includes talent, specific software-
related skills, and overall knowledge of the process that the
team has chosen to apply.
Skill and knowledge of process can and should be taught to
all people who serve as agile team members
17
Human Factors
Common focus.
Although members of the agile team may perform different
tasks and bring different skills to the project, all should be
focused on one goal.
Collaboration.
Software engineering (regardless of process) is about
assessing, analyzing, and using information that is
communicated to the software team; creating information
and building information.
To accomplish these tasks, team members must
collaborate—with one another and all other
stakeholders. 18
Human Factors
Decision-making ability.
Any good software team (including agile teams)
must be allowed the freedom to control its own destiny.
This implies that the team is given autonomy—decision-
making authority for both technical and
project issues
Fuzzy problem-solving ability.
Software managers must recognize that the agile team will
continually have to deal with ambiguity.
Mutual trust and respect.
19
Thank You
20