SoftwareDevelopmentMethodologiesIntroductionSoftwaremethodologiesareconcernedwiththeprocessofcreatingsoftware-notsomuchthetechnicalsidebuttheorganizationalaspects.Inthis,thefirstoftwoarticles,Iwillintroducethedifferenttypesofmethodologies.Iwilldescribethemfromanhistoricalperspective,asonewaytounderstandwhereweareandwherewearegoingistoknowwherewehavebeen.TherewillalsobeasubsequentcompanionarticlelookingatthecurrentstateoftheartandwhatIbelievethefutureholds.ThissecondarticleisgiventherathercontroversialtitleofWhyCreatingSoftwareisnotEngineering,whichIwill,ofcourse,explain.Inthe2ndarticleIwilldiscussseveralpopularagilemethodologiesparticularlytheirmostimportantaspects(suchasunittesting),whicharegenerallyneglectedorglossedover.BeforebeginningIshouldwarnthereaderofmypenchantforanalogy.Actuallythiswholearticleisonebiganalogystretchedalmosttobreakingpoint.Ilikethembecausemanyoftheconceptsinsoftwaredevelopmentareabstractandhardtograsp,butusingafamiliarreal-worldsituation,liketakingataxitothepub,canclarifytheideas.Ofcourse,thereisalwaysthecaveatthatnoanalogyisperfect.Becarefultounderstandthesimilaritiesandthedifferences.Ad-hocHistorically,thefirstmethodologywasbasicallynomethodologyatall.Thisisgenerallycalledtheadhocmethodology.We'llstartwithasimplescenario.YouaretomeetyourfriendJimattheStationHotel.Youhavenoideawherethatisbutyoujumpinacabandtellthetaxidriverwhereyouwanttogo.Afewminuteslateryouarriveatyourdestinationsafelyandwithoutwastinganydrinkingtime!Inthisanalogyyouarethecustomerandthetaxidriveristhedeveloper.Theaboveistheidealcasewherethecustomerknowswheretheywanttogoandthedeveloperknowshowtogetthere.Unfortunatelytherealworldisneverthissimple.Considerthesevariations.Problems1.YoutellthedriverwheretogobutyouendupatthetrainstationnottheStationHotel.Obviouslyhemisheardyouandafterallmanyofhispassengersgothere.Youclarifythesituationbutthetaxidriverisuncommunicativeandyouendupatthewronghotel.Eventually,youworkoutthatthedriverdoesnotspeakEnglishwell.Atsomepointyougiveup.IfyouarereallypersistentyoumightgettoyourdestinationbutbythenJimhasalreadyleft.2.YouaskthetaxidrivertotakeyoutotheStationHoteltowhichtheimmediatereplyisWhichone?.Apparently,therearethreewithinatenmileradiusandyoudon'tknowwhichoneJimwentto.Youtrythemallbutcan'tfindJim.ThedriversuggestsitmightbetheFireStationHotelwhichwasactuallynotfarfromwhereyoustarted.3.Thetaxidriverkindlyinformsyouthatyourdestinationisquitedistantandyoudonothaveenoughmoney.Hesuggeststhatyoutakethebus.Ofcourse,thebusisslowanddoesnotgodirectlypastthepub.Yougetthereeventually.4.Thetaxitakesyoustraighttothehotelbutit'sclosedforbusiness.5.Youarehalfwaytherewhenyourealiseyouneedtopostaletter.ThenJimcallsyourmobileandsaysthathehasgonetoadifferenthotel.Thenyougetstuckintrafficandalsoneedtousethebathroom.Thewholetripismuchlongerandmoreexpensivethanexpected.6.Thetaxidriverseemstoknowwheretogobutisinexperiencedandafterquiteawhileherealisesthatheisgoingcompletelythewrongdirection.Severaltimeshehastobacktrackbuteventuallyfindsthedestinationthoughthetriptakesmuchlongerthanexpected.I'msureyoucanthinkofmanymorethingsthatcangowrong.SummaryThead-hocmethodologycanworkprovidedyouhaveasimpleproblem.Ifthecustomerknowsexactlywhattheywantandthedeveloperknowshowtogiveittothemandhastherighttoolstodoso(areliablevehicleandastreetdirectoryifnecessary)thenthereisagoodchanceofsuccess.However,mostofthetimeyougettherelateornotatall.Theabovescenariosrepresentseveralcommonproblemsseeninsoftwaredevelopment,namelymiscommunication(1),acustomerwhodoesn'tknowexactlywhattheywant(2)orthinkstheydountiltheytryit(4),changingrequirements(5)andinexperienceddevelopers(6).Ileaveitthereadertoworkoutwhatscenario3means.WaterfallOK,youwanttoavoidalltheaboveproblems,butwhatdoyoudo?Conventionalwisdomistoaskanexpertforhelpandtherearemanywillinghelpersreadytoprovidetheirservices,forafee,ofcourse.Youfindthatyouneedananalysttoworkoutwhereyoureallywanttogoandadesignertoprovidedetailedunambiguousinstructionsonhowtogetthere.Theanalystworksoutbydeductionand/oreducatedguessworkexactlywhichStationHotelyouwant.PerhapstheyevenmanagetocontactJimtoconfirmthelocation.Theyalsofindouttheexactaddressandtheopeninghours.Nowyouknowexactlywhereyouwanttogobuthowtogetthere?Thedesignerprovidesaspecificationorinstructionsforgettingtothehotel-egproceed2milestotheroundabout,takethe3rdexit,etc.Toensurethatthedriverunderstandstheinstructionstheessentialpartsareeventranslatedintohisnativelanguage.Agooddesignermightalsotrytoanticipateproblemsandhavecontingencyplans-eg,ifthefreewayhasheavytraffictotakeanalternativeroute.Theessentialpointofthespecificationistohavethetripcompletelyandthoroughlyplannedbeforestartingout.Everybodyinvolvedreadsthespecificationandagreesthatthisshouldgetthecustomertothepubontime.Canyouseeaproblemwiththisapproach?Whiletheanalyst/designerisbusyatworkyou(thecustomer)aregettingabitnervous.It'sbeensometimeandyoustillhaven'tgoneanywhere.Youalsowantfeedbackthatonceyoustartthetripeverythingwillstayontrack,sinceyourexperienceoftaxijourneysisthattheycan