Se Unit2
Se Unit2
Agile Development: What is Agility, Agility and the cost of change, What
is an Agile Process, Agile Process Extreme programming, SCRUM,
Dynamic Systems Development Method, Agile Unified Process.
•An agile process reduces the cost of change because software is released in
increments and change can be better controlled within an increment
• Even within the agile school itself, there are many proposed process
models each with a subtly different approach to the agility problem.
• Within each model there is a set of “ideas” (agilists are loath to call
them “work tasks”) that represent a significant departure from
traditional software engineering.
• And yet, many agile concepts are simply adaptations of good software
engineering concepts.
• Bottom line: there is much that can be gained by considering the best
of both schools and virtually nothing to be gained by denigrating either
approach.
3.Human Factors
• Competence - encompasses innate 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.
(1) the agile team organizes itself for the work to be done,
(2) the team organizes the process to best accommodate its local environment,
(3) the team organizes the work schedule to best achieve delivery of the software
increment
Extreme Programming (XP)
The most widely used approach to agile software development is
Extreme Programming, the seminal work on the subject has been written
by Kent Beck.
• XP values
• The XP Process
• Industrial XP
• The XP Debate
XP values
Beck defines a set of five values that establish a foundation for all work
performed as part of XP, Each of these values is used as a driver for
specific XP activities, actions, and tasks.
1. communication,
2. Simplicity-Refactoring allows a software engineer to improve the
internal structure of a design (or source code) without changing its
external functionality or behavior. In essence, refactoring can be used to
improve the efficiency, readability, or performance of a design or the
code that implements a design
3. feedback,
4. courage, and
5. respect.
The XP Process
• XP uses an object-oriented approach as its preferred development
paradigm,defines four (4) framework activities
1. Planning
2. Design
3. Coding
4. Testing
simple design spike solutions
CRC cards prototypes
user stories
values
acceptance test criteria
iteration plan
n
desig
ing
plann g
codin
refactoring
pair programming
test
Release
unit test
software increment continuous integration
project velocity computed
acceptance testing
Industrial XP
• IXP incorporates six new practices that are designed to help ensure
that an XP project works successfully for significant projects within a
large organization
1. Readiness assessment
2. Project community.
3. Project chartering
4. Test-driven management
5. Retrospectives
6. Continuous learning
The XP Debate
• Stephens and Rosenberg argue that many XP practices are worthwhile,
but others have been overhyped, and a few are problematic.
– Requirements volatility.
– Conflicting customer needs.
– Requirements are expressed informally
– Lack of formal design
Scrum
• Scrum is an agile software development method that was conceived by
Jeff Sutherland and his development team in the early 1990s.
• Scrum principles are consistent with the agile manifesto and are used
to guide development activities within a process that incorporates the
following framework activities: requirements, analysis, design,
evolution, and delivery.
• Scrum incorporates a set of process patterns that emphasize project
priorities, compartmentalized work units, communication, and
frequent customer feedback.
• A team leader, called a Scrum master, leads the meeting and assesses
the responses from each person. The Scrum meeting helps the team to
uncover potential problems as early as possible. Also, these daily
meetings lead to “knowledge socialization” and thereby promote a self-
organizing team structure
The Dynamic Systems Development Method
• The consortium has defined an agile process model, called the DSDM life
cycle that defines three different iterative cycles, preceded by two
additional life cycle activities.
• Feasibility study —establishes the basic business requirements and constraint
• Design and build iteration —revisits prototypes built during functional model
iteration to ensure that each has been engineered in a manner that will enable it to
provide operational business value for end users.
• Inception
• Elicitation
• Elaboration
• Negotiation
• Specification
• Validation
• Requirements Management
Inception (Beginning)
•Most projects begin when a business need is identified or a potential
new market or service is discovered.
3. 3. However, usage scenarios may be all that are required for smaller
products.
Validation
1. 1. The work products produced as a consequence of
requirements engineering are assessed for quality during a
validation step.
• Project Manager
• Team Members
• Team Leads
• Project Resource Manager
• Senior Managers
• Executives or Sponsors
2. Recognizing viewpoints-“Put three stakeholders in a room and ask
them what kind of system they want. You’re likely to get four or more
different opinions.
•End users may want features that are familiar to them and that are
easy to learn and use.
1. Normal requirements
2. Expected requirements
3. Exciting requirements
3 .Usage Scenarios -developers and users can create a set of
scenarios that identify a thread of usage for the system to be
constructed.
•It is important to note that an actor and an end user are not
necessarily the same thing. A typical user may play a number of
different roles when using a system,
• Will the actor have to inform the system about changes in the
external environment?
2. Map out a strategy. Decide what you’d like to achieve; what the
other party wants to achieve, and how you’ll go about making
both happen.
Firmness: A program should not have any bugs that inhibit its
function.
Commodity: A program should be suitable for the purposes for which
it
was intended.
Hiding—controlled interfaces
7
Functional independence—single-minded function and low coupling
7
1.A data abstraction is a named collection of data that describes a data
object.
8
A procedural abstraction refers to a sequence of instructions that
have a specific and limited function.
details of
enter
algorithm
9
2.Architecture
“The overall structure of the software and the ways in which that
structure provides conceptual integrity for a system.”
1
5.Modularity
13
Cost
of
Total software cost
Number of modules
6.Information Hiding
19
8.Refinement
• Refinement is actually a process of elaboration.
walk to door;
reach for
knob;
open door; repeat until door opens
17
9.Aspects
Consider two requirements, A and B. Requirement A crosscuts
requirement B “if a software decomposition [refinement] has
been chosen in which B cannot be satisfied without taking A
into account.
20
10.Refactoring
Fowler [FOW99] defines refactoring in the following manner:
"Refactoring is the process of changing a software system in such
a way that it does not alter the external behavior of the code
[design] yet improves its internal structure.”
22
11.OO Design Concepts
23
12.Design Classes
Five different types of design classes, each representing a different layer
of the design architecture.
• User interface classes define all abstractions that are necessary for
humancomputer interaction (HCI).
26
1.Data Design Element
• Data design (sometimes referred to as data architecting) creates a model of data
and/or information that is represented at a high level of abstraction (the
customer/user’s view of data).
• At the program component level, the design of data structures and the associated
algorithms required to manipulate them is essential to the creation of high-quality
applications.
• At the application level, the translation of a data model (derived as part of requirements
engineering) into a database is pivotal to achieving the business objectives of a system.
• At the business level, the collection of information stored in disparate databases and
reorganized into a “data warehouse” enables data mining or knowledge discovery that
can have an impact on the success of the business itself.
2.Architectural Elements
The Architectural design elements give us an overall view of the
software,architectural model is derived from three sources:
27
3.Interface Design Elements
• The interface design elements for software depict information flows
into and out of the system and how it is communicated among the
components defined as part of the architecture. There are three
important elements of interface design: