Progressinsoftwareengineeringhasbeenremarkableovermyprofessionallifetime.Oursocietiescouldnotfunctionwithoutlarge,professionalsoftwaresystems.Forbuildingbusinesssystems,thereisanalphabetsoupoftechnologies—J2EE,.NET,SaaS,SAP,BPEL4WS,SOAP,CBSE,etc.—thatsupportthedevelopmentanddeploymentoflargeenterpriseapplications.Nationalutilitiesandinfrastructure—energy,communications,andtransport—allrelyoncomplexandmostlyreliablecomputersystems.SoftwarehasallowedustoexplorespaceandtocreatetheWorldWideWeb,themostsignificantinformationsysteminthehistoryofmankind.Humanityisnowfacedwithanewsetofchallenges—climatechangeandextremeweather,decliningnaturalresources,anincreasingworldpopulationtobefedandhoused,internationalterrorism,andtheneedtohelpelderlypeopleleadsatisfyingandfulfilledlives.Weneednewtechnologiestohelpusaddresstheseproblemsand,forsure,softwarewillplayacentralroleinthesetechnologies.Softwareengineeringis,therefore,acriticallyimportanttechnologyforthefutureofmankind.Wemustcontinuetoeducatesoftwareengineersanddevelopthedisciplinesothatwecancreatemorecomplexsoftwaresystems.Ofcourse,therearestillproblemswithsoftwareprojects.Softwareisstillsometimeslateandcostsmorethanexpected.However,weshouldnotlettheseproblemsconcealtherealsuccessesinsoftwareengineeringandtheimpressivesoftwareengineeringmethodsandtechnologiesthathavebeendeveloped.Softwareengineeringisnowsuchahugeareathatitisimpossibletocoverthewholesubjectinonebook.Myfocus,therefore,isonkeytopicsthatarefundamentaltoalldevelopmentprocessesandtopicsconcernedwiththedevelopmentofreliable,distributedsystems.Thereisanincreasedemphasisonagilemethodsandsoftwarereuse.Istronglybelievethatagilemethodshavetheirplacebutsotoodoes‘traditional’plan-dri
1