CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• Prescriptive process models are high on discipline and structure , but with less consideration to the “inequalities” among teams members (human factor).
• “Light” or “Lean” development methods have been around for many years.
• Light methods evolved into Agile movement :
“ an effort to define new development methods to overcome the weakness and stiffness of conventional SE methods ”
•
Key change : Agile methods should be responsive to changing business requirements, end-user needs, and technology. But, should also be based on good SE principles, concepts, and methods.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• Agile development places more emphasis on the “ human factor
” and difference among people, the interactions among the team and team self-organization, the interactions with the customer and frequent feedback, and the response to changes throughout the development process.
The values of Agile development: ( Manifesto )
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
“That is, while there is value in the items on the right, we value the items on the left more.”
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
Agility calls for:
• Effective (rapid and adaptive) response to change
• Effective communication and collaboration among all stakeholders at all levels
• Organizing a team so that it is in control of the work performed
• Recognition that planning is uncertain and planning must be flexible
• More customer involvement in the development process
Yielding …
Rapid delivery of working increments of software
See the 12 principles defined by the Agile Alliance, page 73.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
An Agility process:
• Is driven by customer descriptions of what is required of the software (scenarios)
• Recognizes that plans are short-lived
• Develops software iteratively with a heavy emphasis on construction activities
• Delivers multiple ‘working software increments’
• Adapts as changes occur
• Seeks constant customer feedback
Key characteristics:
• Must be adaptable
• Must be incremental
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• May not be applicable to large and complex projects
• May not be suitable to all people
• Resulting products may not be scalable into “enterprise-wide systems”
• Resulting products may not be scalable to meet future business needs
• Others?
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• The “People Factor” is the center of an Agile process.
• The process “molds” to the team needs, rather than the reverse.
• An effective team should have these characteristics:
– Competence
– Common goal
– Collaboration
– Decision-making ability
– Fuzzy problem-solving ability (ambiguity)
– Mutual trust and respect (jelled team)
– Self-organization (work tasks, process, work schedule)
Note that most characteristics are derived from conventional SE processes.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
All Agile process models conform to the Agile Development
Manifesto and Principles.
• Extreme Programming (XP)
• Adaptive Software Development (ASD)
• Dynamic System Development Method (DSDM)
• Scrum Method
• Crystal (family of processes for different types of projects)
• Feature Driven Development
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• The most widely used agile process, originally started in
1980s, and documented by Kent Beck in 1999
• It uses OO approach.
• XP is based on Planning, Design, Coding, and Testing activities
• XP Planning (similar to use-case approach)
– Begins by creating “ user stories ” with customer values
– Agile team assesses each story and assigns a cost
– Stories are grouped to for a deliverable increment
– Agile team prioritizes grouped stories
– A commitment is made on delivery date
– After the first increment, “ project velocity ” is used to help define subsequent delivery dates for other increments
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• XP Design ( there is no true design!
)
– Follows the KIS principle
– It is guidance for implementation
– Encourages the use of CRC cards (see Chapter 8)
– For difficult design problems, suggests the creation of “ spike solution ” - a partial design prototyping
– Encourages “ refactoring ” - an iterative refinement of the
“internal” program design after the code is written
• XP Coding
– Recommends building unit tests for a store before coding commences
– Encourages “ pair programming ” - better problem solving and quality assurance
– Requires continuous code integration (daily)
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• XP Testing
– Unit tests are developed before coding!
– All unit tests are executed daily (smoke/integration testing)
– Unit test evolve to test suits
– “ Acceptance tests ” are defined by the customer (derived from user stories) and executed to assess customer visible functionality
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
simple design
CRC cards spike solut ions prot ot ypes user st ories values accept ance t est crit eria it erat ion plan ref act oring
Release sof t w ar e incr ement pr oj ect v elocity com put ed unit t est cont inuous int egrat ion acceptance test ing pair programming
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• ASD is originally proposed by Jim Highsmith for developing complex software systems
• Its focus is human collaboration and team self-organization
• Life cycle is Speculation , Collaboration , and Learning
• ASD distinguishing features:
– Mission-driven planning
– Component-based focus
– Joint Application Development/Design/Requirements (JAD/JAR)
– Explicit consideration of risks
– Emphasizes collaboration for requirements gathering
– Emphasizes “learning” throughout the process
– Formal technical reviews
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
adapt ive cycle planning uses m ission st at ement pro ject co nst raint s b asic requirem ent s t i m e - b o x e d r e l e a se p l a n
Requirement s gat hering
J A D m i n i- sp e c s
Release sof t w ar e incr ement adj ustm ent s f or subsequent cy cles component s implement ed/ t est ed f o c u s g r o u p s f o r f e e d b a c k f o r m a l t e c h n i c a l r e v i e w s post mort ems
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• Promoted by the DSDM Consortium ( www.dsdm.org
)
• Developed for projects that have tight time constraints
• Utilizes incremental prototyping (similar to RAD)
• The process is called DSDM Life Cycle
• DSDM distinguishing features (principles):
– Active user involvement is imperative
– DSDM teams must be empowered to make decisions
– The focus is on frequent delivery of products
– Fitness for business purpose is the essential criterion for acceptance of deliverables
– Iterative and incremental development is necessary to converge on an accurate business solution
– Requirements are baselined at a high level
– Testing is integrated throughout the life-cycle
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
• Agile process that focuses on “ process patterns ”, small working teams , and well-defined work increments .
• Distinguishing features:
– Development work is partitioned into “ packets ”
– Short-term work (30 days time-box) in stable environment
– Testing and documentation are on-going as the product is constructed
– Work occurs in “ sprints ” and is derived from a “ backlog ” of existing requirements
– Meetings are very short and sometimes conducted without chairs
– “Demos” are delivered to the customer with the time-box allocated
– Frequent customer feedback
– Heavy on communication
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
Crystal is a family of process models that allow “maneuverability” based on problem characteristics, face-to-face communication, and “reflection workshops” to review the work habits of the team.
Feature Driven Development (FDD) emphasizes “features” as a client-valued function that can be implemented in two weeks or less. A features list is created and “plan by feature” is conducted.
Agile Modeling (AM) emphasizes modeling and suggests a set of agile modeling principles to guide the developer during analysis an design tasks.
Please read the chapter for more details.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.
Try to work problems 1, 2, 3, 4, 5, 8, 9, 11, and 12 from
Chapter 4, page 93.
CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.