ebook img

Agile software engineering PDF

312 Pages·2008·2.915 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Agile software engineering

Orit Hazzan and Yael Dubinsky Agile Software Engineering 1 3 OritHazzan,BSc,MSc,PhD,MBA YaelDubinsky,BSc,MSc,PhD DepartmentofEducationinTechnology DepartmentofComputerScience andScience Technion–IsraelInstitute Technion–IsraelInstituteofTechnology ofTechnology Haifa,Israel Haifa,Israel Serieseditor IanMackie,E(cid:2)colePolytechnique,FranceandUniversityofSussex,UK Advisoryboard SamsonAbramsky,UniversityofOxford,UK ChrisHankin,ImperialCollegeLondon,UK DexterKozen,CornellUniversity,USA AndrewPitts,UniversityofCambridge,UK HanneRiisNielson,TechnicalUniversityofDenmark,Denmark StevenSkiena,StonyBrookUniversity,USA IainStewart,UniversityofDurham,UK DavidZhang,TheHongKongPolytechnicUniversity,HongKong UndergraduateTopicsinComputerScienceISSN1863-7310 ISBN:978-1-84800-198-5 e-ISBN:978-1-84800-199-2 DOI:10.1007/978-1-84800-199-2 BritishLibraryCataloguinginPublicationData AcataloguerecordforthisbookisavailablefromtheBritishLibrary LibraryofCongressControlNumber:2008933449 #Springer-VerlagLondonLimited2008 Apartfromanyfairdealingforthepurposesofresearchorprivatestudy,orcriticismorreview,aspermitted undertheCopyright,DesignsandPatentsAct1988,thispublicationmayonlybereproduced,storedor transmitted,inanyformorbyanymeans,withthepriorpermissioninwritingofthepublishers,orinthe caseofreprographicreproductioninaccordancewiththetermsoflicencesissuedbytheCopyrightLicensing Agency. Enquiriesconcerningreproductionoutsidethosetermsshouldbesenttothepublishers. Theuseofregisterednames,trademarks,etc.inthispublicationdoesnotimply,evenintheabsenceofa specificstatement,thatsuchnamesareexemptfromtherelevantlawsandregulationsandthereforefreefor generaluse. Thepublishermakesnorepresentation,expressorimplied,withregardtotheaccuracyoftheinformation containedinthisbookandcannotacceptanylegalresponsibilityorliabilityforanyerrorsoromissionsthat maybemade. Printedonacid-freepaper SpringerScienceþBusinessMedia springer.com Preface Overview and Goals The agile approach for software development has been applied more and more extensivelysincethemidninetiesofthe20thcentury.Thoughthereareonlyabout ten years of accumulated experience using the agile approach, it is currently conceivedasoneofthemainstreamapproachesforsoftwaredevelopment. This book presents a complete software engineering course from the agile angle.Ourintentionistopresenttheagileapproachinaholisticandcomprehen- sivelearningenvironmentthatfitsbothindustryandacademiaandinspiresthe spiritofagilesoftwaredevelopment. Agilesoftwareengineeringisreviewedinthisbookthroughthefollowingthree perspectives: l The Human perspective, which includes cognitive and social aspects, and referstolearningandinterpersonalprocessesbetweenteammates,customers, andmanagement. l The Organizational perspective, which includes managerial and cultural aspects,andreferstosoftwareprojectmanagementandcontrol. l TheTechnologicalperspective,whichincludespracticalandtechnicalaspects, andreferstodesign,testing,andcoding,aswellastointegration,delivery,and maintenanceofsoftwareproducts. Specifically, we explain and analyze how the explicit attention that agile software developmentgives these perspectives and their interconnections,helps viii Preface itcopewiththechallengesofsoftwareprojects.Thismultifacetedperspectiveon software development processes is reflected in this book, among other ways, by the chapter titles, which specify dimensions of software development projects suchasquality,time,abstraction,andmanagement,ratherthanspecificproject stages,phases,orpractices. Toshare withthereaders thismultifacetedperspective,we usetheHuman, Organizational,andTechnical(HOT)scalefor softwaredevelopmentapproaches. HOT Forexample,whenwerefertoteamworkorabstractionlevels,weemphasizethe Human perspective; when software management issues are addressed, the Organizational perspective is emphasized; similarly, when the actual perfor- HOT mance of test-driven development is described, the Technological aspect is highlighted. When the HOT? sign appears, the readers are invited to suggest their own HOT perspective. Agile software development values these three perspectives. Therefore, in HOT manycases,morethanoneperspectiveisilluminatedbytheagileapproachwith respecttoaspecifictopic.Yetevenwhenmorethanoneperspectiveissignificant withrespecttoaspecifictopic,wediscussfromtimetotimeonlyoneortwomain perspective(s),andthereadersareinvitedtocompletethepicture. Thebookisbasedontheauthors’comprehensiveexperienceofteachingand implementing agile software development over the past six years. A course on agile software engineering has been shaped during these years, in an iterative process that was accompanied by an ongoing research project. This course is presentedinthisbook.Inparalleltothecoursecreationandshapingprocess,the agile approach has emerged and spread, becoming one of the worldwide main- streamapproachesforsoftwareprojectmanagement. Organization and Features This textbook guides a fourteen-week/session course on software engineering from the agile perspective and can be used on a weekly basis. It is intended for all who practice, research, teach, and learn software development both in academiaandindustry.Itdiscusseshowagileteamsliveandfunctioninsoftware development environments, how they achieve their goals, and how they act professionally in their environments. Specifically, the themes presented in the book,suchasteamwork,time,quality,learning,trust,andculture,arereviewed from human, organizational, and technological perspectives, at the individual, team,andorganizationallevels,andareillustratedwithcasestudiestakenfrom industryandacademia. The fourteen chapters of the book are organized in three iterations. This structureenablesustorevisitthevarioussubjectsseveraltimesduringthecourse, Preface ix Table1. Bookstructure Iteration Chapter# Topic I 1 IntroductiontoAgileSoftwareDevelopment 2 Teamwork 3 CustomersandUsers 4 Time 5 Measures 6 Quality 7 Learning II 8 Abstraction 9 Trust 10 Globalization 11 Reflection III 12 Change 13 Leadership 14 DeliveryandCyclicality as well as to guide the development of a one-release software product. Table 1 presentsthebook’sstructurebookandthetopicofeachchapter. Eachchapterincludesatheoreticalapproachtoaspecifictopic,asectionthat referstothegiventopicinlearningenvironments,andavarietyofquestionsand tasksforfurtherelaboration. The Academic Community This book on agile software engineering can be used by instructors, academic coaches, and students as atextbookduring afourteen-weeksemester, either for thecommonlytitled‘‘IntroductiontoSoftwareEngineering’’courseorthe‘‘Soft- wareEngineeringMethods’’course. Thecourseisbasedontwomaincomponentsthatprogressinparallelandare closelycorrelatedwitheachother.Thefirstcomponentistheoreticalandcanbe used in the lecture hall or the class; the second is software project development guidedbytheagileapproachthattakesplaceinaphysicallearningenvironment thatwecallastudioorlab. This book is written for the entire course community---students, instructors, and academic coaches. Students are the learners who become familiar with the agile approach both from a theoretical perspective (in the lectures) and from a practicalperspective(inthestudio).Instructorsaretheteachersof thecourse’s theoreticalideas,whousuallyteachinaclassorinalecturehall;yet,interactive teaching and active learning can be facilitated in this setting as well. The aca- demiccoachesarethepractitionerswhoguidethesoftwareprojectdevelopment x Preface in the studio (we elaborate on this role in Chapter 1, Introduction to Agile SoftwareEngineering). The positive results of agile software projects, as elaborated throughout the various chapters of the book, are not the only motive for this course, which presents the field of software engineering from the agile perspective. There are threeadditionalcharacteristicsofthecourse,whichareespeciallyrelevantwhen itistaughtinacademia. First,theagileapproachwasdevelopedbypractitionersworkinginthesoft- wareindustry,andhasbecomemainstreaminthatindustry.Therefore,itmakes sensetoarticulateitsnatureandmainconceptstoprospectivesoftwareengineers intheframeworkofacoursethatdealswithsoftwareengineering. Second,teachingasoftwareengineeringcoursewithintheframeworkofagile software development emphasizes a comprehensive image of the field. This is because agile software development explicitly addresses human, organizational, andtechnologicalaspectsofthesoftwaredevelopmentprocesswithrespecttoall players participating in that process. Thus, the agile approach serves as an opportunitytodrawthiscomprehensiveandcomplexpictureofthefield. Third,accordingtotheSoftwareEngineering2004Curriculum,developedby theIEEEComputerSocietyandtheAssociationforComputingMachineryJoint Task Force (see http://sites.computer.org/ccse/SE2004Volume.pdf), software engineering students should acquire additional skills beyond the technical and scientific ones. One illustrative example is teamwork-related skills. Since teamworkisoneofthebasicideasofagilesoftwaredevelopment,itisonlynatural to integrate teamwork-oriented skills in the teaching and learning process of softwareengineeringfromtheagileperspective.Furthermore,sinceitisnatural toteachagilesoftwaredevelopmentinateamwork-orientedenvironment,thereis noneedtointroducethetopicofteamworkartificially;rather,ateamwork-based learningenvironmentcanbeusedtoteachthistopic.Thiselementisemphasized mainly,butnotonly,inthestudioelementofthecourse. SuggestedUses in an Academic Environment Each chapter presentsafull week ofthecourse: twoweeklylecturehoursanda four-hourweeklystudiomeeting.Thefirstpartofeachchapterincludescontents suitabletobepresentedinthelecture.Thispartusuallypresentsmaterialbeyond whatitispossibletoteachinatwo-hourlecture.Therefore,itisadvisablenotto trytodeliverallthecontentintwohours;rather,wesuggestselectingfromeach chapter the most relevant topics to be discussed with each particular class of students. It is also advisable to encourage in the lectures some active learning elements,asissuggestedinthevariouschapters.Thesecondpartofeachchapter Preface xi addressestheteachingandlearningofthechaptertopic.Itpresentsteachingand learningprinciplesandtheactivitiesconductedinthestudioeachweek. As preparation for the next week’s lectures and studio meeting, instructors and academic coaches can ask the students to read the relevant chapter and to workon selected activities presented throughout the bodyofeach chapter. The students’preparationforthelecturewill alsopartially solvethetime limitation problemofaddressingalltheideaspresented. Finally,thoughthebookpresentsafullfourteen-weeksemestercourse,which consists of two weekly lecture hours and four-hour weekly studio meetings, it is possibletoteachonlyonecomponentofthecourse.Thematerialprovidedinthis bookenableseachinstructor/academiccoachtomaketheneededadjustments. The Industrial Community Sinceagiledevelopmenthasbecomeoneofthemainstreamapproachesformana- gingsoftwareprojects,moreandmoresoftwareorganizationsofdifferentsizesand typesaskthemselveswhethertheagileapproachfitsthem.Evenwhenitisfound thatagilesoftwaredevelopmentisrelevantforagivenorganization,questionssuch as the following are usually asked: How can we manage a transition to the agile software development process? How can our organization cope with the changes requiredforsuchatransition?Howcanweteachagilesoftwaredevelopmenttoall thesoftwarepractitionersandalltheothersoftwareproject’sstakeholders? Thisbook,whenusedinanindustrialsetting,aimstoanswertheseandother relevant questions which software organizations face when dealing with the transition to agile software development. For example, in Chapter 12, Change, wediscusshowtoinitiateatransitionprocesstoagilesoftwaredevelopmentinan organization. When the organization has already transitioned to agile software development, the book can also be used for answering questions related to the actual implementation of agile software development in the organization. For example,inChapter2,Teamwork,wediscusshowteamscanbeformedtoexploit theirpotential,toavoidconflicts,andtosolvedilemmas. SuggestedUses in an IndustrialEnvironment This book can be used in industrial settings by coaches of software teams, soft- wareteamleaders,andfacilitatorsofagilesoftwaredevelopmentworkshops,both for the teaching and learning of agile software development, as well as for its implementation.Thebookcanalsobeusedbyinterestedsoftwarepractitioners whoarenotnecessarilywithinaformalteachingframework. xii Preface Weproposetwowaystousethebookinindustrialenvironments. First, the book can be used for a course which is based on 14 sessions. This course format fits for organizations that wish to expand their members’ profes- sionalknowledgebybecomingfamiliarwithagilesoftwaredevelopment,without necessarily implementing the agile approach. If the course also contains the development of a software project using the agile approach, which in academia takesplaceinthestudio,anewsoftwaresystemshouldbedevelopedforlearning processpurposes,withrespecttowhichthedifferentactivitiesarefacilitated.The developmentofanewsoftwareprojectshouldbeundertakenwhetherthecourseis taughttoarealteamortoagroupofpeoplefromdifferentteamsororganization. Inthecaseofarealteam,thedevelopmentofanotherprojectthantheteam’sreal project will enable the team not to confuse their current work habits with agile practices. Second, for organizations which wish to start implementing agile software developmentrightawayorinthenearfuture,wesuggestthattheagileapproach betaughtfirstinashortformatofatwo-dayworkshoptoateamthathasbeen carefullyselectedtostartthetransitiontoagilesoftwaredevelopmentwithinthe organization. Chapter 12, Change, elaborates on such a transition process, explains the motivation and rationale for this intense workshop format, and outlines the workshop schedule. After the team members have participated in that workshop, and when the team starts implementing agile software develop- mentwithitsrealproject,thebookcanbeusedforclarificationsandelaborations. Inbothcases,aswellasinotherlearningenvironmentsinindustry,theteaching andlearningprinciplespresentedinthebookcannaturallybeapplied. Acknowledgments Wewouldliketothankallthepractitioners,researchers,students,andmangers, both in academia and in the software industry, who during the past six years shared with us their professional knowledge, experience, thoughts, and feelings with respect to agile software development. They all contributed to our under- standing of the nature of agile software engineering and fostered our shaping of theapproachpresentedinthisbook. Contents 1. IntroductiontoAgileSoftwareDevelopment............... 1 1.1 Overview........................................... 1 1.2 Objectives.......................................... 2 1.3 StudyQuestions ..................................... 2 1.4 ThreePerspectivesonSoftwareEngineering............... 3 1.5 TheAgileManifesto .................................. 4 1.5.1 IndividualsandInteractionsoverProcessesandTools.. 5 1.5.2 WorkingSoftwareoverComprehensiveDocumentation 6 1.5.3 CustomerCollaborationoverContractNegotiation.... 7 1.5.4 RespondingtoChangeoverFollowingaPlan ........ 7 1.6 ApplicationofAgileSoftwareDevelopment ............... 8 1.7 DataAboutAgileSoftwareDevelopment ................. 13 1.8 AgileSoftwareDevelopmentinLearningEnvironments...... 15 1.8.1 UniversityCourseStructure ...................... 15 1.8.2 TeachingandLearningPrinciples.................. 15 1.8.3 TheStudioEnvironment......................... 17 1.8.4 TheAcademicCoachRole ....................... 18 1.8.5 OverviewoftheStudioMeetings .................. 19 1.8.6 LaunchingtheProjectDevelopmentintheStudio..... 20 1.9 SummaryandReflectiveQuestions ...................... 23 1.10 Summary........................................... 24 References......................................... 24 2. Teamwork.............................................. 25 2.1 Overview........................................... 25 2.2 Objectives.......................................... 26 2.3 StudyQuestions ..................................... 26 2.4 ARoleSchemeinAgileTeams ......................... 27 2.4.1 RemarksontheImplementationoftheRoleScheme... 31 2.4.2 HumanPerspectiveontheRoleScheme............. 32 2.4.3 UsingtheRoleSchemetoScaleAgileProjects........ 34 2.5 DilemmasinTeamwork ............................... 34 2.6 TeamworkinLearningEnvironments .................... 36 xiv Contents 2.6.1 TeachingandLearningPrinciples.................. 36 2.6.2 RoleActivities................................. 37 2.6.3 StudentEvaluation............................. 40 2.7 ConcludingReflectiveQuestions ........................ 42 2.8 Summary........................................... 42 References......................................... 42 3. CustomersandUsers .................................... 45 3.1 Overview........................................... 45 3.2 Objectives.......................................... 47 3.3 StudyQuestions ..................................... 47 3.4 TheCustomer....................................... 48 3.4.1 CustomerRole................................. 48 3.4.2 CustomerCollaboration ......................... 54 3.5 TheUser........................................... 55 3.5.1 CombiningUCDwithAgileDevelopment ........... 57 3.6 CustomersandUsersinLearningEnvironments............ 61 3.6.1 TeachingandLearningPrinciples.................. 61 3.6.2 CustomerStories............................... 62 3.6.3 CaseStudiesofMetaphorUse..................... 62 3.7 SummaryandReflectiveQuestions ...................... 67 3.8 Summary........................................... 68 References......................................... 68 4. Time ................................................... 71 4.1 Overview........................................... 71 4.2 Objectives.......................................... 72 4.3 StudyQuestions ..................................... 72 4.4 Time-RelatedProblemsinSoftwareProjects............... 73 4.4.1 ListofTime-RelatedProblemsofSoftwareProjects ... 74 4.4.2 CaseStudy4.1.SoftwareOrganizationalSurvey fromtheTimePerspective ....................... 75 4.5 TightnessofSoftwareDevelopmentMethods .............. 77 4.6 SustainablePace..................................... 79 4.6.1 CaseStudy4.2.AnIterationTimetable ofanAgileTeam............................... 80 4.7 TimeManagementofAgileProjects ..................... 81 4.7.1 TimeMeasurements ............................ 81 4.7.2 PrioritizingDevelopmentTasks ................... 83 4.8 TimeinLearningEnvironments......................... 86 4.8.1 ThePlanningActivity........................... 86 4.8.2 TeachingandLearningPrinciples.................. 88 4.8.3 Students’ReflectionsonTime-RelatedIssues......... 89 4.8.4 TheAcademicCoach’sPerspective................. 89

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.