Agile Software Development - TU Berlin

2y ago
18 Views
3 Downloads
380.37 KB
10 Pages
Last View : 5d ago
Last Download : 3m ago
Upload by : Abby Duckworth
Transcription

Agile Software DevelopmentJinjin LiTechnische Universitt BerlinBerlin, ��With the further development of computer technology, the software development process has some new goals andrequirements. In order to adapt to these changes, people hasoptimized and improved the previous method. At the same time,some of the traditional software development methods have beenunable to adapt to the requirements of people. Therefore, in recent years there have been some new lightweight software processdevelopment methods, That is agile software development, whichis widely used and promoted. In this paper the author will firstlyintroduces the background and development about agile softwaredevelopment, as well as comparison to the traditional softwaredevelopment. Then the second chapter gives the definition of agilesoftware development and characteristics, principles and values.In the third chapter the author will highlight several differentagile software development methods, and characteristics of eachmethod. In the fourth chapter the author will cite a specificexample, how agile software development is applied in specificareas.Finally the author will conclude his opinion. This articleaims to give readers a overview of agile software developmentand how people use it in practice.I. I NTRODUCTIONBefore we know the definition of agile software development, what’s exactly agile software development, let’s firstlook at its origins and development, as well as its achievementsin the field of computer technology.customer requirements in the process, in the process peoplewill invest resources and then convert it to outputs of project.Before the 1960s, computers had just put into practical use,the software design was often only for a particular applicationin the specified design and preparation. The scale of softwarewas relative small and usually didn’t have documentation,rarely use a systematic metohd to development. Design andprogramming was often equated.In mid-1960s, large capacity, high speed computers haveenabled the rapid expansion of computer applications, thequantity of software development has increased dramatically.The Appearance of High-level programming language andoperating system, causing of changes in the way of computerapplications. Large amounts of data processing led to the birthof first generation database management system. The softwaresystems became more and more complex and large, softwarereliability problems were also more prominent. The originalpersonal design, personal method can no longer meet therequirements, software need to change the mode of production.”Software crisis” broke out[5].A. Background and progressSoftware Engineering gives the procedures and practicesto be followed in the software development and acts as abackbone for computer science engineering techniques[1].Software development process is a structure imposed onthe development of a software product[2],which based on thetheory of software engineering.People use it to implement avariety of different software.Software development methods are attempting to offer ananswer to the eager business community asking for lighterweight along with faster and nimbler software developmentprocesses[3].The word agile software development comes from theproject management, so what is project management? Whatis the definition of project management. As William R.Duncanillam[4] in the book ”A Guide To The Project Management Body Of Knowledge” said, ”Project management isthe application of knowledge, skills, tools, and techniquesto project activities in order to meet or exceed customer’srequirements and expectations from a project”. Every projectaim to product and delivery products or services to meetFig. 1.Process of software developmentB. Traditional development methodsSoftware crisis has more or less promoted the maturity ofsoftware engineering. In the 1990s, the software developmentbegan to use repeated process with the documentation, basedon the theory of software engineering theoretical system. Atthat time, some traditional models came out. Waterfall modelwas as the representatives of the traditional software projectmanagement and had occupied a very important position.According to the waterfall model (as shown in Figure 2is a model which was developed for software development;that is to create software. It is called as such because themodel develops systematically from one phase to other ina downward fashion, like a waterfall”[]. Waterfall modelemphasizes the software development cycle shown in figure

2. And the cycle stage of each step and should be plannedand the investment of time, manpower and the use of relatedtechnologies in each step should be thoughtful deployed. Inthe end of each step the results should be reviewed. Whencustomer is satisfied with results, then the next step can becontinued. Waterfall method is best suited to the the userwhose needs is fixed or results is predictable. Advantages anddisadvantages of waterfall model shown in figure 3.it is very valuable for projects which focus on the exchange.Its disadvantage is that customers must have some knowledgeof UML, because this method owned by a company. RUP alsoneeds a lot of documentation.With the further development of software project management, software project management began to emphasize selfadaptive to face various requirements of the market. At thattime the traditional software project management has beenunable to meet all aspects of the requirements. And then agilesoftware development came out.The word agile development was mentioned in the AgileManifesto since 2001. Later agile development achieved greatsuccess. More and more people started to pay attention onit and will to use agile development to complete their ownprojects. Today, agile development has also very many types,for example,Extreme Programming, Adaptive Software Development, Lean Software Development and so on.Fig. 3.Fig. 2.Advantages and disadvantages of waterfall modelWaterfall ModelStructured Analysis and Structured Design (SASD)[6] is asoftware development method that was put forward in the1970s by Yourdon, Constantine. It emphasizes that dividethe whole project or task into a sub-projects or sub-tasks,depicting the various relationships between sub-projects orsub-tasks . This saves time and greatly improved efficiency.SASD became one of the most popular software developmentmethod in the 1980s, and then IBM also incorporated in thisapproach to their software development process. Of coursesome people have criticized for SASD, because it ignore theparticipation of users.Rational Unified Process (RUP) is ”a software engineeringprocess framework that captures many of the best practicesin modem software development in a form that is suitablefor a wide range of projects and organizations. It embedsobject-oriented techniques and uses the UML as the principal notation for the several models that are built duringthe development.”[6],was developed by the Rational SoftwareCorporation (acquired by IBM in 2003). It is also an iterativestyle of development, it introduces a lot of success examplesin software development, so it is very suitable for large-scalesoftware development and project. RUP put focus on internaland external communication and exchange of engineering,soII. W HAT IS EXACTLY AGILE S OFTWARE D EVELOPMENT ?The concept of agile development was proposed in 2001 bythe agile team, and then many software development teamsand companies recognized and accepted it, and gradually beenwidely used in many projects. Agile Software Development[7]published the Agile Manifesto shwon in figure II at the sametime, on behalf of software development has entered a newera.Fig. 4.Manifesto for Agile Software Development

A. 12 principles behind the Agile Manifesto1) Our highest priority is to satisfy the customer throughearly and continuous delivery of valuable software: Agiledevelopment is an iterative method using an incremental anddelivery of valuable software. Continuous delivery, reflectingthe continued iterative process of agile development. Throughthe early delivery of valuable software in order to listento customers’advice as soon as possiblethe .That avoid todeviation at the understanding of the users’ requirements.The earlier error was found, smaller was the cost at thecorrection of deviation. Customers can with this principlefully experience software company’s efficiency and attention,satisfaction.2) Welcome changing requirements, even late in development: Even in later time of development, agile developmentis also willing to make the appropriate changes according torequirments. When software really meet the needs of userand market, is a valuable software. As agile developmenthas reserved the space in system design for changes, soagile development can minimize costs arising from changesin requirments.3) Deliver working software frequently, from a couple ofweeks to a couple of months, with a preference to the shortertimescale: Short period of iterations can ensure that the projectteam to make cooperation more closely with customers. Ineach new delivery, the project team will deliver improvementsto the software or add new features on basis of previousdelivery. And these improvements and new features must betested, can work and achieve the quality standards that can bereleased.4) Business people and developers must work togetherdaily throughout the project: Information in the transmissionprocess would inevitably lead to the case of distortion. Whenbusiness people describe the requirments of customers to thedevelopers, developers may have misunderstanding of the business. Therefore, throughout the project development, businessand developers would need more frequently and meaningfulinteraction to identify problems as early as possible. Projectteam members work together every day, from the time andspace, to ensure that the communication between business anddevelopers are more convenient.5) Build projects around motivated individuals.Give themthe environment and support they need, and trust them to getthe job done: Only with such a trust, motivation and supportfull potential of all team members would be released.6) The most efficient and effective method of conveyinginformation to and within a development team is face-to-faceconversation: In large team, in order to transfer knowledgein the form of the document, it is more appropriate tocommunicate with each other, he can make people accept bothknowledge and information at the same time. But the agileteam has normally only 7 to 10 people, the use of documentto communicate will waste a lot of time by writing thedocument. Face to face conversation between team memberscould transmit information more quickly and efficiently.7) Working software is the primary measure of progress:In agile development, each iteration is to deliver a workingsoftware, so the measure of progress is no longer the numberof lines of code was written, the number of test cases wasimplemented, but the number of software that was tested,achieve release standards and can work.8) Agile processes promote sustainable development. Thesponsors, developers, and users should be able to maintaina constant pace indefinitely: In software companies, workovertime is a very common thing. However, agile developmentoppose to in the form of work overtime to complete iterativetasks. Overtime will lead to team members to become fatigue,boredom, it is difficult to ensure efficiency.9) Continuous attention to technical excellence and gooddesign enhances agility: In agile development need to respondpositively to change, communicate with each other is alsoimportant, people pay more attention to good design andtechnology, better agile ability will become.10) Simplicity–the art of maximizing the amount of worknot done–is essential: Anyone could be completely expectedchanges in requirments accuratly. Agile teams advocate thateveryone should pay attention to what is the easiest way tocomplete the current problems, rather than to build a futuresoftware features that may be required. Agile developmentdoes not advocated using complex technology to implementsoftware.11) The best architectures, requirements, and designsemerge from self-organizing teams: Self-organizing team isable to positive communicate with each other to form acommon work ethic and culture.They do not need detailedinstructions, this let team members have more confidence.12) At regular intervals, the team reflects on how to becomemore effective, then tunes and adjusts its behavior accordingly:When the projects is during the progress, not only the requirements may change, but also there are many uncertain factors,such as changes in team members, According to a predefinedplan to work is difficult to achieve agility. It requires in acertain time intervals, the team need to reflect on their work,and make appropriate adjustments.Of course,just like Scott Ambler in his bookwrote[8],”These principles form a foundation of commonsense upon which you can base successful softwaredevelopment efforts.” That means these priciples are thefoudation of succeed, they are not enough to let your projector software to work.B. Differences between the agile development and traditionaldevelopmentSo What is exactly agile software development and theWhat is the differences between it and traditional softwaredevelopment model ?Before giving the definition, we firstlycompare differences between the agile development and traditional development based on Agile Manifesto.It is not difficult to summarize that there are two points[?] which agiledevolopment obviously emphasis on.The one is adaptability,the another one is teamwork.

Fig. 5.mentDifferences between the agile development and traditional develop-1) Adaptability: The difference to traditional model, agiledevelopment take more emphasis on adaptability, rather thanthe predictability of traditional model. The person who choosethe traditional development mode , when starting a project,always think of a very detailed and complete documentation.They will analyze the entire development process and detailsof each sub-process for example, how many times or howmany people will be invested in, finally the results are writtenin the document. The most important thing is that the document can not be change after it once was identified. All projectdevelopers are requird to strictly follow the document.Whensomeone want to change the document or timeplan, that isnot allowed. Although this development model also has itsadvantages when the demand from the beginning to the end didnot change. But gradually people also found many problems.Firstly, the part of the design document takes a lot of time,because a very comprehensive documentation required all thedetails of the project have been implemented. In this wayto create a documentation in itself is no problem, but thisdevelopment efficiency will be lower. Most of the modernproject hope that in whole phase the demand didn’t change, itis unrealistic, too many incentives will cause the changes inrequirments.Agile willing to accept changes, even in the latter prozess ofsoftware development. Its own methods of system design andsystem builders can quickly respond to changes in customerdemand. It ensure that the results of the last iteration is thecustomer’s really needs, and it meets changes of market.Differs from the waterfall model, agile development fullycomply with plan. Agile development would at the beginningof a project to develop a rough plan, providing more space tochanges of project.Secondly, If there is no real users that participate in requirements definition process, the definition may be difficult to meetthe needs of end-user’s work habits. Even if the requirementsis defined, and then show it to the end user, let them toconfirm the result, but there is a risk that demand would bechanged. The reason is that everything is imaginary until theuser can run the system, because users could not understandprogramming, when there is something unreasonable, he cannot see it. Let’s assume that the user had already carefullyparticipated in confirmation of requirments and most of therequirments were identified in this stage, but some nonfunctional requirements have no way to show the user, suchas performance, smooth operation and so on. It’s just likethat someone give an iPhone manual and an andorid phonemanual, let you to evaluate which cell phone is better. Besidesthe beautiful look and user interface of iPhone, you can notreally imagine which execellent advantages does iPhone hasthat make so many young people to seek after it. Until youactually hold it in your hand when using and experience thethrill of the iPhone’s smooth operation. Then you can feel oniPhone what is exactly distinguishes.Agile development is not completely closed, the developteam seek positive communication with customers, even tounderstand the changing needs of customers. Cooperation withthe customer does not stay in the contract negotiations, butmore concerned about the investigation in customer-relatedbusiness of software products and technical aspects.Thirdly, traditional model would completely separate codeand design, it is unrealistic for many projects. However, ifthe demand in the project later with a greater risk have to bechanged, so do it early in more detail may be inappropriate. So,assuming that demand can be determined, but can design alsobe determined? My understanding is that in case when we arevery familiar with the technology in the area is possible. Buthow should the technology of one field is very familiar with?Like some small companies which just implement some officesystems (OS), they have implemented a OS for company A,When they also implemented a similar system for companyB, The used technology is almost the same, but there aresome similarities and only small differences in the business.However, when a company want to develop a projects in aunfamiliar field. Before you investe many people into thefeatures of pre-design, you would find it hard to refine thedesign. Pre-desig for the project usually takes a long time.Completing design refinement at the beginning of a projectmay lead to backfire.Agile will be divided into multiple sub-projects, the completion of each project is a small phased achievements. Byusing visualize, actionable phased achievements instead ofcomprehensive documentation. Let customers to have a moreintuitive feel about the prozess of development and put forwarda more accurate advice on the software in the next step.Agile development focus on that in a short time to delivervaluable software to customer to make them satisfied andduring development ongoing delivery of runable software. Thetime for delivery should be as short as possible.2) Teamwork: The goal of traditional process managementis to ensure that the process within the organization as expected execute and the defined process is strictly adheredto. Document-centric process tend to define people’s roles asinterchangeable, reliable machine parts.Agile software process is people-centered rather thanprocess-centric.They believe that individuals and their interactions important than processes and tools. Practice is thelife of methodology[9]. A key point of Agile developmentis let people to accept a process rather than impose a pro-

cess. Developers must have the right to make all decisionsof the technical aspects. Process is the second point, so itshould be minimized. The center of Agile development is toestablishment project team with positive staff. Give them thenecessary environment and support, having full of confidenceto their work. In the project group, the most useful and mosteffective way of communication is face to face conversation.It embodies the principles of human-centered.This form of oral communication compared to documentcentric that the interaction is more faster and efficient totransmit the information and sovle the problem. It requires alsoduring the entire project development, developers and businesspeople should always be together. Focusing on communicationbetween team members, this is the embodiment of agiledevelopment project. The end of research for business peopleis not to write a requirement analysis and then send it todevelopers. But should more effectively communicate withdevelopers to ensure that developers understand the businesscorrectly.After we have a full understanding of agile developmentund also understood the difference between it and traditionaldevelopment, now we give the definition of agile development.Agile software development is a capability that can rapidlyresponse to changing needs of the software, which focus onrapid delivery of high quality software, and achieve customersatisfaction[9].of project development.In order to successfully implementExtreme Programming, Extreme Programming has definedfour values and twelve principles. Extreme Programming isa very large knowledge base, each of which is a scholarshipworth studying.Extreme Programming was proposed by Kent Beck in 1996.It is the development methodology that suitable for smalland medium team and rapid changes in demand. It developedsoftware that should meet the changing needs of customer, itis the goal of Extreme Programming. Extreme Programmingis similar to spiral development, which divide the development process into a relatively simple cycle. Through positivecommunication, feedback and a range of other methods, developers and customers can have a very clear understanding ofsoftware development progress, change, problem to be solvedand the potential difficulties, and adjust development processaccording to the actual situation in time.Compared with the traditional way of project development,Extreme Programming emphasis on that do the best by itslist of methods and ideas, other Extreme Programming arenot advocated, flatly ignored. A strict implementation ofExtreme Programming project, its development process shouldbe efficient and fast, able to do one week in 40-hour insteadof delay in project progress.III. W HICH AGILE S OFTWARE D EVELOPMENTS AREBEING WIDELY USEDWe know from the previous chapter’s introduction, agiledevelopment is a way that with a human-centered, focusingon iterative, step by step to development approach. In agiledevelopment, software project is split into several subprojects,the subprojects will be developed in a certain period. Inother words, agile development divide a large project into thesmall projects that multiple interrelated, but can also be runindependently, and then separately completed.The initial concept of agile development is agile process,including Extreme Programming, Scrum, Lean Development,and so on. Extreme Programming is a plan for the projectmanagement practices, Scrum is an agile project managementframework.A. Extreme ProgrammingExtreme Programming is a lightweight software development methodology.Extreme Programming is from practice,it is also a summary of the practice, its main feature isto adapt to changes in the environment and requirment andgive full play to the subjective initiative of the developers.Extreme Programming commitment to reduce software projectrisk, improve responsiveness to business changes, increaseproductivity during development, the software developmentprocess to increase the fun, I believe that is enough to attracteveryone.In Extreme Programming, at first the four variables areintroduced, cost, time, quality and scope, by studying the interaction between variables, we can get a beeter thorough analysisFig. 6.Components of Extreme Programming1) Extreme Programming Process: Extreme Programmingconsists of four components: values, principles, practices andbehavior. Principles from the value; the values and principlesare based on 12 practices; 12 practices associated with thefour main software development activities. Figure 6 showsthe dependencies between them, this four-part behavior isthroughout the entire life cycle[10].

2) Extreme Programming Values: Extreme Programmingprovides a global, values-driven development process view.To achieve high iterative process, the team need to have fourvalues: communication, simplicity, feedback and courage[9].Communication. A tacit understanding is the biggest challenge of the development team need to face, the most effectiveway to solve the problemto is to strengthen communication.Simplicity. There is often a feedback in iterative, so thatdevelopers do not need to plan the expansion of system design,only need to consider the simplest possible solution and tryto simplify the steps to complete the work. At a later stage, ifnecessary, and then make a change, this avoids the resourcesspent on the program that is complex and not meet real needsof customer.Feedback. Developers and customers need to communicateconstantly and through continuous, clear feedback, when theymeet problems in EXtreme Programming project. At the sametime, the software developers need to quickly implement somefunctionality, presentation to customers, get customers’ highquality, accuracy feedback on the current progress.Courage. Once an error or changes in requirment occur,developers may need to drop some previous work and thenreimplement. In this case, the developers undoubtedly needfor courage. Ignored for the past mistakes is to against the theprinciples of high-iterative process. Courage can be likened toplaying the maze game, when the wrong way was founded,the developers must immediately turn back, this does not meanjust a waste of the time, but rather the price to find a maze’sexit.Extreme Programming is actually driven by these fourvalues. In other words, if you want to achieve an ExtremeProgramming practice, and did not get the four values, then itwill lose the meaning of Extreme Programming.3) Extreme Programming Principels: Built on the basis ofthe values of Extreme Programming, there are five key principles to guide software development: quality work, incremental change, rapidfeedback, assume simplicity and embracingchange[9].Auality work refers to the quality of work and product cannot be ignored, developers can not give up the software qualitybecause of the development progress, and make concessions.Incremental change. Developers should through a series ofsmall changes to solve a problem. In the planning, development and design process, this principle should be adopted .Rapid feedback. Developers through the short iterative cycles to get feedback and quickly check the current product ifit meets customer requirements.Assume simplicity. Try to solve each issue with the simplestway. This means that developers only need to consideredthe problem within the current iteration. Design should beas simple as possible, just to meet the needs of the currentiteration.Embracing change. In solving pressing problems, adoptan tolerant strategy. Developers need to understand customerneeds are constantly changing, so the features and functions ofthe priority needs are constantly changing. To embrace change,developers need to solve pressing problems, and often makeappropriate adjustments to changes in reruirements.4) Extreme Programming Activities: Traditional softwaredevelopment consists of four main activities: requirements,design, coding and testing. The four activities of ExtremeProgramming have the same name with these, but their essentially is different. The following is brief description of thefour activities of Extreme Programming[9].Listening. Extreme Programming is based on communication. It depends not so much on formal written document.Developers not only need to listen to customer requirements,but also the development team needs to listen to opinionsfrom other people of team. Developers need grasp goodcommunication skills.Designing. Extreme Programming has a rather novel pointof view, the design is followed for the development of theproject. Design is no longer a static or a project phase, butinstead of a dynamic process. It is no longer the task thedeveloper.Coding. In Extreme Programming, many of the practicessuch as pair programming, code refactoring, test driven development are focus on programming, to get high-qualityprogram. Extreme Programming developer s considered codeas interesting text, rather than the encrypted text which difficultto understand. So the meaning of the code should be obvious,that means with high readability to make the other teammembers can understand the logic, algorithms and processes.Testing. In Extreme Programming, Test is one not easyto perform[11].Good test is the key to ensure the quality ofsoftware product. Extreme Programming test is run throughthe entire development process. From the beginning the codecould be tested,the most of the issues of software should beresolved at an early stage, rather than to wait until a laterstage. In this way developed software’s quality is guaranteed,the development costs will be reduced.5) Extreme Programming Practices: 12 Extreme Programming practices is summed up by the developer of ExtremeProgramming, it reflects well the principles of ExtremeProgramming[12].Planning game. The purpose of the Planning Game is toguide the product into delivery[13]. In the project planningstage, you need to get the user’s needs. The way how ExtremeProgramming get the requirements from customers is differentform traditional way. In Extreme Programming customersget story card from developer and then write down all theirrequirements on the cards. Developers predict the time thatrequired to achieve on each card, and then According tothe priority from users and the estimated time developerswould select the the tasks which in first iteration of should becompleted. After the first iteration and the result will comparewith the original story card. Before the start of the nextiteration, the user can modify the user card, and then startthe next iteration.Simple design. Extreme Program

agile software development methods, and characteristics of each method. In the fourth chapter the author will cite a specific example, how agile software development is applied in specific areas.Finally the author will conclude his opinion. This article aims to give readers a overview of agile s

Related Documents:

1. The need for an agile way of working 6 2. The need for an agile way of working 9 3. Agile Core Values - Agile Project Management Vs. 10 Agile Event Management 4. Agile principles 12 _Agile Principles of Agile Project Management 13 _Agile Principles of VOK DAMS Agile Event Management 14 5. Agile Methods 16 _Scrum in Short 16 _Kanban in Short 18

The most popular agile methodologies include: extreme programming (XP), Scrum, Crystal, Dynamic Sys-tems Development (DSDM), Lean Development, and Feature Driven Development (FDD). All Agile methods share a common vision and core values of the Agile Manifesto. Agile Methods: Some well-known agile software development methods include: Agile .

Agile Estimating and Planning by Mike Cohn Agile Game Development with Scrum by Clinton Keith Agile Product Ownership by Roman Pichler Agile Project Management with Scrum by Ken Schwaber Agile Retrospectives by Esther Derby and Diana Larsen Agile Testing: A Practical Guide for Testers and Agile Teams by Lisa Crispin and .

1.1 Purpose of the Agile Extension to the BABOK Guide1 1.2 What is Agile Business Analysis?2 1.3 Structure6 Chapter 2:The Agile Mindset 2.1 What is an Agile Mindset?7 2.2 The Agile Mindset, Methodologies, and Frameworks8 2.3 Applying the Agile Mindset9 2.4 Agile Extension and the Agile Ma

Agile World View "Agility" has manydimensions other than IT It ranges from leadership to technological agility Today's focus is on organizational & enterprise agility Agile Leaders Agile Organization Change Agile Acquisition & Contracting Agile Strategic Planning Agile Capability Analysis Agile Program Management Agile Tech.

Agile Manifesto (Agile Principles) The Agile Manifesto is the foundation of most Agile Software Development methods. It has 4 core values supplemented by 12 Principles. The document was developed in 2001 by a group of 17 pioneer software engineers (www.agilemanifesto.org). Agile Software Development Methods Agile Software .

AGILE TESTING For agile testers, test engineers, test managers, developers, technical leads. Ensure the production of effective and valuable software. Agile Fundamentals Agile Programming Agile Software Design Agile Fundamentals Agile Testing Agile Test Automation ICP CERTIFIED PROFESSIONAL ICP CERTIFIED PROFESSIONAL ICP-PRG CERTIFIED .

1. Agile methods are undisciplined and not measurable. 2. Agile methods have no project management. 3. Agile methods apply only to software development. 4. Agile methods have no documentation. 5. Agile methods have no requirements. 6. Agile methods only work with small colocated teams.-7. Agile methods do not include planning. 8.