CHAPTER 2 LITERATURE REVIEW
2.1 A GILE S OFTWARE D EVELOPMENT P ROCESS
2.1.2 Agile process
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
sacrificing the cost and quality of the product. This is the key factor contributed to the agile process movement in the 1990s.
The agile methodology inherited the spirits of prototyping, spiral and RAD methodologies and evolved into an incremental quick-cycle process allowing early delivery of the working product in order to collect feedback and enhance the final products as early as possible.
2.1.2 Agile Process
“Agile implies being effective and maneuverable. An Agile process is both light and sufficient. The lightness is a means of staying
maneuverable. The sufficiency is a matter of staying in the game”
defined by Cockburn and Highsmith (2001). During the Internet boom in the late 1990s and early 2000s, the agile software development methodology prevailed gradually. In 2001, a group of software development guru wrote the “Manifesto for Agile Software Development”5 to reflect the new movements of the rapid
development process. The writings defined the values and principles of the agile processes. The Manifesto states higher values of individuals and Interactions than processes and tools; higher values of working software than comprehensive documentation; higher values of
5 http://agilemanifesto.org/
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
customer collaboration than contract negotiation; and higher values of responding to change than following a plan.
According to this group of software development process guru, the principle of the agile development process is to build a cohesive self-organizing team among engineering and business people. This type of process encourages frequent and face-to-face communication; delivers the working software to replace burdened documentation and to
measure the progress in shorter cycles; emphasizes simplicity in design; and promotes to reach the technology excellence. Satisfying customers is the highest priority in this process; it welcomes changes even at the later stage of the development cycles. It is important to provide environment and support to motivate each individual to perform and work effectively. “At regular intervals, the team reflects on how to become effective, then tunes and adjusts.” The Manifesto summarizes how the process will deliver and evolve the deliveries.
Fowler (2005) expressed that the agile methods possess the adaptive nature and people-first orientation. Fowler cited an important
engineering metaphor that it requires design and construction parts to complete a project in engineering world. While the design is harder to achieve and planned, once it is done properly, the construction is simply building following the blue-print. In this sense, it required more
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
skillful people in design phase than in construction. The author argued that the software engineering is different from the traditional
engineering profession such as civil engineering. From the cost perspective, in building a bridge, usually 10% of the cost and time is spent in design while the rest is in construction; the software
engineering, on the other hand, requires at least 50% in design considering building software is fairly quick. Reeves (1992) stated
“Designing software is an exercise of managing complexity”. Reeves believed that software is easy to build but hard to design. Unlike the other engineering work, which always requires more cost and time in construction so that the design is required to set in stone at the design and planning stage, the software is easy to build and it should evolves to reflect to the changes of requirements while it is being built. Reeves concluded that considering coding, testing and debugging are part of the design, the source code is the best design document.
Adaptive than Predictive
The agile development process was perceived as lightweight and effective. The agile process focuses on building adaptive model than a predictive one. Fowler stated that an adaptive process is the one that can give control over unpredictability.
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Agile processes encourage embracing change in an efficient and flexible manner. Agile methods welcome changes in technology, requirements and even the methods and the processes. The process enables the customers to feedback the working software in each cycle.
Unlike the other process, such as a predictive model, to fixate the requirements and the design for the end products in the beginning of the cycle, the agile process creates an adaptive model to evolve the products in small iterations of development cycles. The process creates adaptive environment forming a cohesive relationship among team members and customers. The customers are communicated as though they are part of the development team during the software
development cycles. With the short cycles planned, customers are able to examine the products with the working software at the end of each cycle. This helps the development team to adjust the software design and development based on feedbacks from the customers.
Fowler stressed that one of the key adaptability of the agile process is the adaptive process itself. Most properly, the process used in the beginning of the cycle was changing over time. An agile team may evolve the process itself to fit the changes of requirements, technology, team members or any factors impeding the project progress.
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
People First
Drucker (1988) advocated businesses will become knowledge-based and rely on its knowledge workers to discipline their own performance through out the feedbacks from colleagues, customers and managers.
Drucker indicated that the command and control management model will no longer suitable for the information-based organizations and a new management style should emerge.
Booch (1995) expressed “People are more important than any process.
Good people with a good process will outperform good people with no process every time”. The agile development process values talents and focuses on the talent management. It should provide support
environment and management process to motivate the team members.
Cockburn and Highsmith (2001a) also expressed that people are the primary drivers of project success in the agile process. Fowler in his new methodology also explained that the role of agile method is to support the development team to determine the best way to handle work.
Process Characteristics
Although different agile process encompasses different focuses, all agile processes outstand similar characteristics.
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Incremental changes
The agile process embeds prototyping spirits in the iteration characteristic. Iterating through short and quick cycles and
introducing incremental developments to complete software is the first key characteristic. The agile methodology promotes shorter cycles to be adaptive to the fast changing requirements and prefers incremental improvements in software deliverables to effectively reflecting to
feedbacks. Under the agile development process, the software is built in several iterations. During iterations, the agile team develops and tests the planned intermediate working software products. The system is growing incrementally with new functionality throughout the
iterations.
Close team communications
The second characteristic is the close team communication practice.
Rather than relying on the written document, the agile method
emphasizes frequent and face-to-face communication among the team members and the customers who are closely involved with the
development team on a regular basis. Review meetings are important in this new communication setting. They range from the daily quick meetings, resolving issues early in the development cycle, to the product review meetings, presenting the intermediate deliverable to customers, marketers and the business executives. Resolving the
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
issues as soon as they are presented is one of key practices to allow creating speedy and accurate software. Product review meetings with the management and customers provide a platform to demonstrate the results from the cycles in order to verify the requirements. The review meetings are important as it removes the risks of building software based on the outdated requirements and designs, which is usually an unknown situation in the traditional development process.
Review meetings are run in particular fashion in any agile process. For example, in Scrum (2004) practice, the daily stand-up meeting is supposed to be short so everyone stands. The Scrum master needs to understand the issues and overcome the impediment while each
member to inform their project progress.
The different working environment setting is suggested to support and to achieve the frequent communication practice. Within the
communication practice, the agile methodology employs different project team organization structure. Utilizing the cross-functional team engages the team members from all functional groups and brings in seamless communications and collaborations.
Working Software as documents
The third characteristic is treating the working software as the best documentation. The agile methodology discourages to create lengthy and soon to be outdated documents, usually creating during all cycles
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
in the waterfall software development process. According to Gladden (1982), the agile method satisfies three propositions:
System objectives are more important than system requirements.
The agile method promotes the development team to understand the system to be built more than the written requirements or the design documents which can be easily changed over the course of building out the software.
A physical object conveys more information than a written specification. This proposition reflects to one of the Agile Manifesto values - Working software over Comprehensive documentation.
System objectives plus physical demonstrations will result in a successful product. The successful product means that a product that performs the function intended and satisfies the customer’s need.
This characteristic can be a good practice only if the discipline is
enforced. Lack of documentation to describe what was built, it worsen the support in the later days without proper comments in the software codes. Discipline of the coders to leave correct and sufficient
comments in the software codes is essential to compensate this characteristic in the agile development process.
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Test First
The last characteristic is the test driven development. Ensuring the quality of the software with frequent integration and improvement during the development cycle is entirely different from the Total Quality Control methodology utilized in the traditional development process. The agile process promotes unit test, like the white box testing in the traditional methodology. Test first concept was emphasized in XP programming practice. Each coder is required to write codes to perform unit tests before they write the actual software codes building the software products. The test first concept is used to ensure the new added codes not to break the original working software.
In this practice, during each software building phase, the test is being run. This concept also indicates that the software engineers can think of all possible use cases before they started to code and create more well around software codes. After all, testing all use cases, especially the negative cases, is usually the difficult task.
Unit test can only make sure the logical coding is correct in programs.
The business logic needs to be verified in the acceptance tests. The cross functional team need to work together to perform this test in each cycle to ensure the success of the deliverables. The tests are recommended to be automated as much as possible in order to fit into the speedy process and cycles.
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Better technology and design
Utilizing the best technology and the sound framework design is another basic practice to provide better quality while adopting the agile methodology. To adapt to frequent change environment and be able to respond to the feedbacks, the easy-to-enhance framework is essential. In the software development industry, the loose-coupled design was well accepted for better maintenance and enhancement goal. The object oriented methodology makes this practice easier. The agile method sprouted and blossomed by the prevailed object oriented programming practice in the 90s.
Besides creating a loosely coupled framework, the agile methodology promotes frequent re-factoring codes practice. The Extreme
programming practice viewed frequent re-factoring codes as the requisite. Some management may see this as a waste of resource if re-factoring the codes was not managed effectively.
Internet advances the innovation and the technology adoption to a sharpen cycle. Internet itself is a phenomenon of the advanced technology adoption. In such phenomenon, the open source plays a key role. Internet makes the open source popular, and open source helps to build the Internet business. Open source platform has brought Internet business abundant source and help open source community to grow better.
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Types of agile development processes
Over the past decades, various types of the agile development
methodologies were introduced to the software development industry.
The agility has become the core competence each software
development organization pursuits to gain. The following are the three most popular agile process methodologies over the past decades.
Extreme Programming
Extreme programming(2001)6 stresses the adaptive and people oriented features. It was rooted in 1990s from the small talk
community and was created by Kent Beck in 2000 while his C3 project being cancelled after four years planning in Chrysler. The Extreme programming methodology brings values of communication, feedback, simplicity, courage, and respect to the software development team. It advocates the whole team should follow simple design principle to iterate through small cycles in providing working software as
intermediate deliverable and receive early feedback. In reaching this goal, the development team exercises the planning game to define the development scope, uses the pair programming practice to gather feedback between software coders, performs unit test and acceptance tests utilizing test driven development practice, and insists that the
6 “Extreme Programming", Computerworld (online), December 2001, webpage: Computerworld-appdev-92
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
whole team should include business people and customers for the better communications and fine scale feedback. In project
management, Extreme programming methodology adopts small cycles and working software to measure the progress of the development.
Continuous integration and design improvement require the
re-factoring practice. Coding standards and collective code ownership are required to manage the frequent added improvements. The Extreme programming practice values the programmers and insists in providing the sustainable working environment for them. Extreme embrace changes just like other agile development process.
Scrum
Scrum(2004) is an adaptive project management process. It was rooted in 1980s in the object oriented development community and the term ‘SCRUM’ was initiated by Ken Schwaber in early 1990s.
Scrum stresses the project management in the practice. Scrum Master is the main coordinator to control and direct project on daily basis.
Communications and short cycles are stressed in this method, too.
Meetings are one of the tools to perform project management. Daily standup meeting to communicate among team members; sprint planning meeting to define scope of the project and each cycles; the Sprint review meeting to examine the deliverable in each milestone, and retrospective meeting to get feedback among team members to
‧
國立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
adjust the process for the next cycle. Scrum explained the importance of getting a cross-functional team, include customers to work
seamlessly together to iterate through two to four week cycles.
Working software as the intermediate deliverable is used in the sprint review meeting to gather feedback. Based on the object oriented programming practice, Scrum emphasizes design patterns in building software.
RUP
Rational Unified Process (RUP) is created by IBM in 2003. It is not a single process but an iterative development process framework. RUP defines the development process in four phases, Inception, Elaboration, construction, and Transition. In these four phases, the software
development will cycle through requirement analysis, architecture
building, software system construction, and production implementation.
The principles in RUP framework correlate to the four phases described above. The following activities provide disciplines to the RUP users - business modeling, requirements clarifications, analysis & design specification, Implementation tests, deployment implementation, configuration and change management, project management and environment supports. Any organization can tailor their development process by assembling numbers of different phases into the
development cycle. For example, a development cycle can be
‧
comprised of iterations of one initial phase, two elaboration phases, three construction phases, and two transitional phases.
Table 2-2 Examples of Agile Development Methodologies
Agile Process Methodology
Pros Cons
XP Lower the cost of changes
through quick spirals of new requirements. Most of the design activity takes place incrementally and on the fly.
Programmers are required to work in pairs which bring in the difficulties in management.
There is no up-front “detailed design” which could result in more re-design effort in the long run. The business champion attached to the project full time can potentially become a single point-of-failure for the project and a major source of stress for the team.
RUP Changing requirements and
risks reduced; easy to reuse codes,
Methodology is complex missing aspect to implement the incremental changes
SCRUM Improvement of the team productivity which was previously paralyzed by heavy
“process”;easy to prioritize work, utilization of backlog for completing items in a series of short iterations or sprints, daily measured progress and communications.
Reliance on facilitation by a master who may lack the political clout to remove impediments and deliver the sprint goal. Due to its reliance on self organizing teams and the rejection of the traditional centralized "process control", internal power struggles may paralyze the team.