2005.01.10SOFTWAREENGINEERING授课安排系统工程软件项目计划软件需求分析软件设计编程软件测试软件维护面向对象方法、软件复用和构件技术等2005.01.10SOFTWAREENGINEERING案例分析用户欲利用建设新大楼的机会开发医院计算机管理系统开发方(某软件公司)作为开发人员,你怎么做?软件工程化之前必须了解该软件所处的外部“系统”可行性分析?系统定义?2005.01.10SOFTWAREENGINEERING系统定义(工程)计算机系统就是指适当地组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。2005.01.10SOFTWAREENGINEERING系统定义(工程)软件系统(应用、系统软件)硬件系统(计算机、网络设备)机房,结构化布线系统其他(楼宇自控系统、监控系统、消防系统等)2005.01.10SOFTWAREENGINEERING系统定义(工程)软件系统工程师硬件系统工程师网络系统工程师布线系统工程师等系统工程师2005.01.10SOFTWAREENGINEERING系统定义(工程)可行性分析==》一般针对计算机系统,而不是仅针对软件系统。目的是决定“做还是不做”系统工程师==》一般由软件工程师兼任负责,其他人配合2005.01.10SOFTWAREENGINEERINGTheDefinitionPhase(定义阶段)SystemEngineeringSoftwareprojectplanningSoftwarerequirementsanalysis2005.01.10SOFTWAREENGINEERINGInsteadofconcentratingsolelysoftware,systemengineeringfocusesonavarietyofelements,analysis,design,andorganizingthoseelementsintoasystemthatcanbeaproduct,aservice,oratechnologyforthetransformationofinformationorcontrol.SystemEngineering(系统工程)2005.01.10SOFTWAREENGINEERINGSystemElements·Software·Hardware·People·Database·Documentation·Procedure•Onecomplicationcharacteristicofcomputer-basedsystemisthattheelementscomprisingonesystemmayalsorepresentonemacroelementofastilllargersystem.2005.01.10SOFTWAREENGINEERING系统需求分析、方案选择、可行性研究项目终止软件工程硬件工程数据库工程人力工程系统集成、验收、培训与试运行系统运行和维护SystemEngineering(系统工程)2005.01.10SOFTWAREENGINEERING1)Identifythecustomer’sneed;2)Evaluatethesystemconceptforfeasibility;3)Performeconomicandtechnicalanalysis;4)Allocatefunctionstohardware,software,people,database,andothersystemelements;5)Establishcostandscheduleconstraints;and6)Createasystemdefinitionthatformsthefoundationforallsubsequentengineeringwork.SystemEngineering(系统工程)2005.01.10SOFTWAREENGINEERINGTheoverallrequirementsoftheproductareelicitedfromthecustomer.Theserequirementsen-compassinformationandcontrolneeds,productfunctionandbe-havior,overallproductperformance,design,andinterfacingconstraints,andotherspecialneeds.ProductEngineering(SystemEngineering)2005.01.10SOFTWAREENGINEERINGModelingtheSystemArchitecture•Everycomputer-basedsystemcanbemodelingasaninformationtransformusinganinput-process-outputarchitecture.•HatleyandPirbhaihaveextendedthisviewtoincludetwoadditionalsystemfeatures—userinterfaceprocessingandmaintenanceandself-testprocessing.•UML系统建模2005.01.10SOFTWAREENGINEERING•可研的目的就是用最小的代价在尽可能短的时间内研究并确定所面临的问题是否能够解决。可研的目的不是解决问题,而是确定问题是否值得去解决。必须分析几种主要的可能解法的利弊,从而判断原定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。可研实质上是要进行一次大大压缩和简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。FeasibilityStudy可行性研究2005.01.10SOFTWAREENGINEERINGFeasibilityStudy可行性研究•Feasibilityandriskanalysisarerelatedinmanyways.Duringproductengineering,however,weconcentrateourattentiononfourprimaryareasofinterest:1)Economic(经济)feasibility;2)Technical(技术)feasibility(include:Developmentrisk,Resourceavailability,Technology);3)Legal(法律)feasibility;4)社会、操作方面的可行性2005.01.10SOFTWAREENGINEERING•做可行性分析不能以偏盖全,也不可以什么鸡毛蒜皮的细节都加以权衡。可行性分析必须为决策提供有价值的证据。•联想集团领导人柳传志曾说:“没钱赚的事我们不干;有钱赚但投不起钱的事不干;有钱赚也投得起钱但没有可靠的人选,这样的事也不干。”柳传志为决策立了上述准则,同时也为可以行性分析指明了重点。FeasibilityStudy可行性研究2005.01.10SOFTWAREENGINEERING•分析员应该为每个可行的解法制定一个粗略的实现进度。•可行性研究最根本的任务是对以后的行动方针提出建议。如果问题没有可行的解,分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费;如果问题值得解,分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的计划。FeasibilityStudy可行性研究2005.01.10SOFTWAREENGINEERING•可行性研究需要的时间长短取决于工程的规模,一般说来,可行性研究的成本只是预期的工程总成本的5%~10%。FeasibilityStudy可行性研究2005.01.10SOFTWAREENGINEERING•典型的可行性研究过程有下述一些步骤。1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义问题5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查FeasibilityStudy可行性研究2005.01.10SOFTWAREENGINEERINGEconomicAnalysis(Cost-benefitanalysis)•Cost-benefitanalysisiscomplicatedbycriteriathatvarywiththecharacteristicsofthesystemtobedeveloped,therelativesizeoftheproject,andtheexpectedreturnoninvestmentdesiredaspartofacompany’sstrategicplan.•Inadditionmanybenefitsderivedfromcomputer-basedsystemsareintangible.2005.01.10SOFTWAREENGINEERINGEconomicAnalysis(SoftwareCost-benefitanalysis)•软件的成本不是指存放软件的那张光盘的成本,而是指开发成本。要考虑的成本有:1、办公室房租;2、办公用品;3、计算机、打印机、网络等硬件设备;4、电话、传真等通讯设备以及通讯费用;5、资料费及办公消耗;6、软件开发人员与行政人员的工资;7、购买系统软件的费用;8、做市场调查、可行性分析、需求分析的交际费用;9、公司人员培训费用;10、产品宣传费用;11、非常规费用等。2005.01.10SOFTWAREENGINEERINGTechnicalAnalysis•Whattechnologiesarerequiredtoaccomplishsystemfunctionanperform-ance?•Whatnewmaterial,methods,algorithms,orprocessesarerequired,andwhatistheirdevelopmentrisk?•Howwillthesetechnologyissuesaffectcost?2005.01.10SOFTWAREENGINEERINGTechnicalAnalysis(Software)•在给定的时间内能否实现需求说明中的功能。•软件的质量要求如何?•软件的生产率如何?如果生产率低下,能赚到的钱就少,并且会逐渐丧失竞争力。在统计软件总的开发时间时,不能漏掉用于维护的时间。软件维护是非常拖后腿的事,它能把前期拿到的利润慢慢地消耗光。企图通过偷工减料而提高生产率,是得不偿失的事。•即:做得了吗?做得好吗?做得快吗?2005.01.10SOFTWAREENGINEERINGFeasibilityStudy•Thefeasibilitystudymaybedocumentedasaseparatereporttouppermanagementandincludedasanappendixtothesystemspecification.•Thefeasibilitystudyisreviewedfirstbyprojectmanagement(toassesscontentreliability)andbyuppermanagement(toassessprojectstatus).•Feasibilitystudyoutline(书P242-243)2005.01.10SOFTWAREENGINEERING可行性研究报告•技术上的可行性(按系统目标衡量):现有技术、技术发展、人员数量和水平•经济上的可行性(估算成本/效益比):现有经济条件、开发和运行费用、投资回收期、成本/效益比•系统运行的