2003.01.10SOFTWAREENGINEERING授课安排系统工程软件项目计划软件需求分析软件设计编程软件测试软件维护面向对象方法、软件复用和构件技术等2003.01.10SOFTWAREENGINEERING软件项目管理软件工程管理是对软件项目的开发管理,是对整个软件生存期的所有活动进行管理。任何工程的成败,都与管理的好坏密切相关,软件工程更不例外。尤其是软件产品的特殊性,软件工程的管理对于保证软件产品的质量也具有极为重要的作用。任何技术先进的大型项目的开发如果没有一套科学的管理方法和严格的组织领导,是不可能取得成功的。2003.01.10SOFTWAREENGINEERING软件项目管理4P:人员(People)、产品(product)、过程(Process)和项目(Rroject)。将人员组织起来以有效地完成工作;和客户及其他共利益者很好地沟通,以便了解产品的目标和范围,方案和限制等;选择合适于人员和产品的过程;估算工作量和工作时间,制定项目计划,包括:定义工作产品,建立质量检查点以及确定一些机制以监控计划所规定的工作。2003.01.10SOFTWAREENGINEERING软件项目管理要让软件项目失败很容易,只要符合下列条件之一即可:(1)项目经理对软件一无所知;(2)技术负责人对编程不感兴趣;(3)真正编写代码的程序员是临时雇用的。如果上述三个条件同时具备,就请放心失败好了。让我们少幻想自己是比尔·盖茨,先当好程序员和程序经理再说。2003.01.10SOFTWAREENGINEERINGTheDefinitionPhaseSystemEngineeringSoftwareprojectplanningSoftwarerequirementsanalysisSoftwarescopeRefined2003.01.10SOFTWAREENGINEERINGSoftwareProjectPlanning软件项目计划•软件项目计划包括五项主要活动:估算、进度安排、风险分析、质量管理计划和变更管理计划。•很多技术人员宁愿从事技术工作,而不愿花费时间制定计划。很多管理者也对计划的效果没有信心,所以很多软件项目就经常不制定计划。2003.01.10SOFTWAREENGINEERINGSoftwareProjectPlanning软件项目计划•在可行性分析之后,项目计划与质量管理将贯穿需求分析、系统设计、程序设计、测试、维护等软件工程环节。•项目计划是要提供一份合理的进程表,让所有开发人员任务明确、步调一致,最终共同准时地完成项目。项目计划是要付诸实施的,不象喊政治口号。软件的项目计划重在“准确”而非“快速”。2003.01.10SOFTWAREENGINEERINGSoftwareProjectPlanning软件项目计划•在做软件的项目计划时,应屏弃一切浮夸作风。只有“知已知彼”才能做出合理的项目计划。这里“知彼”是指要了解项目的规模、难度与时间限制。“知已”是指要了解有多少可用资源,如可调用的软件人员有几个?他们的水平如何?软硬件设施如何?等2003.01.10SOFTWAREENGINEERING软件项目计划•如有进行系统定义,则“系统规格说明书”的功能描述和约束所有有关软件的信息几乎都是可用的,否则计划人员必须起系统分析员的作用。确定软件的作用范围资源需求估计工作量和成本估计进度安排(里程碑)系统规格说明书==》软件计划不确定性2003.01.10SOFTWAREENGINEERINGSoftwareScope(范围)•Thefirstactivityinsoftwareprojectplanningisthedeterminationofsoftwarescope.Functionandperform-anceallocatedtosoftwareduringsystemengineeringshouldbeassessedtoestablishaprojectscopethatisunambiguousandunderstandableatmanagementandtechnicallevels.2003.01.10SOFTWAREENGINEERINGSoftwareScope•Softwarescopedescribesfunction,performance,constraints,interfaces,andreliability.•Functionsdescribedinthestatementofscopeareevaluatedandinsomecasesrefinedtoprovidemoredetailpriortothebeginningofestimation.Becausebothcostandscheduleestimatesarefunctionallyoriented,somedegreeofdecompositionisoftenuseful.2003.01.10SOFTWAREENGINEERINGSoftwareScope•Themostcommonlyusedtechniquetobridgethecommunicationgapbetweenthecustomeranddeveloperandtogetthecommunicationprocessstartedistoconductapreliminarymeetingorinterview.•Theanalyststartbyasking“contextfreequestions.”2003.01.10SOFTWAREENGINEERINGProjectPlanningObjectives•Theobjectiveofsoftwareprojectplanningistoprovideaframeworkthatenablesthemanagertomakereasonableestimatesofresources,cast,andschedule.Theseestimatesaremadewithinalimitedtimeframeatthebeginningofasoftwareprojectandshouldbeupdatedregularlyastheprojectprogresses.Inaddition,estimatesshouldattempttodefine“bestcase”and“worstcase”scenariossothatprojectoutcomescanbebounded.2003.01.10SOFTWAREENGINEERINGSoftwareProjectPlanning•Thesoftwareprojectplannermustestimatethreethingsbeforeaprojectbegin:howlongitwilltake,howmucheffortwillberequired,andhowmanypeoplewillbeinvolved.Inaddition,theplannermustpredicttheresources(softwareandhardware)thatwillberequiredandtheriskinvolved.2003.01.10SOFTWAREENGINEERINGEstimating(估算)•Theestimatingisasmuchartasitisscience.•Aleadingexecutivewasonceaskedwhatsinglecharacteristicwasmostimportantwhenselectingaprojectmanager.Hisresponse:“apersonwiththeabilitytoknowwhatwillgowrongbeforeitactuallydoes.”Wemightadd:“andthecouragetoestimatewhenthefutureiscloudy.”2003.01.10SOFTWAREENGINEERINGEstimating•Estimationofresources,cost,andscheduleforasoftwaredevelopmenteffortrequiresexperience,accesstogoodhistoricalinformation,andthecouragetocommittoquantitativemeasureswhenqualitativedataareallthatexist.2003.01.10SOFTWAREENGINEERINGEstimatingRisk(风险)•Projectcomplexity•Projectsize•Thedegreeofstructuraluncertainty•Theavailabilityofhistoricalinformation•Ifprojectscopeispoorlyunderstoodorprojectrequirementsaresubjecttochange,uncertaintyandriskbecomedangerouslyhigh.2003.01.10SOFTWAREENGINEERINGSoftwareProjectEstimation•Intheearlydaysofcomputing,softwarecostscomprisedasmallpercentageofoverallcomputer-basedsystemcost.Anorderofmagnitudeerrorinestimatesofsoftwarecosthadrelativelylittleimpact.•Softwarecostandeffortestimationwillneverbeanexactscience.2003.01.10SOFTWAREENGINEERINGSoftwareProjectEstimation•Toachievereliablecostandeffortestimates,anumberofoptionsarise:1)Delayestimationuntillateintheproject.2)Baseestimatesonsimilarprojectsthathavealreadybeencompleted.3)Userelativelysimple“decompositiontechniques”togenerateprojectcostandeffortestimates.4)Useoneormoreempiricalmodelsforsoftwarecostandeffortestimation.2003.01.10SOFTWAREENGINEERING(Estimateof)Resources•Thesecondtaskofsoftwareplanningisestimationofresourcesrequiredtoaccomplishthesoftwaredevelopmenteffort.•Eachresourceisspecifiedwithfourcharacteristics:descriptionoftheresource,astatementofavailability,chronologicaltimethattheresourcewillberequired,anddur-ationoftimethattheresourcewillbeapplied.2003.01.10SOFTWAREENGINEERINGResources(资源)Hardware&SoftwareToolsReusableSoftwareComponentsPeople可复用的软构件软