UNIT-1 SE
UNIT-1 SE
Credits : 03
Examination Scheme
Term Test : 15 Marks
Teacher Assessment : 20 Marks
End Sem Exam : 65 Marks
Total Marks : 100 Marks
Prerequisite:
1. Concepts of Object Oriented Programming & Methodology.
2. Knowledge of developing applications with front end & back end connectivity.
By-Prof.Mr. P. R. Patil
• Course Objectives: To provide the knowledge of Standard Software Engineering discipline.
By-Prof.Mr. P. R. Patil
Unit-I
10 Hrs.
By-Prof.Mr. P. R. Patil
General definition of Software Engineering
Software engineering involves a process, a collection
of methods (practice) and an array(collection) of
tools that allow professionals to build high quality
computer software.
By-Prof.Mr. P. R. Patil
THE NATURE OF SOFTWARE
Defining Software
Software is: (1) instructions (computer programs) that when executed provide
desired features, function, and performance; (2) data structures that enable
the programs to effectively manipulate information, and (3) descriptive
information in both hard copy and virtual forms that describes the operation
and use of the programs.
software characteristics
1. Software is developed or engineered; it is not manufactured in the classical sense.
2. Although the industry is moving toward component-based construction, most software
continues to be custom built.
3. Software doesn’t “wear out.” But it does deteriorate!
4. Although the industry is moving toward component-based
construction, most software continues to be custom built.
By-Prof.Mr. P. R. Patil
Figure 1: Failure curve
for hardware
By-Prof.Mr. P. R. Patil
Software Application Domains
• System software
a collection of programs written to service other programs. Some system software (e.g., compilers, editors,
and file management utilities) processes complex, but determinate, information structures. Other systems
applications (e.g., operating system components, drivers, networking software, telecommunications
processors) process largely indeterminate data.
• Application software
stand-alone programs that solve a specific business need. Applications in this area
process business or technical data in a way that facilitates business operations or
management/technical decision making
By-Prof.Mr. P. R. Patil
• Engineering/scientific software
characterized by “number crunching” algorithms. Computer-aided design, system simulation, and other
interactive applications have begun to take on real-time and even system software characteristics.
• Embedded software
software—resides within a product or system and is used to implement and control features and
functions for the end user and for the system itself
• Product-line software
designed to provide a specific capability for use by many different customers. Product-line software can
focus on a limited and esoteric marketplace (e.g., inventory control products)
• Web applications
called “WebApps,” this network-centric software category spans a wide array of applications. In their
simplest form, WebApps can be little more than a set of linked hypertext files that present information
using text and limited graphics
By-Prof.Mr. P. R. Patil
• Artificial intelligence software
- makes use of nonnumerical algorithms to solve complex problems that are not amenable to
computation or straightforward analysis. Applications within this area include robotics, expert systems,
pattern recognition
By-Prof.Mr. P. R. Patil
New Challenges
• Open-world computing
• Netsourcing
• Open source
Legacy software (A poor quality software)
• Some other programs are older, in some cases much older.
• Legacy software systems . . . were developed decades ago and have been continually
modified to meet changes in business requirements and computing platforms. The
production of such systems is causing headaches for large organizations who find them
costly to maintain and risky to evolve.
By-Prof.Mr. P. R. Patil
Legacy Software
• Many legacy systems remain supportive to core business functions and are
‘essential’ to the business. What to do?
• What types of changes are made to legacy systems?
The software must be adapted to meet the needs of new computing environments or technology.
The software must be enhanced to implement new business requirements.
The software must be extended to make it interoperable with other more modern systems or
databases.
The software must be re-architected to make it feasible within a network environment.
By-Prof.Mr. P. R. Patil
THE SOFTWARE PROCESS
A process is a collection of activities, actions, and tasks that are performed when some work product is to be
created.
A generic process framework for software engineering encompasses five activities:
Communication
important to communicate and collaborate with the customer and other stakeholders. The intent is to
understand stakeholders’ objectives for the project and to gather requirements
Planning
planning activity creates a “map” that helps, guide the. The map—called a software project plan—defines
the software engineering work by describing the technical tasks to be conducted
Modeling
creating models to better understand software requirements and the design that will achieve
requirements.
Construction
This activity combines code generation (either manual or automated) and the testing that is required to
uncover errors in the code.
Deployment
The software (as a complete entity or as a partially completed increment) is delivered to the customer who
evaluates the delivered product and provides feedback based on the evaluation
By-Prof.Mr. P. R. Patil
Software engineering process framework activities are complemented by a number of umbrella activities
Software project tracking and control
allows the software team to assess progress against the project plan and take any necessary action to
maintain the schedule.
Risk management
assesses risks that may affect the outcome of the project or the quality of the product.
Technical reviews
assesses software engineering work products in an effort to uncover and remove errors before they are
propagated to the next activity.
Software quality assurance
defines and conducts the activities required to ensure software quality.
Measurement
Measurement—defines and collects process, project, and product measures that assist the team in
delivering software that meets stakeholders’ needs
By-Prof.Mr. P. R. Patil
Software configuration management
manages the effects of change throughout the software process
Reusability management
defines criteria for work product reuse (including software components) and establishes
mechanisms to achieve reusable components.
Work product preparation and production
encompasses the activities required to create work products such as models,
documents, logs, forms, and lists.
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
Process Pattern
• Pattern Name
Initial context-Describes the conditions under which
• Forces the pattern applies.
• Types Problem
• Stage pattern
• Task pattern Solution-Describes how to implement the pattern
• Phase pattern successfully
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
Process Assessment and Improvement
• Process patterns must be coupled with solid software engineering practice
• The process itself can be assessed to ensure that it meets a set of basic process criteria
that is essential for a successful software engineering.
• A number of different approaches to software process assessment
• Standard CMMI Assessment Method for Process Improvement(SCAMPI)- initiating, diagnosing,
establishing, acting, and learning
• CMM-Based Appraisal for Internal Process Improvement (CBA IPI)-
• SPICE (ISO/IEC15504)
• ISO 9001:2000 for Software
By-Prof.Mr. P. R. Patil
SOFTWARE ENGINEERING PRACTICE
The Essence of Practice
• Understand the problem (communication and analysis).
• Plan a solution (modeling and software design).
• Carry out the plan (code generation).
• Examine the result for accuracy (testing and quality assurance).
General Principles
1. The Reason It All Exists
-A software system exists for one reason: to provide value to its users . “Does this add
real value to the system?” If the answer is “no,” don’t do it.
2. KISS (Keep It Simple, Stupid!)
All design should be as simple as possible, but no simpler. This facilitates having a more
easily understood and easily maintained system.
3. Maintain the Vision
A clear vision is essential to the success of a software project
By-Prof.Mr. P. R. Patil
4. What You Produce, Others Will Consume
always specify, design, and implement knowing someone else will have to understand what you are doing
5. Be Open to the Future
system with a long lifetime has more value. systems must be ready to adapt to these and other changes.
Never design yourself into a corner. Always ask “what if,” and prepare for all possible answers by creating
systems that solve the general problem.
6. Plan Ahead for Reuse
Reuse saves time and effort. Achieving a high level of reuse is arguably the hardest goal to accomplish in
developing a software system. Planning ahead for reuse reduces the cost and increases the value of both
the reusable components and the systems into which they are incorporated.
7. Think!
Placing clear, complete thought before action almost always produces better results. When you think about
something, you are more likely to do it right. You also gain knowledge about how to do it right again
By-Prof.Mr. P. R. Patil
Software Myths
Management Myths
i)Myth: We already have a book that's full of standards and procedures for building
software,
Reality: but is it used? Are software practitioners aware of its existence? Is it
complete
ii)Myth: My people have state-of-the-art software development tools,
Reality: Computer-Aided Software Engineering (CASE) tools are more important
than hardware for achieving good quality and productivity, yet the majority of
software developers still do not use them effectively.
By-Prof.Mr. P. R. Patil
iii)Myth: If we get behind schedule, we can add more programmers and catch up
Reality: “Adding people to a late software project makes it later”. However, as new
people are added, people who were working must spend time educating the
newcomers. People can be added but only in a planned and well-coordinated manner.
iv)Myth: If I decide to outsource the software project to a third party, I can just relax
and let that firm build it.
Reality: If an organization does not understand how to manage and control software
projects internally, it will be problematic to build that project.
By-Prof.Mr. P. R. Patil
Customer’s Myths
i)Myth: A general statement of objectives is sufficient to begin writing programs,
we can fill in the details later.
Reality: A poor up-front definition is the major cause of failed software efforts. A
formal and detailed description of the information domain, function, behavior,
performance, interfaces, design constraints, and validation criteria is essential which
is determined only after thorough communication between customer and developer.
ii)Myth: Project requirements continually change, but change can be easily
accommodated because software is flexible.
Reality: It is true that software requirements change, but the impact of change varies
with the time & cost is increases.
By-Prof.Mr. P. R. Patil
Practitioner Myths
(Related To Practitioner or Programmer)
i)Myth: Once we write the program and get it to work, our job is done.
Reality: “ The sooner you begin 'writing code', the longer it'll take you to get done”.
ii)Myth: The only deliverable work product for a successful project is the working
program.
Reality : A working program is only one part of a software configuration that
includes many elements. Documentation provides a foundation for successful
engineering and, more important, guidance for software support.
By-Prof.Mr. P. R. Patil
A GENERIC PROCESS MODEL
By-Prof.Mr. P. R. Patil
Process Patterns A process pattern describes a process-related problem that is encountered during software engineering
work, identifies the environment in which the problem has been encountered, and suggests one or more proven
solutions to the problem.
Ambler has proposed a template for describing a process pattern:
Pattern Name
The pattern is given a meaningful name describing it within the context of the software process (e.g.,
TechnicalReviews).
Forces
The environment in which the pattern is encountered and the issues that make the problem visible and may affect its
solution.
Type-three types:
1. Stage pattern—defines a problem associated with a framework activity for the process .
2. Task pattern—defines a problem associated with a software engineering action or work task and relevant to successful
software engineering practice (e.g., R equirementsGathering is a task pattern).
• Phase pattern—define the sequence of framework activities that occurs within the process.
• Ex: SpiralModel or Prototyping.
By-Prof.Mr. P. R. Patil
PROCESS ASSESSMENT AND IMPROVEMENT
Standard CMMI Assessment Method for Process Improvement (SCAMPI)
- provides a five-step process assessment model that incorporates five phases: initiating, diagnosing,
establishing, acting, and learning. The SCAMPI method uses the SEI CMMI as the basis for assessment.
CMM-Based Appraisal for Internal Process Improvement (CBA IPI)
- provides a diagnostic technique for assessing the relative maturity of a software organization; uses the SEI
CMM as the basis for the assessment.
SPICE (ISO/IEC15504)
- a standard that defines a set of requirements for software process assessment. The intent of the standard is
to assist organizations in developing an objective evaluation of the efficacy of any defined software process.
ISO 9001:2000 for Software
- a generic standard that applies to any organization that wants to improve the overall quality of the products,
systems, or services that it provides
By-Prof.Mr. P. R. Patil
CMMI
Overview
Quality
Frameworks
By-Prof.Mr. P. R. Patil
Outline
• Introduction
• High level overview of CMMI
By-Prof.Mr. P. R. Patil
What is CMMI?
• CMMI (Capability Maturity Model Integration) is a proven industry framework to improve product
quality and development efficiency for both hardware and software
• Sponsored by US Department of Defence in cooperation with Carnegie Mellon
University and the Software Engineering Institute (SEI)
• Many companies have been involved in CMMI definition such as Motorola and
Ericsson
• CMMI has been established as a model to improve business results
• CMMI, staged, uses 5 levels to describe the maturity of the organization, same as predecessor
CMM
• Vastly improved version of the CMM
• Emphasis on business needs, integration and institutionalization
By-Prof.Mr. P. R. Patil
CMMI Models within the Framework
• Models:
• Systems Engineering + Software Engineering (SE/SW)
• Systems Engineering + Software Engineering + Integrated Product and Process Development (IPPD)
• Systems Engineering + Software Engineering + Integrated Product and Process Development + Supplier Sourcing
(SS)
• Software Engineering only
• Representation options:
• Staged
• Continuous
• The CMMI definition of “Systems Engineering” -
“The interdisciplinary approach governing the total technical and managerial effort required to transform a set
of customer needs, expectations and constraints into a product solution and to support that solution throughout
the product’s life.” This includes both hardware and software.
By-Prof.Mr. P. R. Patil
CMMI Staged Representation - 5 Maturity Levels
By-Prof.Mr. P. R. Patil
Maturity Level 2
Managed at the Project Level
• Maturity Level 2 deals with managed processes.
• A managed process is a performed process that is also:
• Planned and executed in accordance with policy
• Employs skilled people
• Adequate resources are available
• Controlled outputs are produced
• Stakeholders are involved
• The process is reviewed and evaluated for adherence to requirements
• Processes are planned, documented, performed, monitored, and controlled at the project
level. Often reactive.
• The managed process comes closer to achieving the specific objectives such as quality, cost,
and schedule.
By-Prof.Mr. P. R. Patil
Maturity Level 3
Defined at the Organization Level
• Maturity Level 3 deals with defined processes.
• A defined process is a managed process that:
• Well defined, understood, deployed and executed across the entire organization.
Proactive.
• Processes, standards, procedures, tools, etc. are defined at the organizational
(Organization X ) level. Project or local tailoring is allowed, however it must be
based on the organization’s set of standard processes and defined per the
organization’s tailoring guidelines.
• Major portions of the organization cannot “opt out.”
By-Prof.Mr. P. R. Patil
Behaviors at the Five Levels
Maturity Level Process Characteristics Behaviors
By-Prof.Mr. P. R. Patil
CMMI Process Areas
Maturity Level Project Managment Engineering Process Management Support
5 Organizational Innovation & Deployment Causal Analysis & Resolution
Optimizing
4 Quantitative Project Mngt Organizational Process Performance
Quantitatively
Managed
3 Integrated Project Mngt Requirements Development Organizational Process Focus Decision Analysis & Resolution
Defined Risk Management Technical Solution Organizational Process Definition
Product Integration Organizational Training
Verification
Validation
2 Project Planning Requirements Mngt Measurement & Analysis
Managed Project Monitoring & Process & Product Quality Assurance
Control Configuration Mngt
Supplier Agreement Mngt
1
Initial
By-Prof.Mr. P. R. Patil
CMMI Terminology & Structure
Maturity Levels (1 - 5)
Specific Generic
Practices
Required Required Practices
Sub practices, typical work products, Sub practices, typical work products,
discipline amplifications, generic discipline amplifications, generic
practice elaborations, goal and practice elaborations, goal and
practice titles, goal and practice notes, practice titles, goal and practice notes,
and references and references
By-Prof.Mr. P. R. Patil
Example
For the Requirements Management Process Area:
An example Goal (required):
“Manage Requirements”
An example Practice to support the Goal (required):
“Maintain bi-directional traceability of requirements”
Examples (suggested, but not required) of typical Work Products might be
Requirements traceability matrix or
Requirements tracking system
By-Prof.Mr. P. R. Patil
Yet another CMMI term:
Institutionalization
• This is the most difficult part of CMMI implementation and the portion where managers play
the biggest role and have the biggest impact
• Building and reinforcement of corporate culture that supports methods, practices and
procedures so they are the ongoing way of business……..
• Must be able to demonstrate institutionalization of all CMMI process areas for all
organizations, technologies, etc.
• Required for all Process Areas
By-Prof.Mr. P. R. Patil
CMMI Resources
• Software Engineering Institute's CMMI website:
http://www.sei.cmu.edu/cmmi/
By-Prof.Mr. P. R. Patil
PRESCRIPTIVE PROCESS MODELS
1. The Waterfall Model
By-Prof.Mr. P. R. Patil
• The waterfall model, sometimes called the classic life cycle, suggests a systematic,
sequential approach to software development that begins with customer specification of
requirements and progresses through planning, modeling, construction, and deployment.
• A variation in the representation of the waterfall model is called the V-model .
• As a software team moves down the left side of the V, basic problem requirements are
refined into progressively more detailed and technical representations of the problem
and its solution.
• oldest paradigm for software engineering.
• serve as a useful process model in situations where requirements are fixed and work is to
proceed to completion in a linear manner.
By-Prof.Mr. P. R. Patil
PRESCRIPTIVE PROCESS MODELS
2. Incremental Process Models
By-Prof.Mr. P. R. Patil
• The incremental model combines elements of linear and parallel process flows.
• When an incremental model is used, the first increment is often a core product. That is, basic
requirements are addressed but many supplementary features (some known, others unknown)
remain undelivered.
• The core product is used by the customer (or undergoes detailed evaluation). As a result of use
and/or evaluation, a plan is developed for the next increment.
• The plan addresses the modification of the core product to better meet the needs of the customer
and the delivery of additional features and functionality.
• This process is repeated following the delivery of each increment, until the complete product is
produced.
• focuses on the delivery of an operational product with each increment.
By-Prof.Mr. P. R. Patil
PRESCRIPTIVE PROCESS MODELS
3. Evolutionary Process Models
I. Prototyping
By-Prof.Mr. P. R. Patil
• The prototyping paradigm begins with communication.
• You meet with other stakeholders to define the overall objectives for the software, identify
whatever requirements are known, and outline areas where further definition is mandatory.
• A prototyping iteration is planned quickly, and modeling (in the form of a “quick design”) occurs.
• A quick design focuses on a representation of those aspects of the software that will be visible to
end users (e.g., human interface layout or output display formats).
• The quick design leads to the construction of a prototype.
• The prototype is deployed and evaluated by stakeholders, who provide feedback that is used to
further refine requirements .
• prototype serves as a mechanism for identifying software requirements. If a working
prototype is to be built, you can make use of existing program fragments or apply tools .
• The prototype can serve as “the first system “
By-Prof.Mr. P. R. Patil
PRESCRIPTIVE PROCESS MODELS
II. The Spiral Model
By-Prof.Mr. P. R. Patil
• Originally proposed by Barry Boehm, the spiral model is an evolutionary software process model that couples
the iterative nature of prototyping with the controlled and systematic aspects of the waterfall model.
• It provides the potential for rapid development of increasingly more complete versions of the software.
• risk-driven process model generator that is used to guide multi-stakeholder concurrent engineering of
software intensive systems.
• It has two main distinguishing features. One is a cyclic approach for incrementally growing a system’s degree
of definition and implementation while decreasing its degree of risk .
• Software is developed in a series of evolutionary releases. During early iterations, the release might be a
model or prototype. During later iterations, increasingly more complete versions of the engineered system
are produced.
• divided into a set of framework activities defined by the software engineering team.
• The spiral model is a realistic approach to the development of large-scale systems and software
By-Prof.Mr. P. R. Patil
PRESCRIPTIVE PROCESS MODELS
4. Concurrent Models
By-Prof.Mr. P. R. Patil
• called concurrent engineering, allows a software team to represent iterative
and concurrent elements of any of the process models.
• All software engineering activities exist concurrently but reside in different
states.
• Concurrent modeling defines a series of events that will trigger transitions
from state to state for each of the software engineering activities, actions, or
tasks .
• Concurrent modeling is applicable to all types of software development and
provides an accurate picture of the current state of a project.
By-Prof.Mr. P. R. Patil
The Unified Process
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
Rational Unified Process
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
[1] http://www-01.ibm.com/software/awdtools/rup/
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Inception Phase
• Overriding goal is obtaining buy-in from all interested parties
• Initial requirements capture
• Cost-benefit analysis
• Initial risk analysis
• Project scope definition
• Defining a candidate architecture
• Development of a disposable prototype
• Initial use case model (10%-20% complete)
• First pass at a domain model
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Elaboration Phase
• Requirements Analysis and Capture
• Use Case Analysis
• Use Cases (80% written and reviewed by end of phase)
• Use Case Model (80% done)
• Scenarios
• Sequence and Collaboration Diagrams
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Construction Phase
• Focus is on implementation of the design
• Cumulative increase in functionality
• Greater depth of implementation (stubs fleshed out)
• Greater stability begins to appear
• Implement all details, not only those of central architectural value
• Analysis continues, but design and coding predominate
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Transition Phase
• The transition phase consists of the transfer of the system to the user community
• Includes manufacturing, shipping, installation, training, technical support, and maintenance
• Development team begins to shrink
• Control is moved to maintenance team
• Alpha, Beta, and final releases
• Software updates
• Integration with existing systems (legacy, existing versions…)
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Requirements Discipline
• Establish and maintain agreement with the customers and other stakeholders on
what the system should do
• Provide system developers with a better understanding of the system requirements
• Define the boundaries of the system
• Provide a basis for planning the technical contents of iterations
• Provide a basis for estimating the cost and time to develop the system
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Supporting Disciplines
• Configuration & Change Management Discipline
• Identify configuration items
• Restrict changes to those items
• Audit changes made to those items
• Define and manage configurations of those items
• Project Management Discipline
• Manage a software-intensive project; manage risk
• Plan, staff, execute, and monitor a project
• Environment Discipline
• Provide the software development organization with the software development environment –
both processes and tools – that will support the development team
• This includes configuring the process for a particular project, as well as developing guidelines in
support of the project
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
AGILE PROCESS
What Is An Agile Process
Agility Principles
• The Agile Alliance defines agility principles for those who want to achieve agility:
• Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
• Welcome changing requirements, even late in development. Agile processes
harness change for the customer’s competitive advantage.
• Deliver working software frequently, from a couple of weeks to a couple of months,
with a preference to the shorter timescale.
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
• Business people and developers must work together daily throughout the project.
• Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
• The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
• Working software is the primary measure of progress.
• Agile processes promote sustainable development. The sponsors, developers, and
users should be able to maintain a constant pace indefinitely.
• Continuous attention to technical excellence and good design enhances agility.
By-Prof.Mr. P. R. Patil
•The best architectures, requirements, and designs emerge from self–
organizing teams.
At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
The Politics of Agile Development
Human Factors
- Agile development focuses on the talents and skills of individuals, molding the process to
specific people and teams
Competence.
- Skill and knowledge of process can and should be taught to all people who serve as agile team
members.
Common focus
- focused on one goal
- the team will also focus on continual adaptations (small and large)
Collaboration.
- team members must collaborate—with one another and all other stakeholders.
By-Prof.Mr. P. R. Patil
Self-organization
(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.
Decision-making ability.
- team is given autonomy—decision-making authority for both technical and project issues.
Fuzzy problem-solving ability
- team must accept the fact that the problem they are solving today may not be the problem that needs to
be solved tomorrow.
Mutual trust and respect
By-Prof.Mr. P. R. Patil
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
see http://en.wikipedia.org/wiki/Agile_software_development
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
EXTREME PROGRAMMING (XP)
XP Values
- communication, simplicity, feedback, courage, and respect. Each of these values is used as a driver for
specific XP activities, actions, and tasks
The XP Process
Planning
-begins with listening—a requirements gathering activity that enables the technical members of the XP team
to understand the business context .
- creation of a set of “stories” (also called user stories) that describe required output, features, and
functionality for software to be built. Each story is written by the customer and is placed on an index card.
- assign a cost—measured in development weeks—to it.
Design
Coding
Testing
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
Industrial XP
-IXP is an organic evolution of XP.
- customer-centric, test-driven spirit.
- IXP differs most from the original XP in its greater inclusion of management, its expanded role for
customers, and its upgraded technical practices.
Readiness assessment
(1) an appropriate development environment exists to support IXP, (2) the team will be populated by the
proper set of stakeholders, (3) the organization has a distinct quality program and supports continuous
improvement, (4) the organizational culture will support the new values of an agile team, and (5) the
broader project community will be populated appropriately.
By-Prof.Mr. P. R. Patil
Project community
- people on the team must be well-trained, adaptable and skilled, and have the proper temperament to
contribute to a self-organizing team
Project chartering
- examines the context of the project to determine how it complements, extends, or replaces existing
systems or processes
Test-driven management
- requires measurable criteria for assessing the state of the project and the progress
Retrospectives
-IXP team conducts a specialized technical review after a software increment is delivered. Called a
retrospective
Continuous learn
- XP team are encouraged (and possibly, incented) to learn new methods and techniques that can lead
to a higher quality product.
The XP Debate
By-Prof.Mr. P. R. Patil
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
12 XP Practices
Source: http://www.xprogramming.com/
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Frequent Releases
• Highly iterative development process – release cycle of up to 3 months – iterations
of up to 3 weeks
• Short cycles during which the four phases take place in parallel
• Functional system delivered at the end of each cycle
• Frequent feedback from the customer
• In each iteration the selected user stories are implemented
• Each user story is split into programming tasks of 1-3 days
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
System Metaphor
• System metaphor provides a broad view of the project’s goal
• Overall theme to which developers and clients can relate
• The system is built around one (or more) system metaphors
• If the metaphor is well chosen, it leads to design approaches, class names, better
communication...
• Chrysler is a manufacturing company; we make cars. Using a manufacturing metaphor to define
the project was an important first step in getting the team (and management) on a level playing
field. The concepts of lines, parts, bins, jobs, and stations are metaphors understood throughout
the company. The team had the benefit of a very rich domain model developed by members of
the team in the project's first iteration. It gave the members of the project an edge in
understanding an extremely complex domain.1
• The computer is like an office.
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Spike Solution
• Need a mutual understanding of architecture
• XP does not do a big design up front
• No architecture phase
• Architectural Spike
• Very simple program to test out solutions for tough technical or design problems – a throwaway
prototype
• May lead to a system metaphor
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Simple Design
• Do the simplest thing that could possibly work
• Create the best (simplest) design you can
• Do not spend time implementing potential future functionality (requirements will change)
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Tests
• Tests play the most important and central role in XP
• Tests are written before the code is developed
• Forces concentration on the interface; accelerates development; safety net for coding and
refactoring
• All tests are automated (test suites, testing framework)
• If user stories are considered the requirements, then tests may be considered as
the specification of the system
• Two kinds of test
• Acceptance tests (functional tests)
• Clients provide test cases for their stories
• Developers transform these into automatic tests
• Unit tests
• Developers write tests for their classes (before implementing the classes)
• All unit tests must run 100% successfully all the time
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Refactoring
• Refactoring is the process of changing a software system in such a way that it does
not alter the external behavior of the code yet improves its internal structure.1
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Continuous Integration
• Daily integration at least
• The whole system is built (integrated) every couple of hours
• A working, tested system is always available
• XP feedback cycle
• Develop unit test
• Code
• Integrate
• Run all units tests (100%)
• Release
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
40 Hour Week
• Overtime is defined as time in the office when you do not want to be there.1
• If there is overtime one week, the next week should not include more overtime
• If more is needed then something is wrong with the schedule
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
On-site Customer
• The customer must always be available
• To resolve ambiguities
• Set priorities
• Provide test cases
• User stories are not detailed, so there are always questions to ask the customer
• Customer is considered part of the team
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Coding Standards
• Coding standards make pair programming and collective code ownership easier
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Stand Up Meeting
• Daily at the beginning of the day, 15min long, standing up
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Backlog
• Keep track of what needs to be done
• Prioritized – value and risk
• May contain user stories
• Requirements
Stand up meeting
Iteration
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
12 XP Practices Revisited
• XP practices are not new
• They are supposed to be used all together to get the full value of the approach
• The practices work together to create synergy
• The full value of XP will not come until all the practices are in place. Many of the
practices can be adopted piecemeal, but their effects will be multiplied when they
are in place together.1
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
XP Process – Overview
Source: http://www.extremeprogramming.org/
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Source: http://www.extremeprogramming.org/
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Source: http://www.extremeprogramming.org/
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Source: http://www.extremeprogramming.org/
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Comparison – Requirements
• Requirements in RUP
• Use cases
• Requirements documents (including non-functional requirements)
• Requirements in XP
• User stories on cards
• On-site customers with strong involvement
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
Suggested Improvements to XP
• eXtreme Requirements (Leite)
• http://www-di.inf.puc-rio.br/~julio/Slct-pub/XR.pdf
• eXtreme Requirements improved (Leite and Leonardi)
• http://www.mm.di.uoa.gr/~rouvas/ssi/caise2002/23480420.pdf
• EasyWinWin (Grünbacher and Hofer)
• http://www.agilealliance.com/show/909
• XP modified (Nawrocki et al.)
• http://www.cs.put.poznan.pl/jnawrocki/publica/re02-essen.doc
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
• XR improved
• Business rule concept
• Interviews, workshops
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
EasyWinWin
• Complements XP with requirements negotiation
• Defines 7 activities that guide stakeholders through a negotiation process
• Review and expand negotiation topics (features, services, interfaces, system properties, cost,
schedule…)
• Brainstorm stakeholder interest
• Converge on win-win conditions
• Capture a glossary of terms
• Prioritize win-win conditions (polling used (a) to determine priorities of win-win conditions, and (b)
to reveal conflicts and different perceptions among stakeholders)
• Reveal issues and constraints (examine the results of the prioritization poll to analyze patterns of
agreement and disagreement)
• Identify issues, options, and agreements
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
XP modified
• Three improvements to XP
• Written requirements documentation
• Several customer representatives
• Requirements engineering phase
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Rational Unified Process Agile Methods Overview Extreme Programming Practices XP Process Conclusion
SEG3101 (Fall 2010). Integrating Requirements Engineering into Software Engineering Processes.
Adaptive Software Development (ASD)
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
In complex environments,
planning is a paradox. According
to CAS theory, outcomes are
unpredictable. Yet wandering
around, endlessly experimenting
on what a product should look
like is not likely to lead to
profitability either. "Planning,"
whether it is applied to overall
product specifications or detail
project management tasks, is
too deterministic a word. It
carries too much historical
baggage. "Speculate" is offered
as a replacement.
By-Prof.Mr. P. R. Patil
CONT…
When we speculate, it's not that we don't define a mission to the
best of our ability. (I use "mission" as a summary term for objectives,
vision, goals, and outline requirements.) It simply admits the obvious
-- in some important dimensions of our mission statements, we are
more than likely wrong. Whether we misread our customer's needs,
or technology changes, or competitors come out with a better
mousetrap, the probability of mistakes is high. So let's be honest,
postulate a general idea of where we are going, and put
mechanisms in place to adapt. In a complex environment, following a
plan produces the product you intended -- just not the product you
need.
By-Prof.Mr. P. R. Patil
2) Collaborate:
Managing in a complex
environment is scary as hell --
it is also a blast. If we can't
predict (plan), then we can't
control in the traditional
management sense. If we
can't control, then a significant
set of current management
practices is no longer
operable, or more specifically,
only operable for those parts
of the development process
that are predictable.
By-Prof.Mr. P. R. Patil
CONT…
Collaboration, in this context, portrays a balance between managing
the doing (the main thrust of traditional management) and creating
and maintaining the collaborative environment needed for
emergence. As projects become increasingly complex, the balance
swings much more toward the latter. At times it seems almost
mystical, but in field after field, from physics to cellular automata to
some of my client's projects, emergence has, well, . . . emerged [4,
5]. We have all experienced emergent results on some special
project, but it somehow seemed nearly accidental, not something to
count on in a crunch. CAS provides some comfort that it is not
accidental.
By-Prof.Mr. P. R. Patil
CONT…
CONT…
CONT…
CONT…
3) Learn:
Collaborative activities build
products. Learning activities
expose those products to a
variety of stakeholders to
ascertain value. Customer
focus groups, technical
reviews, beta testing, and
postmortems are all
practices that expose results
to scrutiny.
By-Prof.Mr. P. R. Patil
CONT…
Learning, according to the dictionary, is gaining mastery through
experience. In an adaptive environment, learning challenges all
stakeholders, including both developers and customers, to
examine their assumptions and use the results of each
development cycle to learn the direction of the next. The cycles
need to be short, so teams can learn from small rather than
large mistakes. They also need to be double-loop, so teams
learn both about product changes and more fundamental
changes in underlying assumptions about how the products are
being developed.
By-Prof.Mr. P. R. Patil
CONT…
CONT…
For many project leaders and project teams, adaptive development
is a terrifying prospect. First, we knock away the foundation pillar of
cause and effect, so we can't say for sure what needs to be done
next. Next we force the team into meeting deliverable goals, but we
admit we don't know exactly what they are. Then when they then get
anxious and concerned about all the "seemingly inefficient" groping
around for solutions (because of the needed diversity and multiple
interactions), we have to say that high anxiety is part of the new
game, and it won't go away. And finally, when a successful product
emerges, to many it seems almost accidental. It is not a place for the
timid.
By-Prof.Mr. P. R. Patil
CONT…
By-Prof.Mr. P. R. Patil
Adaptive Steps
1. Project initialization – determine intent of project
2. Determine the project time-box (estimation duration of the
project)
3. Determine the optimal number of cycles and the time-box for
each
4. Write an objective statement for each cycle
5. Assign primary components to each cycle
6. Develop a project task list
7. Review the success of a cycle
8. Plan the next cycle
By-Prof.Mr. P. R. Patil
Dynamic Systems Development Method (DSDM)
• DSDM is an agile software development approach that “provides a framework for building and maintaining
systems which meet tight time constraints through the use of incremental prototyping in a controlled project
environment”
• Modified version of the Pareto principle—80 percent of an application can be delivered in 20 percent of the
time it would take to deliver the complete (100 percent) application.
• DSDM is an iterative software process in which each iteration follows the 80 percent rule.
• That is, only enough work is required for each increment to facilitate movement to the next increment. The
remaining detail can be completed later when more business requirements are known or changes have been
requested and accommodated.
• The DSDM Consortium (www.dsdm.org) is a worldwide group of member companies
• DSDM life cycle that defines three different iterative cycles, preceded by two additional life cycle activities:
- Feasibility study - Implementation
- Business study
- Functional model iteration
- Design and build iteration
By-Prof.Mr. P. R. Patil
Scrum
• Scrum is an agile software development method that was conceived by Jeff Sutherland and his development
team in the early 1990s.
• In recent years, further development on the Scrum methods has been performed by Schwaber and Beedle
• 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.
• Within each framework activity, work tasks occur within a process pattern called a sprint.
• The work conducted within a sprint (the number of sprints required for each framework activity will vary
depending on product complexity and size) is adapted to the problem at hand and is defined and often
modified in real time by the Scrum team.
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
• Scrum emphasizes the use of a set of software process patterns
• Each of these process patterns defines a set of development actions:
- Backlog—a prioritized list of project requirements or features that provide business value for the customer.
Items can be added to the backlog at any time (this is how changes are introduced). The product manager
assesses the backlog and updates priorities as required.
- Sprints—consist of work units that are required to achieve a requirement defined in the backlog that must be
fit into a predefined time-box (typically 30 days).
- Changes (e.g., backlog work items) are not introduced during the sprint.
- Hence, the sprint allows team members to work in a short-term, but stable environment.
- Scrum meetings—are short (typically 15 minutes) meetings held daily by the Scrum team.
- Three key questions are asked and answered by all team members :
• What did you do since the last team meeting?
• What obstacles are you encountering?
• What do you plan to accomplish by the next team meeting?
- 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.
By-Prof.Mr. P. R. Patil
Crystal
• Alistair Cockburn and Jim Highsmith created the Crystal family of agile methods in order to achieve a
software development approach that puts a premium on “maneuverability” during what Cockburn
characterizes as “a resource limited, cooperative game of invention and communication, with a primary goal
of delivering useful, working software and a secondary goal of setting up for the next game”.
• defined a set of methodologies, each with core elements that are common to all, and roles, process
patterns, work products, and practice that are unique to each.
• The Crystal family is actually a set of example agile processes that have been proven effective for different
types of projects.
• The intent is to allow agile teams to select the member of the crystal family that is most appropriate for
their project and environment.
By-Prof.Mr. P. R. Patil
Feature Driven Development (FDD)
• Feature Driven Development (FDD) was originally conceived by Peter Coad and his colleagues as a practical
process model for object-oriented software engineering.
• Stephen Palmer and John Felsing have extended and improved Coad’s work, describing an adaptive, agile
process that can be applied to moderately sized and larger software projects.
• FDD adopts a philosophy that
(1) emphasizes collaboration among people on an FDD team;
(2) manages problem and project complexity using feature-based decomposition followed by the integration
of software increments, and
(3) communication of technical detail using verbal, graphical, and text-based means.
FDD emphasizes software quality assurance activities by encouraging an incremental development strategy, the
use of design and code inspections, the application of software quality assurance audits, the collection of
metrics, and the use of patterns (for analysis, design, and construction).
• In the context of FDD, a feature “is a client-valued function that can be implemented in two weeks or less”.
• The emphasis on the definition of features provides the following benefits:
By-Prof.Mr. P. R. Patil
Because features are small blocks of deliverable functionality, users can describe them more easily;
understand how they relate to one another more readily; and better review them for ambiguity, error, or
omissions.
Features can be organized into a hierarchical business-related grouping.
Since a feature is the FDD deliverable software increment, the team develops operational features every two
weeks.
Because features are small, their design and code representations are easier to inspect effectively.
Project planning, scheduling, and tracking are driven by the feature hierarchy, rather than an arbitrarily
adopted software engineering task set.
• Coad and his colleagues [Coa99] suggest the following template for defining a feature:
<action> the <result> <by for of to> a(n) <object>
By-Prof.Mr. P. R. Patil
By-Prof.Mr. P. R. Patil
• A feature set groups related features into business-related categories and is defined as:
<action><-ing> a(n) <object>
For example:
1.Making a product sale is a feature set that would encompass the features noted earlier and others.
The FDD approach defines five “collaborating” framework activities.
FDD provides greater emphasis on project management guidelines and techniques than many other agile methods.
As projects grow in size and complexity, ad hoc project management is often inadequate.
It is essential for developers, their managers, and other stakeholders to understand project status—what
accomplishments have been made and problems have been encountered.
If deadline pressure is significant, it is critical to determine if software increments (features) are properly scheduled.
To accomplish this, FDD defines six milestones during the design and implementation of a feature: “design
walkthrough, design, design inspection, code, code inspection, promote to build”
By-Prof.Mr. P. R. Patil
Agile Modeling (AM)
• There are many situations in which software engineers must build large, business critical systems. The scope and
complexity of such systems must be modeled so that
(1) all constituencies can better understand what needs to be accomplished,
(2) the problem can be partitioned effectively among the people who must solve it, and
(3) quality can be assessed as the system is being engineered and built.
Over the past 30 years, a wide variety of software engineering modeling methods and notation have been proposed for
analysis and design (both architectural and component-level).
These methods have merit, but they have proven to be difficult to apply and challenging to sustain (over many projects).
Part of the problem is the “weight” of these modeling methods.
By this I mean the volume of notation required, the degree of formalism suggested, the sheer size of the models for
large projects, and the difficulty in maintaining the model(s) as changes occur.
Yet analysis and design modeling have substantial benefit for large projects—if for no other reason than to make these
projects intellectually manageable.
Is there an agile approach to software engineering modeling that might provide an alternative?
At “The Official Agile Modeling Site,” Scott Ambler describes agile modelling (AM) in the following manner:
By-Prof.Mr. P. R. Patil
“Agile Modeling (AM) is a practice-based methodology for effective
modeling and documentation of software-based systems. Simply put,
Agile Modeling (AM) is a collection of values, principles, and practices
for modeling software that can be applied on a software development
project in an effective and light-weight manner. Agile models are more
effective than traditional models because they are just barely good,
they don’t have to be perfect.”
By-Prof.Mr. P. R. Patil
• Agile modeling adopts all of the values that are consistent with the agile manifesto.
• The agile modeling philosophy recognizes that an agile team must have the courage to make decisions that may cause it to
reject a design and refactor. The team must also have the humility to recognize that technologists do not have all the
answers and that business experts and other stakeholders should be respected and embraced.
• Although AM suggests a wide array of “core” and “supplementary” modeling principles, those that make AM unique are :
1.Model with a purpose.:- A developer who uses AM should have a specific goal (e.g., to communicate information to the
customer or to help better understand some aspect of the software) in mind before creating the model. Once the goal for the
model is identified, the type of notation to be used and level of detail required will be more obvious.
2.Use multiple models. There are many different models and notations that can be used to describe software. Only a small
subset is essential for most projects. AM suggests that to provide needed insight, each model should present a different
aspect of the system and only those models that provide value to their intended audience should be used.
3.Travel light. As software engineering work proceeds, keep only those models that will provide long-term value and jettison
the rest. Every work product that is kept must be maintained as changes occur. This represents work that slows the team
down. Ambler notes that “Every time you decide to keep a model you trade-off agility for the convenience of having that
information available to your team in an abstract manner (hence potentially enhancing communication within your team as
well as with project stakeholders).”
4.Content is more important than representation. Modeling should impart information to its intended audience. A
syntactically perfect model that imparts little useful content is not as valuable as a model with flawed notation that
nevertheless provides valuable content for its audience.
5.Know the models and the tools you use to create them. Understand the strengths and weaknesses of each model and the
tools that are used to create it.
6. Adapt locally. The modeling approach should be adapted to the needs of the agile team.
By-Prof.Mr. P. R. Patil
Kanban Model
• What is Kanban?
-Kanban is a very popular framework for development in the agile software development methodology. It provides a
transparent way of visualizing the tasks and work capacity of a team. It mainly uses physical and digital boards to allow the
team members to visualize the current state of the project they are working on.
-Kanban originated in Toyota in the 1940s. Kanban’s meaning in Japanese is “billboards.” The Kanban board has columns
and story cards. The columns are nothing, but workflow states and cards are nothing but a demonstration of the actual task
a team member is performing.
Kanban is a popular framework used to implement agile and DevOps software development.
Jeff Patton
AgileProductDesign.com
[email protected]
Download this presentation at: www.agileproductdesign.com/downloads/patton_kanban.ppt
In this short talk we’ll cover:
A good limit is a factor of the number of people in a role that can work
on an item in a given process step. Start with number of people * 1.5
4. Place prioritized goals on the left column of the
board
Mark on the story or feature card the date it entered the queue. This
begins our measurement of cycle time.
6. Move features through the process flow as work is
completed
As the story enters the first process step, mark that date on the card.
This is the start date. As it’s finished, mark that date on the card. This
is the finish date.
7. Use the dates on the cards to calculate cycle time
Use average cycle time to set wait times from different points on the
board. Pay attention to flow and bottlenecks: relieving bottlenecks as
quickly as possible.
Display and manage cycle times
Disneyland’s
public display of
cycle-times
Reduce the number of Kanban slots allowed until cycle time remains
unchanged
Reduce the size of development items
•Work in progress is actually the number of items * the average size of items
Identify and act on bottlenecks immediately
•Relieve repeated bottlenecks by changing the number and types of people in
each role and cross training
Kanban Boards
Kanban Boards
Kanban Boards
Kanban Boards
Kanban Boards
Explode large process steps into tasks to improve
visibility
When a feature, user story, or work item is large:
Takes longer than a couple days to complete
Requires that multiple people collaborate on its completion
Decompose that step into cards to track independently
www.agilemanagement.net/Articles/Papers/BorConManagingwithCumulat.html
Use cumulative flow diagrams to visualize work in
progress
www.agilemanagement.net/Articles/Papers/BorConManagingwithCumulat.html
Keep time-boxed product and process inspection
Keep regular time-boxes in your process as a cue for product
inspection:
•Evaluate the quality of the growing product from a functional,
engineering, and user experience perspective