it specialist program initiative for reality-based advanced learning it spiral...
TRANSCRIPT
IT Specialist Program Initiative for Reality-based Advanced Learning http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/
IT Spiral 先端ソフトウェア工学シリーズ
Agile ProgrammingAgile Programming
Hajimu IidaSoftware Design Laboratory,
Nara Institute of Science and Technology
Mike BarkerNara Institute of Science and Technology
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
2
What is agile programming?What is agile programming?
13 principlesExamples XP (extreme programming): Bec
k Scrum Agile Unified Process: Larman EVO Crystal: Cockburn Adaptive Software Development
(ASD)Feature Driven Development (FD
D)Dynamic Systems Development
Method (DSDM)
XP Prinicples: Rapid feedback Simplicty Incremental changes Embrace change Quality work
XP Practices Pair programming refactoring, unit and accepta
nce tests, collective code ownership, continous integration
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
3
The Agile Manifesto (www.agilealliance.com)The Agile Manifesto (www.agilealliance.com)
We valueIndividuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
4
The Agile PrinciplesThe Agile Principles
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
3. Deliver working software frequently
4. Businesspeople and developers must work together daily throughout the project
5. Build projects around motivated individuals. Given 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
7. Working software is the primary measure of progress
8. Agile processes promote sustainable development
9. The sponsors, developers, and users should be able to maintain a constant pace indefinitely (Not in all lists)
10.Continuous attention to technical excellence and good design enhances agility
11.Simplicity – the art of maximizing the amount of work not done – is essential
12.The best architectures, requirements, and designs emerge from self organizing teams
13.At regular intervals, the team reflects on how to become more effective, then tunes and adjust its behavior accordingly.
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
5
Agile AssumptionsAgile Assumptions1. Visibility: project visibility can be achieved solely through delivery of working code.2. Iteration: a project can always be structured to be short fixed-time iterations3. Customer-interaction: customer teams are available for frequent interaction when
needed by developers.4. Team-communication: developers are co-located so they can have frequent, intensive
communication5. Face-To-Face: face-to-face interaction is the most productive method of
communication with customers and among developers6. Documentation: developing extensive and consistent documentation and software
models is counterproductive.7. Changing requirements: requirements always involved because of changes in
technology, customer needs, and business domains, or acquisition of new customers8. Cost-of-change: the cost of change does not dramatically increase over time9. Team-experience: developers have the experience needed to define and adapt their
processes appropriately.10.Self-evaluation: teams are able and willing to evaluate themselves11.Self-organization: the best architectures, requirements, and designs emerge from self-
organizing teams12.Quality-assurance: the evaluation of software artifacts (products and processes) can
be restricted to frequent informal interviews, reviews, and code testing.13.Continuous-redesign: systems can be continuously redesigned (re-factored) and still
maintain their structural and conceptual integrity14.Application-specific-development: reusability and generality should not be goals of
application-specific software development Turk, France, and Rumpe (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
6
Agile LimitationsAgile Limitations
Personnel limitationsLimited support for distributed development environments
Limited support for subcontractingLimited support for development involving large teams
Product limitationslimited support for building reusable artifactsLimited support for developing safety critical software
Limited support for developing large, complex software Turk, France, and Rumpe (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
7How does it differ from disciplined How does it differ from disciplined development?development?
Disciplined development: Waterfall and spiral
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
8heavyweight and lightweight software heavyweight and lightweight software development methodologiesdevelopment methodologies based on factors such as
1. Planning and documentation2. Well-defined phases in the development process3. Composition of the development team4. Use of well elaborated modeling and coding
techniques to generate software development artifacts
Agile methodologies often characterized as Incremental Cooperative Straightforward Adaptive Meso and Jain (200
6)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
9When should you use agile When should you use agile development?development? Barry Boehm’s five dimensionsComplex Adaptive SystemsAgile Distributed Development
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
10
Complex adaptive systems (CAS)Complex adaptive systems (CAS)
Principle of open systemsPrinciple of interactions and relationshipsPrinciple of transformative feedback loopsPrinciple of emergent behaviorPrinciple of distributed controlPrinciple of shallow structurePrinciple of growth and evolution us
Meso and Jain (2006)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
11
Mapping Agile and CASMapping Agile and CAS
Agile practice CAS principle
Frequent releases Growth and evolution
Frequent feedback Transformative feedback loops
Positive value of change
Emergent order
Loose environment Distributed control
Minimal planning Growth and evolutionEmergent order
Continuous learning and improvement
Growth and evolutionInteractions and relationships
Working software product
Path of least effort
Meso and Jain (2006)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
12Challenges of Agile Distributed Challenges of Agile Distributed
DevelopmentDevelopment
Ramash, Cao, Mohan, and Xu (2006)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
13Practices to achieve distribution and Practices to achieve distribution and
agilityagility1. Continuously adjust the process
Planning iterations to finalize requirements and develop designs Documenting requirements at different levels of formality
2. Facilitate knowledge sharing Maintain product/process repository Focus on well-understood functionality rather than critical new
functionality Short cycle but not time-boxed development
3. Improve communication Synchronized work hours Informal communication but through formal channels Balanced coordination Constant communication
4. Build trust Frequent visits by distributed partners Sponsor visits Build cohesive team culture
5. Trust but verify Distributed QA Supplement informal communication with documentation
Ramash, Cao, Mohan, and Xu (2006)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
14Why should you use agile Why should you use agile
development?development?
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
15Test Driven Development Drives Software Test Driven Development Drives Software
QualityQuality Write unit tests BEFORE you write code Not just unit tests, also functional, system, end-to-end, performance, security, and usability tests
TDD code practices mean more tests passed and fewer defects
Why does it help?Tests provide a common language for users and developers
Tests define a feature or story’s scopeTest-first helps good design Crispin (2006)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
16
Agile Methodology Adoption DecisionsAgile Methodology Adoption Decisions
Critical adoption factorsProject
Duration of the project Acceptance of change Criticality of project
Team Team size Skill level of team
Customer Location of customer Customer involvement
Organization Organizational and reporting structure Process Documentation requirements Layout of the workspace
McAvoy and Sammon (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
17
Practice and projectsPractice and projects
See McAvoy and Sammon (2005). They used a list of critical adoption factors, then had the students assign weights and rankings for two case studies.
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
18
Adoption AssessmentAdoption Assessment Matrix Matrix
Weight Rank Result
Duration of the project
Acceptance of change
Criticality of project
Team size
Skill level of team
Location of customer
Customer involvement
Organizational and reporting structure
Process
Documentation requirements
Layout of workplace
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
19
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
20A Class Project: Putting the Agile principles A Class Project: Putting the Agile principles
and practices in contextand practices in context
Consider the Agile Manifesto, principles and practices.
What are the Disciplined principles and practices?
How do you personally weight these items?How do you think companies weight them?Consider three groups: developers, companies, and users. Why would these principles or practices be important to them? What do they want?
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
21
Why do projects fail?Why do projects fail?
Requirements are not clearly communicatedRequirements do not solve the business problemRequirements change prior to the completion of the project
Software (code) has not been testedSoftware has not been tested as the user will use itSoftware developed so that it is difficult to modifySoftware used for functions for which it was not intended
Projects not staffed with resources requiredSchedule and scope commitments made before understanding requirements or technical risksLindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
22
Extreme Programming (XP)Extreme Programming (XP)
Instead of “what are all of the practices I might ever need on a software project?” ask “what is the simplest set of practices I could possibly need and what do I need to do to limit my needs to those practices?”
XP Values:CommunicationSimplicityFeedbackCourage Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
23
Extreme Programming (XP) PracticesExtreme Programming (XP) Practices
Practices:Whole Team: every contributor to the project is a member,
including the customer Planning Game: simple planning and trackingSmall releases: small, fully integrated releases that pass
allAcceptance Tests: defined by the customerPair programmingSimple designTest-driven developmentDesign improvementContinuous integrationTeam code ownershipCoding standard: consistent styleMetaphor: common and simple picture of what the system
looks likeSustainable pace
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
24
Extreme Programming (XP) PracticesExtreme Programming (XP) Practices
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
25
Whole TeamWhole Team
All contributors sit together as members of one teamMust include a business representative, the customer, who
provides requirements, sets priorities, and steers the project.Must include programmers.May include testers, who help the customer define the
customer acceptance testsMay include analysts, who help the customer define the
requirementsOften includes a coach who helps the team stay on track and
facilitates the processMay include a manager, who provides resources, handles
external communication, and coordinates activitiesRoles are not necessarily the exclusive property of just one
individual. Everyone on an XP team contributes in any way that they can.
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
26
Planning GamePlanning Game
Two key questions: predict what will be accomplished by the due date, and determine what to do next.
Focus on steering the project instead of trying to predict what will be needed and how long it will take.
Release planning: customer presents desired features, programmers estimate their difficulty, customer lays out plan for project.
Iteration planning: two week iterations, with running useful software. Customer presents features desired for two weeks, programmers estimate tasks and commit to what will be undertaken for current iteration.
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
27
Customer TestsCustomer Tests
as part of presenting each desired feature, the customer defines one or more automated acceptance tests
Team builds the tests first, then uses them to prove that the feature is implemented correctly
Use automated testing and always run the full set of regression tests
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
28
Small ReleasesSmall Releases
the team releases running, tested software, delivering business die you chosen by the customer, with every iteration.
always release software to the end-users frequently.
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
29
Simple DesignSimple Design
bill into a simple design.Start simple, and stay simple.
Design fits current functionalityDesign is neither one time nor upfront, but all-the-time.
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
30
Pair ProgrammingPair Programming
two programmers sit side-by-side at the same machine to build production software
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
31
Test Driven DevelopmentTest Driven Development
Add a test, then make the function work
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
32
Design ImprovementDesign Improvement
Deliver business value in every iterationcontinuous design improvement through re-factoringRemove duplicationIncrease cohesion and lower coupling
comprehensive testing
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
33
Continuous IntegrationContinuous Integration
build many times and test every timeInfrequent integration means
lack of practice with integration more bugsLong code freezes
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
34
Collective Code OwnershipCollective Code Ownership
any pair of programmers can improve any code any time
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
35
Coding StandardCoding Standard
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
36
MetaphorMetaphor
Simple description of how the program works
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
37
Sustainable PaceSustainable Pace
work hard but sensiblyMaximize productivity week in and week out
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
38
Other practices sometimes usedOther practices sometimes used
open workspace Retrospectives: feedback on how performing
self-directed teams: the team makes the decisions
customer teams: instead of one Customer, a team that handles multiple stakeholders, resource allocation, and feedback
Lindstrom and Jeffries (2004)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
39
Making Agile Methodologies WorkMaking Agile Methodologies Work
Management and organizational issues Conflict with organizational culture Management style: shift from command-and-control to leadership-and-collaboration. Project manager role changes from planner/controller to facilitator
Organizational forms: blend autonomy and cooperation to provide flexibility, responsiveness, and synergy
Move from managing software development knowledge through documentation to tacit knowledge in teams
Teams more important than individual roles, requiring changes in performance measurements and reward systems
Nerur, Mahapatra, and Mangalaraj (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
40
Making Agile Methodologies WorkMaking Agile Methodologies Work
People issues Agile methodologies require cooperative social process, communication, collaboration, community of members who value and trust each other (a team). Programmers used to working alone find shared learning, reflection workshops, pair programming, and collaborative decision making hard.
Requires high level of competence. Requires customers to be collaborative, representative, authorized, committed, and knowledgeable – can the company find such customers? Nerur, Mahapatra, and Mangalaraj (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
41
Making Agile Methodologies WorkMaking Agile Methodologies Work
Process issues changing focus from process to people and features difficult
Changing to short, iterative, test-driven development emphasizing adaptability
can agile methods be used with large, scalable projects?
selecting an appropriate agile method
Nerur, Mahapatra, and Mangalaraj (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
42
Making Agile Methodologies WorkMaking Agile Methodologies Work
Technology issues (tools and techniques) Appropriateness of existing technology and tools
new skill sets – refactoring, configuration management, JUnits
Nerur, Mahapatra, and Mangalaraj (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
43
What research shows?What research shows?
A few case studies and experience reports pair programming studies“hard, empirically-based economic evidence is lacking” (p. 95)
Erickson, Lyytinen, and Siau (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
44
Traditional patterns or processesTraditional patterns or processes
Systems development life cycle (SDLC) Spiral method Waterfall approach Rapid Application Development Unified Process Object-oriented PrototypingCMM and CMMI Almost all have analysis, design, coding, test steps Erickson, Lyytinen, and Siau (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
45
XP Principles and ActivitiesXP Principles and Activities
Four valuesCommunicationsSimplicityFeedbackCourage
Four ActivitiesCodingTestingListeningDebugging
Erickson, J., Lyytinen, K., & Siau, K. (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
46
Agile ModelingAgile Modeling
simplicityIterative developmentRobustnessIncremental releasesStaying on taskProducing a quality productCreating models and accompanying documentation only as necessary
Multiple modelsFast and clear feedback on changes to the modelDiscard models and documentation to go back more than a few iterations
Erickson, J., Lyytinen, K., & Siau, K. (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
47
What is wrong with this picture?What is wrong with this picture?
60% of a typical system’s O&M budget goes to band-aid solutions to inadequate analysis and development
2/3 to ¾ of information systems developed are failures because they do not provide required functionality
programmers are taught to build throwaway systems which are often obsolete before the project is complete
The users of systems are systematically excluded from development (p. 97)
Erickson, J., Lyytinen, K., & Siau, K. (2005)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
48
Is this a paradigm change?Is this a paradigm change?
Kuhn: paradigm is “coherent tradition of scientific research” including knowledge, techniques, research agendas, etc.
Consider paradigm as “coherent tradition of software development”
HistorySoftware starts in 1950s1960s: software engineering and waterfall metaphor
Rajlich (2006)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
49
Is this a paradigm change?Is this a paradigm change?
Software evolution based onEmpirical studies of actual software life cycles
DevelopmentEvolution or growthServicing and code decayPhase-outClose-down
Iterative program development
Rajlich (2006)
IT Specialist Program Initiative for Reality-based Advanced Learning
http://sel.ist.osaka-u.ac.jp/topics/IT-Spiral/index.htm2007/4/1
50
New Research AgendaNew Research Agenda
Incremental changeHow can we summarize, model, formalize, improve, tea
ch, and support the practice of incremental change? Concept location: where do changes in existing softwar
e have to be made? Impact analysis: what components will be affected by a
n incremental change? What change propagation needs to happen to make the change?
Refactoring Code decayCognitive aspects of software development and program comprhension
Rajlich (2006)