版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1中南财经政法大学《软件工程》2参考资料参考书籍:《实用软件工程》(第二版),郑人杰、殷人昆、陶永雷编著,清华大学出版社《软件工程:实践者的研究方法》(原书第七版),RogerS.Pressman,机械工业出版社《软件工程——理论与实践》(第四版影印版),ShariLawrencePfleeger,人民邮电出版社,20103《软件工程》(原书第九版),IanSommerville,机械工业出版社《面向对象软件工程:使用UML、模式与Java》(原书第三版)
,B.Bruegge,A.H.Dutoit著,清华大学出版社《面向对象与传统软件工程》(原书第八版),StephenR.Schach,机械工业出版社《UML2和统一过程:使用面向对象的分析与设计》(第2版,英文影印版),JimArlow,IlaNeustadt著,人民邮电出版社参考资料(续)4《软件工程》,齐治昌等,高等教育出版社《软件工程原理、方法与应用》,史济民主编,高等教育出版社《软件工程方法工具和时间》,冯玉琳等编著,中国科学技术大学出版社参考资料(续)5SOFTWAREENGINEERING软件工程
IntroductiontoSoftwareEngineering软件工程简介6Whatissoftware?1.1WhatIsSoftware?
什么是软件Softwareiscorrespondingandrelatedtohardware,botharecomponentsofcomputersystem.It’saintegratedcollectionwhichincludesPrograms,DataandDocuments.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合7
ProgramProgramisseriesofinstructionsthatperformaccordingtoinitiallydesignedfunctionandperformancerequirement;DocumentsDocumentsaretextandgraphicmaterialsthatarerelatedtoprogramdeveloping,maintainingandusing.
DataData
isdatastructurethatenableprogramtomanipulateinformation;WhatIsSoftware?什么是软件?程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操作信息的数据结构文档是与程序开发、维护和使用有关的图文材料8CharactersofSoftware
软件的性质Softwareisakindoflogicalentityratherthenphysicalone,hascharacterof
Abstraction(抽象性
).Comparedwithhardware,Softwarehasnoevidentmanufacturingprocess(没有明显的制造过程)duringitsdeveloping,tocontrolitsquality,effortsmustbelaidontheprocessofdeveloping.Deferentwithhardware,softwarehasnoabrasionandagingproblems(无磨损问题)
duringitsusage.软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性9Maintainingofsoftwareismorecomplicatedthanthatofhardware,theyaredifferentconstitutionally.软件维护比硬件维护更复杂,它与硬件的维修有本质差别10Abrasionofhardware:replaceitWrongofSoftware:Theremustbesomemistakeduringdevelopingandcan’tbereplaced.硬件磨损:可以用备用零件替换;软件出故障:无法用备用零件替换来解决,是因为设计开发过程中存在错误11
Althoughsoftwarehasnoabrasionandagingtrouble,butithasdegenerationproblem,degenerationisderivedfrommodification.尽管软件没有老化和磨损问题,但是有退化(失效,degeneration)问题,这个问题源于修改。12EvolutionofSoftware软件的进化
特点程序设计阶段(50至60年代)程序系统阶段(60至70年代)软件工程阶段(70年代以后)软件含义程序程序及说明书程序、文档、数据主要程序设计语言汇编及机器语言高级语言软件语言(如需求定义语言等)软件工作范围程序编写包括设计和测试软件生命周期需求者程序设计者本人少数用户市场用户开发者个人开发小组开发小组及大中型软件开发机构13EvolutionofSoftware软件的进化
特点程序设计阶段(50至60年代)程序系统阶段(60至70年代)软件工程阶段(70年代以后)软件规模小型中小型大中小型决定质量的因素个人程序技术小组技术水平管理水平开发技术和手段子程序程序库结构化程序设计数据库、开发工具、开发环境、工程化开发方法、标准和规范、网络及分布式开发、面向对象技术14EvolutionofSoftware软件的进化
特点程序设计阶段(50至60年代)程序系统阶段(60至70年代)软件工程阶段(70年代以后)维护责任者程序设计者开发小组专职维护人员硬件特征价格高存储容量小工作可靠性差降价、速度、容量及工作可靠性有明显提高超高速、大容量、微型化、网络化软件特征完全不受重视软件技术的发展不能满足需要,出现软件危机开发技术有进步,但未获突破性进展,价高,未完全摆脱软件危机151.2SoftwareCrisis
软件危机Somecriticalproblememergedatsoftwaredevelopingandmaintainingprocess.在软件开发和维护过程中存在一些问题
Almostallthesoftwarehasproblematsomedegree.在某种程度上所有软件都存在一些问题
Mainly,theseproblemscanbedividedintotwokinds:所有这些问题可被归为两类
--Howtodevelopsoftwaretomeetincreasingrequirements在不断增加的需求的情况下如何开发软件
--Howtomaintainvastexistingsoftware
如何维护大量的业已存在的软件
16PhenomenaofSoftwareCrisis
软件危机的表现
Costandscheduleofdevelopingcannotbeestimatedaccurately.Userarealwaysunsatisfiedwithdeliveredsoftwaresystem.Qualityofsoftwareareusuallypoor.Softwarecanhardlybemaintained.Thereisalwaysnoproperdocumentofsoftware.Proportionofsoftwarecostincomputersystemareincreasing.Theprogressofsoftwareproductivitycannotcatchupwithtrendofpervasivelyusingofcomputer.567软件常常是不可维护的软件产品的质量往往靠不住用户对“已完成的”软件系统不满意的现象经常发生对软件开发成本和进度的估计常常很不准确123417ReasonofSoftwareCrisis
软件危机的原因SomearebecauseofcharactersofSoftware自身性质的原因
Complexityofsoftware复杂性
Largescaleofsoftware大规模特性
Logicalityofsoftware逻辑特性
Neglectingtheimportanceofrequirementanalysis忽视需求分析
Considerdevelopingtobewritingprogramandmakingitrun认为开发就是写程序并使之运行
Despisingofmaintainingofsoftware轻视软件的维护
Somearebecauseofwrongdevelopingandmaintainingmethod过程的原因(开发和维护方法错误)
181.3Whatissoftwareengineering?
什么是软件工程19Analysisvs.synthesisofaproblem问题的分析与组合problemsubproblem1subproblem2subproblem3subproblem4solutionsolution1solution2solution4solution320Tohelpussolveaproblem,weemployavarietyofmethods,tools,
procedures,and
paradigms.
为了帮助我们解决问题,可以使用多种方法、工具、过程、规范。21Methodformalprocedureforproducingsomeresult产生某种结果的形式化过程Forexample,achefmayprepareasauceusingasequenceofingredientscombinedacarefullytimedandorderedwaysothatthesaucethickensbutdoesnotcurdleorseparate.22方法学传统方法学又称生命周期方法学或结构化范型。采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。把软件生命周期的全过程划分为若干个阶段:
前一阶段是基础、前提;后一阶段是细化;每一个阶段的开始和结束都有严格的标准;在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审;23传统方法学的优点通过将软件生命周期划分成若干个阶段降低了整个软件开发过程的困难程度;每个阶段结束前的严格审查保证了软件的质量,提高了软件的可维护性。24传统方法学存在的问题当软件规模庞大,或者对软件的需求是模糊的或会随时间而变化的时候,使用传统方法学开发软件往往不成功,而且维护起来仍然很困难。原因:把原本密切相关的数据和操作人为地分离成了两个独立的部分,增加了软件开发与维护的难度。25面向对象方法学面向对象方法学是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。面向对象方法学的4个要点:把对象作为融合了数据及在数据上的操作行为的统一的软件构件;把所有对象都划分成类;按照父类与子类的关系,把若干个相关类组成一个类层次结构,位于下层的类继承了上层中某类的特点;对象彼此间仅能通过发送消息互相联系。26面向对象方法学“面向对象=对象+类+继承+通信”面向对象方法学的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间与实现解法的求解空间在结构上尽可能一致。27面向对象方法学的优点降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。28Usemethods,tools,
procedures,and
paradigmstoEnhanceQuality
使用方法、工具、过程、规范来帮助解决问题和提高质量
Procedurerecipeforcombinationoftoolsandtechniques,produceaparticularproduct.将技术和工具结合的方法,来生产一个特定的产品Toolinstrumentorautomatedsystemforaccomplishingsomethinginabetterway.为较好完成一件事情的设备或自动化系统Paradigmstyleofdoingsomething.做某事的样式29Softwareengineersusetools,techniques(method),procedures,andparadigmstoenhancethequalityoftheirsoftwareproducts.软件工程师使用工具、技术(方法)、过程、范型来改进软件产品的质量。Theiraimistouseefficientandproductiveapproachestogenerateeffectivesolutionstoproblems.他们的目标就是使用高效的高产的途径产生解决问题的有效方案。30软件危机与软件工程的提出面对软件危机,1968年德国召开的一次NATO会议上首次签署声明“软件工程”这一说法,认为软件工程应当使用业已建立的工程学科的基本原理和范型。背后驱使的观念是:软件设计、实现和维护应当与传统工程学科具有同等地位。31关于软件工程的一些定义建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。(FritzBauer,原文出自SoftwareEngineering:AReportonaConferenceSponsoredbytheNATOScienceCommittee,NATO,1969)开发、运行、维护和修改软件的系统方法(IEEE1983)32关于软件工程的一些定义1993年IEEE更全面更具体的定义:“软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。”33软件工程学科涉及到为高效率地构建满足客户需求的软件系统所需的理论、知识和实践的应用。(中国计算机科学与技术学科教程2002)
软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。关于软件工程的一些定义34ComputerScienceCustomerTheoriesComputerfunctionsproblemSoftwareEngineeringToolsandTechniquestoSolveProblemWhereSoftwareengineerFitIn?
软件工程师适合做什么
35
Insteadofconcentratingoncomputersandprogramminglanguagesthemselves,softwareengineeringviewthemastoolstobeusedindesigningandimplementingasolutiontoaproblem.
软件工程师不去关注计算机和程序设计语言本身,而是把它们看作是用来设计和实现问题解决方案的工具。WhereSoftwareengineerFitIn?
软件工程师适合做什么
361.4HowSuccessfulHaveWeBeen?
我们已经取得了哪些进展?
Areusershappywiththeirexistingsoftwaresystem?Yesandno.用户对现有的软件系统很满意吗?Softwarehasenabledustodothingswehaveneverdone.软件使我们能做以前从未做过的事情。(软件改变了人类生活)37Qualityterminology
关于质量的术语Error(错误):humanmistake。人的失误Fault(缺陷):resultofmistake,evidencedinsomedevelopmentormaintenanceproduct。error的结果。Failure(故障):departurefromthesystem’srequiredbehavior。相对于系统制定行为的偏差Humanerrorcanleadtofaultcanleadtofailure38Therestillmuchroomforimprovementinthequalityofthesoftwareweproduce.在软件质量方面仍然有很大的改进余地。39WhatIsGoodSoftware?
什么是好软件Zero-defectsoftwareImpossible大多数软件都做不到“零缺陷”40Garvin
质量观点超越的观点(Transcendentalview)质量是可以认识而不能定义的(somethingwerecognizebutcan’tdefine)用户的观点(Userview
)质量是恰好达到目的(fitnessforpurpose
)制造的观点(Manufacturingview)质量是与需求说明的一致(conformancetospecification)质量是与产品的内在特性相联系的(tiedtoinherentproductcharacteristics)基于价值的观点(Value-basedview)质量取决于顾客愿意支付的金额(dependsoncustomer’swillingnesstopay)产品的观点(Productview)41WeMustConsiderQualityinatLeastThreeWay必须至少从3方面考虑质量
Thequalityofproduct产品质量
Thequalityofprocess过程质量
Thequalityinthecontextofthebusinessenvironment
商业环境中的质量
Quality42TheQualityoftheProduct产品质量McCall’squalitymodelBoehm’squalitymodelISOqualitymodelIEEEqualitymodel…
…43软件质量要素评价准则度量度量度量McCall’sQualityModel44
Fj=∑CjkMkLk=1
其中Mk是软件质量要素Fj对第k种评价准则的测量值,Cjk是相应的加权系数McCall’sQualityModel45McCall’sQualityModel度量标准/目标正确性(Correctness)可靠性(Reliability)有效性(Efficiency)完整性(Integrity)可用性(Usability)可维护性(Maintainability)可测试性(Testability)适应性(Flexibility)可移植性(Portability)可重用性(Reusability)互用性(Interoperability)产品运行产品修改产品变迁可维护性适应性可测试性可移植性可复用性互用性正确性可靠性完整性可用性有效性46软件质量要素(外部观点)正确性(Correctness)
:程序满足规格说明及完成用户目标的程度可靠性(Reliability)
:能够防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力有效性(Efficiency)
:软件系统能充分地利用计算机的时间资源和空间资源的程度完整性(Integrity)
:控制未被授权人员访问程序和数据的程度47软件质量要素(外部观点)可用性(Usability)
:学习使用软件的难易程度,包括:操作软件,为软件准备输入数据,解释软件输出结果可维护性(Maintainability)
:软件产品交付用户使用后,能够对它进行修改的难易程度可测试性(Testability)
:测试程序使之具有预定功能所需的工作量适应(灵活)性(Flexibility)
:改变一个操作程序所需的工作量48软件质量要素(外部观点)可移植性(Portability)
:软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度可复用性(Reusability)
:软部件可以在多种场合应用的程度互用(可互操作)性(Interoperability)
:两个或多个系统交换信息并相互使用已交换信息的能力49可追踪性(Traceability)完全性(Completeness)一致性(Consistency)准确性(Accuracy)容错性(Error-tolerance)执行效率(ExecutionEfficiency)存储效率(storageEfficiency)访问控制(Accesscontrol)[安全性(Security)]Tips:质量要素评价准则(McCall)50访问审核(Accessaudit)可操作性(Operability)易培训性(Training)交互性(Communicativeness)简单性(Simplicity)简明性(Conciseness)检测性(Instrumentation)Tips:质量要素评价准则(McCall)51自描述性(Self-descriptiveness)[自文档化(Self-documentation)]可扩充性(Expandability)通用性(Generality)模块化(Modularity)软件系统独立性(SoftwareSystemIndependence)硬件独立性(Hardware(machine)Independence)通信通用性(Communicationcommonality)数据通用性(DataCommonality)Tips:质量要素评价准则(McCall)52外部质量因素与产品评价准则的联系正确性:可追踪性、完全性、一致性可靠性:一致性、准确性、容错性效率性:执行效率、存储效率完整性:访问控制、访问审核可用性:可操作性、易培训性、交互性可维护性:简单性、简明性、自描述性、模块化可测试性:简单性、检测性、自描述性、模块化适应性:简单性、可扩充性、通用性、模块化可移植性:简单性、软件系统独立性、硬件独立性可重用性:简单性、通用性、模块化、软件系统独立性、硬件独立性互用性:模块化、通信通用性、数据通用性53TheQualityoftheProcess
过程质量improvingthesoftwaredevelopmentprocess,wecanimprovethequalityoftheresultingproducts.改进软件开发过程,可以改进最终产品的质量54TheQualityoftheProcess
过程质量CMM(CapabilityMaturityModel)(能力成熟度模型)ISO9000modelSPICE(SoftwareProcessImprovementandCapabilitydetermination)(软件过程改进及能力确定)55CMM模型软件开发能力的成熟度模型(CapabilityManurityModelforSoftware,CMM)是软件工程协会SEI(SoftwareEngineeringInstitution)在卡内基.梅隆大学开发完成的对一个组织软件开发能力进行评价的标准,它侧重于对软件开发过程和开发方法论的考察。56CMM-SEI能力成熟度模型优化级已确定级已管理级可重复级初始级不断改进的过程CMM五级成熟水平能力评定可预测的过程标准一致的过程有纪律的过程57Technologyvalue技术价值Businessvalue商业价值Technologyvalue→Businessvalue转换ThreemodelstoassessROI(Returnoninvestment)评估投资回报的三种模型QualityintheContextoftheBusinessEnvironment
商业环境中的质量
modelAnaccountingrate-of-returnmodel(记帐的回报率模型)Apaybackmodel(偿还模型)Adiscountedcashflowmodel
(折扣现金流模型)58ROI(ReturnOnInvestment)投资回报ReturnOnInvestment:(derivedfromthefinancialcommunity)describestheinvestmentintermsofwhatisgivenupforotherpurposes.Thatis,the“investmentmustnotonlyreturntheoriginalcapitalbutenoughmoretoatleastequalwhatthefundswouldhaveearnedelsewhere,plusanallowanceforrisk”.投资回报定义来源于金融界,用为了目标放弃了什么来描述投资。“投资必须不仅仅是返回原始资本,而且返回必须足够多,至少等于在其他地方这些资金所能挣来的利润再加上风险金”59不同界别对ROI的不同解释U.Sgovernment’s---费用
industry’s工业界---工作量包括:(1)training培训(2)schedule进度(3)risk风险(4)quality质量(5)productivity生产率(6)process过程(7)customer顾客(8)costs费用(9)business商务601.6WhoDoesSoftwareEngineering谁来做软件工程?软件开发中的参与者customerSponsorssystemdevelopment
支持系统开发developer$$$,needContractualobligation签约NeedsSoftwaresystemBuildssystemuserUsessystem61WhoDoesSoftwareEngineering通用商业软件包(Commercialoff-the-shelf,COTS).ThecustomermaydecidetopurchaseCOTSsoftwaretobeincorporatedinthefinalproductthatthedeveloperwillsupplyandsupport.转包(Subcontract)Thedevelopermaychoosetouseadditionaldevelopers,calledsubcontract,whobuildasubsystemanddeliverittothedeveloperstobeincludedinthefinalproduct.全承包系统(Turnkeysystem)621.7Systemsapproach系统方法Activities活动Objectsorentities对象Relationships关系SystemBoundary系统边界Theelementsofsystem系统元素63Asystem
isacollectionofthings:asetofentities,asetofactivities,adescriptionoftherelationshipsamongentitiesandactivities,anddefinitionofboundaryofthethesystem.系统是一组事务的集合:实体的集合、活动的集合、实体和活动之间关系的描述以及系统边界的定义。
Activities(活动):
issomethingthathappensinasystem.发生在系统中的某个事件。
Objectsorentities(对象):
Theelementsinvolvedintheactivities.活动中涉及的元素。
64Relationships(关系):wematchtheentitieswiththeiractivities.实体与活动间的匹配。SystemBoundary(系统边界):whatisincludedintheprojectandwhatisnot.项目中包括什么不包括什么。65ENTITIESParticulatematterOxygenCarbondioxideWaterNitrogenNoseMouthTracheaBronchialtubesLungsAlveoliExampleofsystems系统举例66Systemsapproach系统方法IdentifyactivitiesandobjectsDefinethesystemboundaryConsidernestedsystems,systeminterrelationshipsSystemsapproach确定活动和对象定义系统边界考虑嵌套的系统、相互关联的系统671.8AnEngineeringApproach
工程的方法68DeterminingandanalyzingrequirementsProducinganddocumentingthedesignDetailedspecificationsIdentifyinganddesigningcomponentsBuildingcomponentsTestingcomponentsIntegratingcomponentsMakingfinalmodificationsContinuingmaintenanceBuildingahousevs.softwareRequirementsanalysisanddefinitionSystemdesignProgramdesignWritingprogramsUnittestingIntegrationtestingSystemtestingSystemdeliveryMaintenance69软件开发活动的内容Requirementsanalysisanddefinition需求分析和定义
Systemdesign系统设计
Programdesign
程序设计Writingprograms编写程序
Unittesting单元测试
Integrationtesting集成测试Systemtesting系统测试Systemdelivery系统交付
Maintenance维护
701.9MembersofDevelopmentTeam
开发团队的成员
ANALYST分析员DESIGNER设计人员PROGRAMMER程序员TESTER测试人员TRAINER培训人员71MembersofDevelopmentTeamSoftwaredevelopmentstepsDeveloperAnalysisanddefinitionAnalystSystemdesignDesignerProgramdesignProgramimplementationProgrammerUnittestingIntegrationtestingTesterSystemtestingSystemdeliverTrainerandallothersMaintenance721.10Howhassoftwareengineeringchanged
软件工程的变化
Earlyapplicationswereintendedtorunonasingleprocessor,usuallyamainframe.Theinputwaslinear,usuallyadeckofcardsoraninputtape,andtheoutputwasalphanumeric.Thesystemwasdesignedinoneoftwobasicways:transformation
ortransaction.早期的应用倾向于运行在单处理器上,通常是一个主机。输入是线性的,往往是一组卡片和一个输入磁带,输出是字母数字。设计系统有两种基本方法:转换或事务方法。Transformation(转换):whereinputwasconvertedtooutput使输入转换为输出。Transaction(事务):whereinputdeterminedwhichfunctionwouldbeperformed.由输入决定执行那个功能。73Howhassoftwareengineeringchanged
软件工程的变化
Today’ssoftwarerunsonmultiplesystems,sometimesconfiguredinaC/Sarchitecturewithdistributefunctionality.Softwareperformsfunctionsthatuserneeds,networkcontrol,security,user-interfaceanddataandobjectmanagement.现在的软件运行在多处理器系统上,有时配置在客户/服务器结构中,具有分布式的功能。软件不仅完成用户需要的主要功能,而且完成网络控制、安全性、用户接口及数据和对象管理。74Keyfactorsalteringsoftwareengineeringpractice(Wasserman)改变软件工程实践的七个关键因素75Keyfactorsalteringsoftwareengineeringpractice
改变软件工程实践的关键因素
1.Criticalityoftime-to-marketforcommercialproducts商业产品推向市场的时间的紧迫性2.Shiftintheeconomicsofcomputing:lowerhardwarecostsandgreaterdevelopmentandmaintenancecost计算机行业经济的变化趋势:硬件费用越来越低,而开发、维护费用越来越高3.Availabilityofpowerfuldesktopcomputing功能强大的桌面计算的出现4.Extensivelocal-andwide-areanetworking网络的延伸76Keyfactorsalteringsoftwareengineeringpractice
改变软件工程实践的关键因素
5.Availabilityandadoptionofobject-orientedtechnology面向对象技术的出现和应用6.Graphicaluserinterfacesusingwindows,icons,menus,andpointers使用窗口、图标、菜单和指针的用户界面7.Unpredictabilityofthewaterfallmodelofsoftwaredevelopment软件开发瀑布模型的不可预知性。77Wasserman的软件工程规范AbstractionAnalysisanddesignmethodsandnotationsUserinterfaceprototypingSoftwarearchitectureSoftwareprocessReuseMeasurementToolsandintegratedenvironments抽象分析、设计方法和符号用户界面原型软件体系结构软件过程复用度量工具和集成环境78Abstraction抽象Abstractionisadescriptionoftheproblematsomelevelofgeneralizationthatallowsustoconcentrateonthekeyaspectsoftheproblemwithoutgettingmiredinthedetails,thisnotionisdifferentfromaTransformation,wherewetranslatetheproblemtoanotherenvironmentthatweunderstandbetter.抽象就是在概括层次上对问题的描述,它使我们能侧重考虑问题的关键方面而不会陷于细节。这个概念与转化不同,转化是把问题移到另外一个可以更好理解的环境中去。79Prototyping原型Prototyping
meansbuildingasmallversionofasystem,usuallywithlimitedfunctionality。原型意味着建立系统的小版本,通常具有有限的功能。thatcanbeusedto它可以用来1.Helptheuserorcustomeridentifythekeyrequirementsofasystem帮助用户和顾客确定系统的关键需求;2.Demonstratefeasibilityofadesignorapproach。证明设计或方法的可行性。Prototypingisoftenusedtodesignagooduserinterface:thepartofthesystemwithwhichtheuserinteracts.原型常常用来设计一个好的用户界面,即系统和用户的交互部分。80Softwarearchitecture软件体系结构Softwarearchitecture:Asystem’sarchitecturedescribesthesystemintermsofasetofarchitecturalunitsandamapofhowtheunitsrelatedtooneanother.软件体系结构是用一组体系结构单元以及单元之间如何联系的映射来描述系统。5waystopartitionthesystemintounits:五种把系统分解成单元的方法:1.Modulardecomposition模块化分解2.Data-orienteddecomposition面向数据的分解3.Event-orienteddecomposition面向事件的分解4.Outside-indesign从外到内的设计5.Object-orienteddesign面向对象的设计81SoftwareProcess软件过程DifferenttypesofsoftwareneedDifferentprocess不同的软件使用不同的过程82软件过程开发的差别Enterpriseordivisionwideapplication企业级应用Departmentalapplication部门级应用程序Single-user,desktopproductivitytoolsapplication单用户,桌面生产工具Controlleddevelopment受控开发Rapidapplicationdevelopment快速应用程序开发Packages/minimaldevelopment包/最小开发Lowcost/lowrisk低花费/低风险Singleplatform单平台Limitedscope/vision有限范围Low/mediumrisk低/中风险Single/multiplatform单/多平台1-to2-tierdevelopment1-2层开发Missioncritical关键任务Multiuser多用户Multiplatform多平台2-to3-tierdevelopment2-3层开发83Reuse
复用Severalbarriersinreuse:复用的几个障碍1.Itissometimesfastertobuildasmallcomponentthantosearchforoneinarepositoryofreusablecomponents.有时,建立一个小的组件比在可复用组件的资源库中寻找一个合适的组件更快。2.Itmaytakeextratimetomakeacomponentgeneralenoughtobereusableeasilybyotherdevelopersinthefuture.要开发一个足够通用,可以将来被其他开发者容易复用的部件常常需要额外的时间。3.Itisdifficulttodocumentthedegreeofqualityassuranceandtestingthathavebeendone,sothatapotentialreusercanfeelcomfortableaboutthequalityofthecomponent.由于难以记录已经做过的质量保证和测试的程度,要让某个潜在的复用者对组件的质量感到满意是很困难的。4.Itisnotclearwhoisresponsibleifareusedcomponentfailsorneedstobeupdated.如果某个复用的组件失效或是需要修改,无法弄清是谁的责任。5.Itcanbecostlyandtime-consumingtounderstandandreuseacomponentwrittenbysomeoneelse.理解和复用别人写的组件费时费力。6.Thereisoftenaconflictbetweengeneralityandspecificity.在通用化和特殊化之间存在冲突。84Measurement度量Goalsofquantitativedescription对目标的定量地描述85Toolandintegratedenvironments
工具和集成环境CASE(computer-aidedsoftwareengineering)tools,wherestandardized,integrateddevelopmentenvironmentswouldenhancesoftwaredevelopment.计算机辅助软件工程工具CASE中的标准的、集成的开发环境将改进软件开发。86Fiveissuethatmustbeaddressedinanytoolintegration(Wasserman1990)
任何工具集成中必须描述的5个问题:1.platformintegration平台集成性2.presentationintegration外观集成性3.processintegration过程集成性4.dataintegration数据集成性5.controlintegration控制集成性87平台集成性:在不同网络中工具彼此协作的能力外观集成性:用户接口的通用性过程集成性:工具和开发过程之间的联系数据集成性:工具共享数据的方式控制集成性:一个工具通知和启动另一个工具的活动的能力88软件工程的本质特性软件工程关注大型程序的构造;软件工程的中心课题是控制复杂性;软件经常变化;开发软件的效率非常重要;和谐地合作是开发软件的关键;软件必须有效地支持它的用户;软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。89B.W.Boehm的软件工程基本原理著名的软件工程专家B.W.Boehm于1983年提出了软件工程的七条基本原理。他认为这七条原理是确保软件产品质量和开发效率的原理的最小集合:901.用分阶段的生命周期计划严格管理;把软件生命周期划分成若干阶段,并相应制定出切实可行的计划,并严格按照计划对软件的开发与维护工作进行管理;B.W.Boehm的软件工程基本原理91坚持进行阶段评审;大部分错误是在编码之前造成的,例如,根据Boehm等人的统计,设计错误占软件错误的63%,编码错误仅占37%;错误发现与改正得越晚,所需付出的代价也越
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高校辅导员职业能力测试卷案例分析专项训练
- 《金融物流概括》课件
- 《身体形态的评价》课件
- T/ZSA 209-2023《桌面视远式电子显示设备通用规范》
- 初中七年级生物下册“人体的营养与生命活动”大单元教学设计
- 2026年中烟试题及答案
- 2026年生态文明建设与可持续发展职业资格考试试卷及答案
- 仓储与配送管理课后习题及答案
- 医用耗材入库验收效期审核规范
- 半年总结会议议程
- T/CSPSTC 18-2019城市三维地质体建模技术规范
- DB31/T 1093-2018混凝土砌块(砖)用再生骨料技术要求
- 机械制图与典型零部件测绘 习题答案 第1章习题答案
- 卡通小学生网络安全教育课件
- 方太电烤箱KQD50F-01使用说明书
- 高三英语考前梳理记忆(超完整)
- 决策树课件(共66张)
- 人教版数学一年级上册第一单元分层作业设计
- 沈阳飞机工业(集团)有限公司7厂412#金属蜂窝制造项目环境影响报告
- 北川县吉娜羌寨修建性详细规划
- 道路运输企业两类人员安全考核题库题库(1020道)
评论
0/150
提交评论