高级软件工程AdvancedSoftwareEngineering

上传人:枫** 文档编号:569464687 上传时间:2024-07-29 格式:PPT 页数:296 大小:1.50MB
返回 下载 相关 举报
高级软件工程AdvancedSoftwareEngineering_第1页
第1页 / 共296页
高级软件工程AdvancedSoftwareEngineering_第2页
第2页 / 共296页
高级软件工程AdvancedSoftwareEngineering_第3页
第3页 / 共296页
高级软件工程AdvancedSoftwareEngineering_第4页
第4页 / 共296页
高级软件工程AdvancedSoftwareEngineering_第5页
第5页 / 共296页
点击查看更多>>
资源描述

《高级软件工程AdvancedSoftwareEngineering》由会员分享,可在线阅读,更多相关《高级软件工程AdvancedSoftwareEngineering(296页珍藏版)》请在金锄头文库上搜索。

1、合肥工业大学合肥工业大学 软件工程实验室软件工程实验室高级软件工程Advanced Software Engineering 1合肥工业大学合肥工业大学 软件工程实验室软件工程实验室主要内容一、软件工程概述二、软件需求三、软件设计四、检验和有效性验证方法五、软件进化六、软件项目管理七、AdvancedTopicsinSoftwareEngineering2合肥工业大学合肥工业大学 软件工程实验室软件工程实验室一、软件工程概述o软件工程的基本概念o基于计算机的系统工程o软件过程o软件项目管理的基本内容3合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.什么是软件?oSoftware=pr

2、ogram+data+documentCustomsoftwareGenericsoftware,Shrink-wrappedsoftwareEmbeddedsoftwareSafety-criticalsoftwareCOTS(CommercialOff-the-shelf)oIwillcreateasoftwaretoupdatethedatabase.(somesoftware,apieceofsoftware,asoftwaresystem)4合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件的分类o可以按功能、规模、工作方式、可靠性高低等进行划分o有关软件的词汇Customs

3、oftwareGenericsoftwareEmbeddedsoftwareSafety-criticalsoftwareCOTS(CommercialOff-the-shelf)oIwillcreateasoftwaretoupdatethedatabase.(somesoftware,apieceofsoftware,asoftwaresystem)5合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.什么是软件工程?o1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。FritzBauer在会议上首次

4、提出“软件工程”概念。o软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开发和维护的学科。6合肥工业大学合肥工业大学 软件工程实验室软件工程实验室oFritzBauer:软件工程是为了经济地获得可靠的,能在实际的机器上高效运行的软件而建立和使用的科学的工程原则。oIEEE:软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化思想应用于软件开发过程中,(2)上述方法的研究。o软件工程的目标:低成本,高质量,按时交付7合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件工程的本质特性o关注大型程序的构造o软件工程的中心课题是控制

5、复杂性o软件需求不断变化o旨在提高软件开发的效率o团队合作是软件工程顺利实施的关键o软件必须有效支持它的用户o由一种文化背景的人替另一种文化背景的人创创造造产品8合肥工业大学合肥工业大学 软件工程实验室软件工程实验室3.软件工程与计算机科学的区别o计算机科学研究的是构成计算机和软件系统基础的有关理论和方法,而软件工程则研究软件制作中的实际问题。o理论上,所有软件工程都应该以计算机科学理论作为坚实的基础,但对付实际的、复杂的问题时需要用软件工程的方法来解决。9合肥工业大学合肥工业大学 软件工程实验室软件工程实验室4.软件工程与系统工程的区别o系统工程的产生比软件工程早。o基于计算机的系统工程,研

6、究由软件起主导作用的、有关负责系统的开发和进化的方方面面,包括硬件开发、系统决策、过程设计、系统实施和软件过程等。10合肥工业大学合肥工业大学 软件工程实验室软件工程实验室5.什么是软件过程?o软件过程是指开发软件产品的一组活动及其结果。o所有的软件过程都包含4项基本的活动:软件描软件描述、软件开发、软件有效性验证和软件进化。述、软件开发、软件有效性验证和软件进化。o不同的软件过程以不同的方式组织这4项活动,活动的结果会影响活动的进度。o不同的机构可能用不同的过程来制作同一类产品。11合肥工业大学合肥工业大学 软件工程实验室软件工程实验室过程定义的作用o一个过程定义了为达到确定的目标,需要什么

7、人在什么时间以何种方式做何种工作(Goal,Who,When,How,What)oProcessvsMusicscoreo对于Customer,User,Developer,Manager,一个广泛适用的过程使得所有涉众更好地理解自己所扮演的角色、更清楚地知道自己及他人在什么时间做什么。o促使过程的有机结合和改善,以获得“最好过程”。o可以使公司内部的培训标准化。o由于过程的可重复性,利于开发进度的安排,利于成本估算。12合肥工业大学合肥工业大学 软件工程实验室软件工程实验室6.什么是软件过程模型?o模型与建模o软件过程模型是从一特定的角度对软件过程的本质描述。o软件过程模型包括构成软件过程的

8、各种活动、软件产品以及所有涉众(stakeholder)13合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o从不同的角度对软件过程的描述,就得到不同的过程模型种类。如工作流模型、数据流或活动模型、角色/动作模型等。o工作流模型工作流模型:描述软件过程中各种活动的序列及其输入、输出和相互依赖型。其中的活动皆为人的活动。o数据流或活动模型数据流或活动模型:把软件过程描述成一组活动,其中每个活动都完成一定的数据转换。该模型中的活动层次低于工作流模型。o角色角色/动作模型动作模型:描述参与软件过程的不同角色及其所负责的活动。14合肥工业大学合肥工业大学 软件工程实验室软件工程实验室通用模型或范

9、型(Paradigm,Methodology)oWaterfallModeloTheWaterfallModelWithMaintenanceCircleoTheWaterfallModelWithPrototypingoTheSpiralModel(瀑布模型原型模型)oThe V ModeloThePhasedDevelopmentModeloTheIncrementalandIterativeModeloRUP15合肥工业大学合肥工业大学 软件工程实验室软件工程实验室7.软件工程的成本及分布o软件成本分布取决于所采用的软件过程和所开发的软件类型。o一般的成本分布:描述:设计:开发:集成与测

10、试(15:25:20:40)o需求极高的软件系统的集成与测试成本50%o软件进化的成本o软件维护的成本o基于WEB的电子商务系统的成本模型16合肥工业大学合肥工业大学 软件工程实验室软件工程实验室8.软件工程方法o结构化分析方法(DeMarco,1978,YourdonE.和ConstantineL.等)oJSD方法(Jackson,1983)oOO方法(BoochBooch,1994;Rumbaugh等,1991)17合肥工业大学合肥工业大学 软件工程实验室软件工程实验室UML(UnifiedModelingLanguage)1994,OO思想已经贯穿整个软件生存期,具有影响的OOA&D方法

11、达50余种。UML是一种对软件密集型系统进行可视化、详述、构造和文档化的建模语言,主要用于分析和设计阶段的系统建模。18合肥工业大学合肥工业大学 软件工程实验室软件工程实验室UML2.01994Booch方法方法Rumbaugh OMT Coad/YourdonFire Smith 方法方法 Jacobson OOSE1995.10发布发布Unified Method 0.81996.6发布发布UML 0.9不包含过程指导不包含过程指导Rational联合联合12家公司家公司成立成立UML组织,形成组织,形成UML 1.0,1997.1提交提交给给OMG1997.11.4, OMG采纳采纳UM

12、L 1.12002发布发布UML 2.019合肥工业大学合肥工业大学 软件工程实验室软件工程实验室统一过程(RUP)oRUP的突出特点用况驱动(系统功能)以构架为中心(表现形式)迭代和增量开发(过程实施)20合肥工业大学合肥工业大学 软件工程实验室软件工程实验室TendencyforChangewhenUsingOOParadigm(Jacobsonetal.1995)Characteristic of software product/projectProbability for changeObjectsderivedfromtheapplicationLowLong-livedinfor

13、mationstructuresLowPassiveobjectsattributeMediumSequencesofbehaviorMediumInterfacewiththeoutsideworldHighFunctionalityHigh21合肥工业大学合肥工业大学 软件工程实验室软件工程实验室9.什么是CASE?oComputer-AidedSoftwareEngineeringoCASE是支持软件工程实施的一系列工具的集合。o低端CASE工具支持实现和测试的工具o高端CASE工具支持分析和设计的工具22合肥工业大学合肥工业大学 软件工程实验室软件工程实验室10.优良软件的属性o功能属

14、性o非功能属性23合肥工业大学合肥工业大学 软件工程实验室软件工程实验室11.软件工程所面临的主要问题o遗留系统的挑战o多样性的挑战o交付上的挑战24合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件工程总体面临的困难与风险o复杂性与大量的细节(火星探测器的失败)o技术的不确定性(技术的发展与开发人员对技术的理解程度都不同)o由于交流障碍而引起的需求不确定性o需求是持续变化的o不断的修改所带来的错误使得软件退化o人为和市场的风险o软件费用、可靠性、生产率、重用问题难以解决25合肥工业大学合肥工业大学 软件工程实验室软件工程实验室12.职业和道德上的责任o软件工程是应该具有良好的职业道德

15、无论是否签署了保密协议都严格保守雇主或客户的机机密。密。实事求是地表述自己的工作能力工作能力,不接受超出自己能力的工作。应知晓控制专利权、著作权等知识产权使用的法律。避免计算机滥用。计算机滥用。oACM,IEEE、英国计算机协会等组织颁布了职、英国计算机协会等组织颁布了职业行为准则和职业道德准则(只涉及基本的道德业行为准则和职业道德准则(只涉及基本的道德行为)行为)26合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件工程人员应当遵守的原则(IEEE/ACM,1999,节选)1.公众感软件工程人员应始终与公众利益保持一致。2.客户和雇主软件工程人员应当在与公众利益保持一致的前提下,满足

16、客户和雇主的最大利益。3.产品应保证其产品及其附件达到尽可能高的行业标准。4.判断力软件工程人员应具有公正和独立的职业判断力。5.管理软件工程管理者和领导者应拥护并倡导合乎道德的适合软件开发和维护的管理办法。6.职业感应弘扬职业正义感和荣誉感,尊重社会公众利益。7.同事软件工程人员应公平对待和协助每位同事。8.自己软件工程人员应毕生学习专业知识,倡导合乎职业道德的职业活动方式。27合肥工业大学合肥工业大学 软件工程实验室软件工程实验室一、软件工程概述o软件工程的基本概念o基于计算机的系统工程o软件过程o软件项目管理的基本内容28合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.系统总体

17、特性o功能特性o非功能特性,如可靠性、安全性、保密性等。o与系统总体可靠性紧密关联的3个方面:硬件可靠性软件可靠性(在第16、17章讨论)操作可靠性29合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.系统及其环境o系统都是在一定的环境中存在的。o系统环境必将影响系统的功能和性能。o环境包含一系列相互作用的其它系统,有时,环境可能被看作是一个独立的系统。o系统工程师一定要了解系统环境在许多情况下,系统的目的就是要改变环境。一个系统的功能要受到环境变化的影响,这种影响可能很难估计。30合肥工业大学合肥工业大学 软件工程实验室软件工程实验室3.系统建模o系统建模作为系统需求和设计活动的一部

18、分,描述组成系统的组件以及组件之间的关系(系统体系统体系结构系结构)o系统体系结构通常以方块图方块图来描述。o一个系统体系结构可以以功能为单位划分成子系子系统统或功能组件功能组件,而不必关心由硬件还是软件实现。31合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o功能组件可以分为六类:传感器组件传感器组件:收集来自系统环境的信息。执行机构组件执行机构组件:引起一些系统环境的变化。计算组件计算组件:给定输入,执行计算并产生输出。通信组件通信组件:实现系统组件之间的彼此通信。调度组件调度组件:协调组件间的操作。接口组件接口组件:将一个组件中的表示转换成另一个组件中的表示。32合肥工业大学合肥

19、工业大学 软件工程实验室软件工程实验室4.系统工程过程需求定义需求定义系统设计系统设计组件开发组件开发系统集成系统集成系统安装系统安装系统进化系统进化系统退役系统退役33合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o系统需求定义注重三种类型的需求:抽象的功能需求系统特性系统一定不能具有的性质系统一定不能具有的性质o系统设计所包括的活动有:分割需求(通常有多种分割方法,可以产生不同的方案)识别子系统为子系统分配需求(通常由于外购COTS子系统带来的限制而需要修改需求)描述子系统的功能定义子系统的接口34合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o子系统开发所常见的问题:通常

20、可以并行开发不同的子系统一些超出子系统范围的修改经常发生,但是对已经实现的硬件工程的修改往往带来非常昂贵的代价,这时修改往往落在软件上(软件的固有柔性,flexible),说明软件需求的变化更大更频繁。o系统集成最好采取增量式过程,其理由是:子系统的开发时间通常无法预计增量式集成可以减少错误定位的成本(错误定位可能引起不同子系统的承包商之间的争论,解决问题的谈判须花费时日)35合肥工业大学合肥工业大学 软件工程实验室软件工程实验室5.系统采购o系统获得的过程包括选择最好的购买方式和最佳的供货商。o在做出采购决策之前,一些相关的系统描述和体系结构设计必须完成,以便确定哪些子系统可以通过直接购买,

21、而不必或避免重新开发。o通常单个机构无法完成大型复杂系统所有组件的设计、制造和测试。此时,客户必须选择和确定主承包商主承包商和子承包商子承包商。36合肥工业大学合肥工业大学 软件工程实验室软件工程实验室承包商与子承包商模型系统客户系统客户主承包商主承包商子承包商子承包商2子承包商子承包商1子承包商子承包商337合肥工业大学合肥工业大学 软件工程实验室软件工程实验室一、软件工程概述o软件工程的基本概念o基于计算机的系统工程o软件过程o软件项目管理的基本内容38合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.软件过程模型o一个软件过程模型是软件过程的一个抽象表示。o一般使用过程模型区分或

22、解释不同的软件开发方法。在实际的软件开发中,很少单独使用单一的过程模型,o4类软件过程模型生命周期模型(瀑布模型)进化式开发模型形式化系统开发模型面向复用的开发模型39瀑布模型瀑布模型瀑布模型( WaterfallModel )软件生存周期模型(ClassicLifeCycleModel)线性顺序模型(LinearSequentialModel)问题定义需求分析概要设计详细设计编码测试维护40合肥工业大学合肥工业大学 软件工程实验室软件工程实验室瀑布模型的三个特点瀑布模型的三个特点o阶段间具有顺序性和依赖性o推迟实现的观点o质量保证的观点41合肥工业大学合肥工业大学 软件工程实验室软件工程实验

23、室瀑布模型的优点瀑布模型的优点o开发过程基本上是线性顺序的,便于管理o基于“明确、完备的需求”,可以获得好的开发效果42Cost to changeAfter releaseThe impact of changeDefinitionDevelopment1.56x 1x60100x43计划需求分析概要设计详细设计编码测试维护环维护环计划需求分析运行评价编码设计The Waterfall Model With Maintenance Circle44合肥工业大学合肥工业大学 软件工程实验室软件工程实验室进化式开发模型o进化式开发的思想:基于最初的需求,先开发一个原型系统给用户使用,然后,根据用

24、户的反馈意见不断地修改这个系统,直到形成最后成熟的软件产品。所强调的是,需求可以不断地被补充和完善。o进化式开发有两类探索式开发探索式开发:其目标式与用户一起工作,共同探索需求,直到最后交付系统。抛弃式原型抛弃式原型:开发原型的目标是理解用户需求。45合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o从工程学和管理学角度看,进化式开发有三方面的问题:过程不可见系统结构通常较差快速原型工具和技术往往与主流的工具和技术不相容o实际使用的过程模型通常是混合模型TheWaterfallModelWithPrototypingTheVModelThePhasedDevelopmentModelTh

25、eIncrementalandIterativeModelTheSpiralModel46运行维护需求分析概要设计详细设计编码单元测试集成测试验收测试Prototyping系统测试ValidateVerifyThe Waterfall Model With Prototyping47运行、维护需求分析概要设计详细设计编码单元集成测试验收测试系统测试Validate RequirementsVerify DesignThe V Model48ThePhasedDevelopmentModelBuild Release 2Build Release 1Build Release 3Use Rele

26、ase 2Use Release 1Use Release 3TimeProduction systemDevelopment systemDevelopersUsers49TheIncrementalandIterativeModelIncremental DevelopmentIterative DevelopmentcreateformatcreateeditformatcreateEasyquickMorestylescreatePasteeasyMorestylescreatePasteclumsystylescreate50合肥工业大学合肥工业大学 软件工程实验室软件工程实验室增量

27、开发的优点增量开发的优点o能在较短的时间内向用户提交可以完成主要功能的产品o逐步增加产品的功能,使用户有充裕的时间学习和适应新产品,减少一个全新的产品给客户组织带来的冲击51TheSpiralModel52合肥工业大学合肥工业大学 软件工程实验室软件工程实验室螺旋模型的优点螺旋模型的优点o有利于已有软件的重用o有助于把软件质量作为软件开发的一个重要目标o减少了过多测试或测试不足所带来的风险o软件维护与软件开发没有本质区别53合肥工业大学合肥工业大学 软件工程实验室软件工程实验室形式化系统开发o形式化开发模型类似于瀑布模型,但是软件需求描述被精练成一个用数学符号表达的详细的精确的形式化描述。需求

28、描述经过一系列的变换过程一系列的变换过程,最终形成可执行程序。o净室过程净室过程(Cleanroom,最初有IBM开发,增量式形式化开发和验证),一个形式化开发成功应用的例子。54OperationalSpecificationModelOperational Specification (problem-oriented) Transformed Specification (implementation oriented ) TEST Execute and ReviseSystem Requirements(sometimes informal or incomplete)Deliver

29、edSystem55TransformationalModelTransform nFormal Specification problem-oriented Transform 2TEST Compare withrequirements;Update as neededSystem Requirements(sometimes informal or incomplete)DeliveredSystemTransform 1Formal Development RecordSequence of transformationsPlus rationale for them56合肥工业大学合

30、肥工业大学 软件工程实验室软件工程实验室面向复用的开发o面向复用的开发依赖于可以存取的可复用组件集成这些组件的框架o面向复用的开发过程需求描述组件分析组件分析需求修改需求修改使用复用的系统设计使用复用的系统设计开发和集成开发和集成系统有效性验证57合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.软件描述o可行性研究o需求导出和分析o需求描述o需求有效性验证58合肥工业大学合肥工业大学 软件工程实验室软件工程实验室3.软件设计与实现o体系结构设计o子系统的抽象描述(如包图)o接口设计o组件设计o数据结构设计o算法设计59合肥工业大学合肥工业大学 软件工程实验室软件工程实验室4.软件有效

31、性验证o单元测试o功能模块测试o子系统测试o系统测试o验收测试(如测试,测试)60合肥工业大学合肥工业大学 软件工程实验室软件工程实验室5.软件进化o软件进化软件进化,即软件在其生命周期内不断地随着需求的变更而变更的过程。o软件系统的柔性软件系统的柔性决定了软件进化的现实避免昂贵的硬件修改软件进化亦存在一些问题o软件进化可以看作是软件开发过程和软件维护过程的统一。61合肥工业大学合肥工业大学 软件工程实验室软件工程实验室6.自动化的过程支持o计算机辅助软件工程(CASE)o有两个因素限制了CASE工具的使用软件工程本质上是一个富有创造力的设计活动,已经存在的CASE能使一些常规活动自动化,但尝

32、试用人工智能技术代替人的创造性活动远未成功。软件过程强调的是团队活动以及涉众者之间的交流,在此,CASE也不能提高更多的支持。62合肥工业大学合肥工业大学 软件工程实验室软件工程实验室CASE分类(Fuggetta,1993)CASE系统系统工具工具工作平台工作平台环境环境编编辑辑器器编编译译器器文档文档比较比较器器分析分析和设和设计计程序程序设计设计测测试试集成集成环境环境以过程以过程为中心为中心的环境的环境63合肥工业大学合肥工业大学 软件工程实验室软件工程实验室CASE工具的功能分类交叉索引系统、程序重构系统、反编译器交叉索引系统、程序重构系统、反编译器再工程工具再工程工具页面输出程序、

33、图像编辑器页面输出程序、图像编辑器编写文档工具编写文档工具交叉式调试系统,交叉式调试系统,DebugDebug调试工具调试工具测试用例生成器、文件比较器测试用例生成器、文件比较器测试工具测试工具交叉索引生成器、静态分析器、动态分析器交叉索引生成器、静态分析器、动态分析器程序分析工具程序分析工具编译器、解释器编译器、解释器语言处理工具语言处理工具设计编辑器、数据字典、代码生成器设计编辑器、数据字典、代码生成器方法支持工具方法支持工具高端语言高端语言(UML)(UML),GUIGUI生成器生成器原型工具原型工具版本管理系统版本管理系统配置管理工具配置管理工具需求跟踪工具、变更控制系统需求跟踪工具、

34、变更控制系统变更管理工具变更管理工具文本编辑器、图表编辑器、字处理器文本编辑器、图表编辑器、字处理器编辑工具编辑工具PERT PERT 工具、估算工具、电子表格工具工具、估算工具、电子表格工具规划工具规划工具64合肥工业大学合肥工业大学 软件工程实验室软件工程实验室一、软件工程概述o软件工程的基本概念o基于计算机的系统工程o软件过程o软件项目管理65合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件项目管理要点o软件项目管理是必要的。o软件项目管理与其它的工程管理有明显的区别。o软件项目管理者需要承担多种不同的任务,其中最重要的活动是项目规划、估算和进度控制。o项目里程碑是一个项目活动

35、可以预期的结果,到达一个里程碑就要把项目进展报告提交到管理层。o为了有效控制项目进度,可以借助于各种各样的图表跟踪、表示项目进度。o应识别和评估重大的项目风险,判断这些风险发生的可能性和后果。66合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.管理活动o管理活动包括:人员管理软件成本估算质量管理过程改善软件配置管理67合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.项目规划o项目规划的实质是项目管理者必须预测可能出现的问题,并准备有效的解决办法。o项目规划的主要内容是制定项目计划、质量计划、项目计划、质量计划、有效性验证计划、配置管理计划、维护计划、人有效性验证计划、配置管

36、理计划、维护计划、人员培训计划员培训计划等68合肥工业大学合肥工业大学 软件工程实验室软件工程实验室3.项目调度o项目管理者要估算完成各项活动所需的时间和资源,并按照一定的顺序把它们严密地组织起来。具体活动包括:识别活动(任务)识别活动依赖关系估算活动的资源为活动分配人员创建项目图表(条形图和活动网络图)69合肥工业大学合肥工业大学 软件工程实验室软件工程实验室4.风险管理o识别风险并制定计划,以最大限度地降低风险对项目的影响,这种活动叫做风险管理风险管理。(Hall,1998)o三类风险产品风险产品风险:影响所开发软件产品的质量和性能的风险。项目风险项目风险:影响项目进度或项目资源的风险。业

37、务风险业务风险:影响软件开发机构或产品购买机构的风险。o风险管理过程风险识别风险分析风险规划风险监控70合肥工业大学合肥工业大学 软件工程实验室软件工程实验室可能出现的软件风险风险风险风险类型风险类型描述描述职员跳槽职员跳槽项目项目有经验的职员最有可能跳槽有经验的职员最有可能跳槽管理层变更管理层变更项目项目不同的管理层考虑和关注的事情不同不同的管理层考虑和关注的事情不同硬件缺乏硬件缺乏项目项目如一些硬件没有按时交付如一些硬件没有按时交付需求变更需求变更项目项目需求变更是不可避免的需求变更是不可避免的描述延迟描述延迟项目项目,产品产品需求获取和描述未按时完成,需求获取和描述未按时完成,COTSC

38、OTS接口接口低估了系统规模低估了系统规模项目项目,产品产品预算超支预算超支CASECASE性能差性能差产品产品有些有些CASECASE工具很贵工具很贵技术变更技术变更业务业务技术是不断发展的技术是不断发展的产品竞争产品竞争业务业务任何产品的开发都需要时间任何产品的开发都需要时间71合肥工业大学合肥工业大学 软件工程实验室软件工程实验室风险分析风险风险可能性可能性后果后果机构财务问题,必须削减项目预算机构财务问题,必须削减项目预算小小灾难性灾难性招聘不到符合项目技术要求的职员招聘不到符合项目技术要求的职员大大灾难性灾难性在项目的非常时期,关键职员生病在项目的非常时期,关键职员生病中中严重严重要

39、复用的组件有缺陷,限制了项目的功能要复用的组件有缺陷,限制了项目的功能中中严重严重需求变更导致主体设计要返工需求变更导致主体设计要返工中中严重严重机构调整,由新的管理层负责机构调整,由新的管理层负责大大严重严重数据库性能问题数据库性能问题中中严重严重低估开发时间低估开发时间大大严重严重CASE 工具不能被集成工具不能被集成大大可容忍可容忍客户不了解需求变更对项目造成的影响客户不了解需求变更对项目造成的影响中中可容忍可容忍所需培训跟不上所需培训跟不上中中可容忍可容忍低估了缺陷的修补率低估了缺陷的修补率中中可容忍可容忍低估了软件的规模低估了软件的规模大大可容忍可容忍CASE工具产生的代码效率低工具

40、产生的代码效率低中中可忽略可忽略72合肥工业大学合肥工业大学 软件工程实验室软件工程实验室风险因素分析类别类别可能的风险可能的风险潜在的特征潜在的特征技术技术数据库处理速度,复用组件或COTS有缺陷硬件或支持软件延迟交付,暴露出许多技术问题人员人员招聘不到,非常时期关键人员出问题,培训任务分配不当,士气低落,团队不和谐机构机构机构调整,管理层变更,机构财务问题管理层内部矛盾,缺乏权威和人格魅力工具工具CASE工具是否支持整个软件生命周期不会或不愿使用或抱怨CASE工具需求需求需求变更,需求理解问题,需求表达问题过多的需求变更请求和客户抱怨估算估算低估了软件规模、开发时间、缺陷修补率进度滞后,无

41、法消除暴露的缺陷73合肥工业大学合肥工业大学 软件工程实验室软件工程实验室风险管理策略风险风险策略策略机构财务问题机构财务问题拟一份报告,提交给高级管理层,说明对项目的影响度拟一份报告,提交给高级管理层,说明对项目的影响度职员招聘问题职员招聘问题告诉客户由此带来问题和延迟的可能性告诉客户由此带来问题和延迟的可能性职员生病职员生病重新组织团队,增强任务分配的弹性和相互之间的沟通重新组织团队,增强任务分配的弹性和相互之间的沟通缺陷组件缺陷组件购买可靠的组件购买可靠的组件需求变更需求变更评估需求变更所带来的影响,提高开发过程的可跟踪性评估需求变更所带来的影响,提高开发过程的可跟踪性机构调整机构调整拟

42、一份报告,提交给高级管理层,说明对项目的影响度拟一份报告,提交给高级管理层,说明对项目的影响度数据库性能问题数据库性能问题研究购买高性能数据库的可靠性研究购买高性能数据库的可靠性低估开发时间低估开发时间对要购买的组件、程序生成器等的有效性进行检查对要购买的组件、程序生成器等的有效性进行检查74合肥工业大学合肥工业大学 软件工程实验室软件工程实验室高级软件工程一、软件工程概述二、软件需求工程三、软件设计四、检验和有效性验证方法五、软件进化六、软件项目管理七、AdvancedTopicsinSoftwareEngineering75合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求工程o软

43、件需求(第5章)o需求工程过程(第6章)o需求建模(第7章)o软件原型系统开发(第8章)o形式化描述(第9章)76合肥工业大学合肥工业大学 软件工程实验室软件工程实验室本章要回答的主要问题o什么是用户需求、系统需求?这些需求应使用不同的方法表示?o功能需求和非功能需求之间的不同?o描述系统需求的两种技术?o在需求文档中如何组织需求内容?77合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.用户需求、系统需求与软件设计描述o需求需求是对系统应该提供的服务和所受约束的描述。o由于需求要向不同类型的涉众(读者)传达不同层次的信息,可以将需求分为:用户需求用户需求(目标需求目标需求)用用户所熟

44、悉的表达形式所给出的需求描述。系统需求(产品需求)系统需求(产品需求)详细地给出系统将提供的服务以及系统所受到的约束,比用户需求更具体,更形式化。软件设计描述软件设计描述(设计层需求设计层需求),在系统需求描述的基础上再加入更加详细的需求细节。78合肥工业大学合肥工业大学 软件工程实验室软件工程实验室用户需求与系统需求示例用户需求用户需求1.软件必须提供表达和访问外部文件的手段,这些外部文件是由其它工具创建的。2.系统需求系统需求1.1为用户提供定义外部文件类型的工具。1.2每种外部文件类型具有一个相关联的工具。1.3每种外部文件类型在界面上用一种专门的图标来表示。1.4当用户选择一个代表外部

45、文件的图标时,与该外部文件类型相关联的工具启动。1.52.179合肥工业大学合肥工业大学 软件工程实验室软件工程实验室不同层次的需求示例R1. 预算误差应在5之内R2. 产品应支持费用注册,以及根据经验数据报价R3. 产品应具有记录、检索经验数据的功能R4. 系统的屏幕图像应如附件xx所示目标层需求域层需求产品层需求目标需求80合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o用自然语言描述的用户需求可能描述不够清楚描述不够清楚(二义性、含糊不清、自相矛盾等)需求混乱需求混乱(功能需求、非功能需求、系统目标和设计信息无法清晰地区分)需求混合需求混合(多个不同的需求交织在一起,以一个需求的

46、形式给出)o系统需求描述可能包括许多不同的模型,如对象模型、数据流模型等81合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o原则上讲,系统需求仅仅描述做什么,而不应该描述如何实现。然而,要给出细节上的需求而不提到任何设计信息,事实上也是不可能的:通常系统需求依照构成系统的各个子系统结构来给出,即由初始的系统体系结构来构造需求描述;通常目标系统和现存系统户操作,这就约束了目标系统的设计,同时这些约束又构成了新系统的需求;某些特别的设计(如N-版本设计)是系统的一个外部需求。82合肥工业大学合肥工业大学 软件工程实验室软件工程实验室系统需求描述工具描述工具描述工具说明说明结构化自然语言依赖

47、于定义标准格式或模板来表达需求PDL语言比一般的计算机高级语言更接近自然语言图形化工具通过图形语言(辅之于文本注释)来定义系统的功能需求。如SADT,基于用例的描述等形式化工具基于有限状态机、集合等数学工具形式化地描述需求。83合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.功能需求与非功能需求o另一种需求层次的划分领域需求(业务需求)领域需求(业务需求)用户需求用户需求功能需求功能需求非功能需求非功能需求o业务需求业务需求(BusinessRequirement)反映了组织机构或客户对系统、产品高层次的目标要求反映目标系统所处领域的特点在项目视图与范围文档中予以说明84合肥工业大学

48、合肥工业大学 软件工程实验室软件工程实验室o用户需求用户需求(UserRequirement)用户使用产品必须要完成的任务在使用用例文档或方案脚本说明中予以说明o功能需求功能需求(Function,BehavioralRequirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求对系统应该提供的服务、如何对输入做出发应以及系统在特定条件下的行为的描述。涉及与本系统有接口的其他系统的所有事情。可能需要明确声明系统不应该做什么。85合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o非功能需求非功能需求(Non_Requirement)(Non_Requ

49、irement)对系统提供的服务或功能给出的约束,包括性能指标、对质量属性(quality attribute)的描述、外部接口以及设计与实现的约束(constraint)、时间约束、标准等。非功能需求最好是可以验证的,但实际上对需求量化通常很难。非功能需求与功能需求有时会发生冲突。非功能需求之间会发生冲突。86合肥工业大学合肥工业大学 软件工程实验室软件工程实验室非功能需求分类目标目标系统系统的的限制限制性能性能实时性、精确度、资源利用率等实时性、精确度、资源利用率等可靠性可靠性有效性、完整性有效性、完整性安全安全/ /保密性保密性安全性、保密性安全性、保密性运行限制运行限制使用频度、运行期

50、限、控制方式、操作要求使用频度、运行期限、控制方式、操作要求物理限制物理限制系统规模等限制系统规模等限制开发开发维护维护的的限制限制开发类型开发类型实用性开发、试验性开发实用性开发、试验性开发开发工作量的估计开发工作量的估计开发方法开发方法质量控制标准、里程碑和评审、验收标准质量控制标准、里程碑和评审、验收标准优先性和可修改性优先性和可修改性可维护性可维护性87合肥工业大学合肥工业大学 软件工程实验室软件工程实验室功能需求功能需求 非功能需求非功能需求业务需求业务需求用户需求用户需求质量属性质量属性外部接口外部接口系统要求系统要求约束约束功能需求功能需求项目视图和范围文档项目视图和范围文档使用

51、实例文档使用实例文档需求规格说明需求规格说明业务需求业务需求软件需求各组成部分之间的关系软件需求各组成部分之间的关系88合肥工业大学合肥工业大学 软件工程实验室软件工程实验室功能需求示例(大学图书馆系统)1.用户能从总的数据库中查询,或者是选择其中的一个子集并从中查询。2.系统能够提供适当的适当的浏览器供用户阅读馆藏文献。3.每次借阅能够对应一个唯一的识别符,可拷贝到用户的常备存储区内。?功能需求以不同的详细程度重写(需求1和3)?含糊的表达,“适当的适当的浏览器”89合肥工业大学合肥工业大学 软件工程实验室软件工程实验室容易忽略的非琐碎要求(示例)R1:根据客房类型而不是客房号进行预订R2:

52、考虑到预订客房的客户有可能不入住,可以接受超过空闲客房数量的预订R3:授权的系统管理员可以自己定义电费的分类单价R4:90合肥工业大学合肥工业大学 软件工程实验室软件工程实验室3.软件需求文档oSRS(SoftwareRequirementspecification)oHeninger对软件需求文档提出的6点要求:应该只描述系统外部行为应该定义实现上的约束应该是容易变更的应该成为系统维护人员的参考工具应该记录系统的整个说明周期应该对未料到的事件给出可接受的反应91合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求文档结构(IEEE标准见第78页)引言:问题定义所确定的目标和范围术语:定

53、义文档中的技术术语数据描述:数据流图,数据字典等等功能描述:功能要求文档(可形式化描述)性能描述:性能要求文档质量保证:描述交付前需要进行的各种测试和验收标准其它:运行要求、将来可能的要求附件索引92合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求工程o软件需求(第5章)o需求工程过程(第6章)o需求建模(第7章)o软件原型系统开发(第8章)o形式化描述(第9章)93合肥工业大学合肥工业大学 软件工程实验室软件工程实验室本章要回答的主要问题o需求工程活动及其之间的关系o需求导出和分析的一些技术o需求有效性验证和需求评审o为什么说需求管理是必须的,它如何支持其它的需求工程活动94合肥工

54、业大学合肥工业大学 软件工程实验室软件工程实验室1.基本概念o需求工程需求工程是对服务和约束的发现、分析、描述和检验的过程。o需求工程的4个高层通用过程:可行性研究需求导出和分析需求描述和文档编写需求有效性验证95合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求分析的涉众o合同监督人员,提出里程碑(Milestones)和约束系统开发进度的计划o需求者:客户(Customer)和使用者(User)。o开发者项项目目管管理理者者,必须理解建立和使用目标系统所可能产生的后果。系统分析员系统分析员,分析阶段活动的主体。设计员设计员,依据需求提出可接受的解决方案。测试员测试员,确保软件系统满

55、足每一需求。96合肥工业大学合肥工业大学 软件工程实验室软件工程实验室系统分析员应具有的素质o综合能力总体规划,抽象和分解,本质确认的能力o过程能力保证整个过程的善始善终的能力o交流能力理解和表达能力o技术水平了解问题域和描述解空间的能力97合肥工业大学合肥工业大学 软件工程实验室软件工程实验室应该足够重视需求分析o软件项目中40%60%的缺陷都是由需求分析阶段的过失所致(Daivs1993,Leffingwell1997)o对欧洲软件行业的大规模调查显示:确定和管理用户需求是问题最多的两个环节(ESPITI1995)o许多软件问题都源于收集、记录、协商和修改产品需求过程中的方式不当信息收集方

56、式不正规没有明确提出想要的功能常常存在未经沟通的错误假设需求的定义不够充分未经仔细考虑进行需求变更98合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.可行性研究o可行性研究的焦点问题包括系统是否符合机构的总体目标?系统是否能在现有条件和预算内按时完成?目标系统能与已经存在的其它系统集成?o软件可行性研究的任务技术可行性经济可行性社会可行性操作可行性99合肥工业大学合肥工业大学 软件工程实验室软件工程实验室可行性研究是高层的分析和设计100合肥工业大学合肥工业大学 软件工程实验室软件工程实验室可行性研究报告(1)引言(2)可行性研究前提(3)对现有系统的分析(4)所建议系统的技术可行性

57、分析(5)所建议系统的经济可行性分析(6)社会因素可行性分析(7)其它可供选择方案(8)结论意见101合肥工业大学合肥工业大学 软件工程实验室软件工程实验室3.需求导出和分析a)通过对现实环境的研究,获得系统具体模型。通过对现实环境的研究,获得系统具体模型。b)去掉具体模型的非本质因素,抽取出当前系统的逻辑模型去掉具体模型的非本质因素,抽取出当前系统的逻辑模型c)分析当前系统和目标系统的差别,建立目标系统的逻辑模型。分析当前系统和目标系统的差别,建立目标系统的逻辑模型。d)对目标系统进行完善和补充,写出完整的需求分析。对目标系统进行完善和补充,写出完整的需求分析。abcd102合肥工业大学合肥

58、工业大学 软件工程实验室软件工程实验室103合肥工业大学合肥工业大学 软件工程实验室软件工程实验室学生在学校教材科购买教材的系统的例子一、一、 通过对现实环境的研究,获得系统具体通过对现实环境的研究,获得系统具体物理模型物理模型购书购书发票发票购书单购书单书书购书购书证明证明购书购书申请申请学学生生学学生生李李保管保管孙孙出纳出纳钱钱会计会计赵赵秘书秘书104合肥工业大学合肥工业大学 软件工程实验室软件工程实验室学生在学校教材科购买教材的系统的例子二、二、 去掉具体模型的非本质因素,抽取出当前去掉具体模型的非本质因素,抽取出当前系系统的逻辑模型统的逻辑模型发票发票购书单购书单书书有效单有效单购

59、书单购书单学学生生学学生生发书发书开领开领书单书单开发开发票票有效有效性性105合肥工业大学合肥工业大学 软件工程实验室软件工程实验室学生在学校教材科购买教材的系统的例子三、三、 分析当前系统和目标系统的差别,分析当前系统和目标系统的差别,建立目标系统的逻辑模型。建立目标系统的逻辑模型。 发票发票购书单购书单书书购书单购书单学学生生学学生生发书发书开领开领书单书单审查并审查并开发票开发票106合肥工业大学合肥工业大学 软件工程实验室软件工程实验室学生在学校教材科购买教材的系统的例子四、四、 对目标系统进行完善和补充,写出完整对目标系统进行完善和补充,写出完整的需求说明。的需求说明。五、五、 对

60、需求说明进行复审,直到确认文档齐对需求说明进行复审,直到确认文档齐全并符合用户的全部需求为止。全并符合用户的全部需求为止。 无效书单无效书单发票发票购书单购书单购书单购书单学学生生学学生生开领开领书单书单审查并审查并开发票开发票107合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求阶段所要获取的主要内容需求阶段所要获取的主要内容1)1)物理环境物理环境( (Physical Environment)Physical Environment)2)2)接口接口( ( Interfaces)Interfaces)3)3)用户或人的因素用户或人的因素( (Factors)Factors)4)

61、4)功能功能( (Functionality)Functionality)5)5)文档文档( (Documentation)Documentation)6)6)数据数据( (Data)Data)7)7)资源资源( (Resources)Resources)8)8)安全性安全性( (Security)Security)9)9)质量保证质量保证( (Quality Assurance)Quality Assurance)108合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o设备的主要用途,在哪里发挥什么作用?o所须设置的设备的多少?o环境限制等,如温度、湿度或磁声干扰?1) 物理环境描述物

62、理环境描述(PhysicalEnvironment)109合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o来自一个或多个其他系统的输入?o对一个或多个其它系统的输出?o数据是否必须预先进行规定的格式化处理?o数据是否需要预先存放的介质?2) 接口描述(接口描述(Interface Description)110合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o谁使用系统?o有几种类型的用户?o每种类型用户的技术水平怎样?o对每型用户需要什么样的培训?o用户理解、使用系统的难易度怎样?o用户误用系统的困难程度怎样?3) 用户和人为因素用户和人为因素111合肥工业大学合肥工业大学 软

63、件工程实验室软件工程实验室o系统将做什么?o系统将在何时做?o有几种操作方式?o系统能在何时、怎样被改变或增强?o对执行速度,响应时间或数据流量有何限制和约束?4)功能描述功能描述(Function Description)112合肥工业大学合肥工业大学 软件工程实验室软件工程实验室5) 文档(文档(Documents)o需要多少文档?o是联机文档还是静态文档或者二者皆可?o文档所面向的对象(读者)?113合肥工业大学合肥工业大学 软件工程实验室软件工程实验室6)数据()数据(Data)oI/O数据格式应该是什么样的?o数据收或发的频度?o数据的精确度o系统流经的数据流量?o数据必须在何时予以

64、保存,保存多久?114合肥工业大学合肥工业大学 软件工程实验室软件工程实验室7) 资源描述(资源描述(Resource Description)o建立和维护系统都要什么材料、人员或其他资源?o开发者必须具有哪些技术?o系统占用多少物理空间?o对开发规定了时间表了?o对用于开发或软硬件上的资金有限制?115合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o对系统或信息的存取必须在我们的控制之下?o不同用户的数据之间将如何实现隔离?o不同用户程序之间,以及和操作系统间怎样隔离?o系统如何备份?o备份副本必须被存于一个不同的位置?o应采取措施防火,防水防盗等安全措施?8)安全描述)安全描述(S

65、ecurity)116合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o系统必须有效检测并隔离故障?o平均无故障时间规定为多少?o对一次失败后重启系统有一个最大时间?o系统如何将变化合并到设计?o维护仅仅是纠正错误,还是包括改进系统?o对资源和响应时间使用什么样的有效度量?o系统移植性、可维护性等要求?o如何向别人示范系统的特征?9)质量保证)质量保证(QualityAssurance)117合肥工业大学合肥工业大学 软件工程实验室软件工程实验室对需求说明书的要求o正确性o无二义性(需求确实是用户所需吗?)o完整性(完备性,包括用户需要的每一功能或性能)o一致性(需求之间不能互相矛盾)o

66、可检验性(非计算机人员可以理解)o可实现性(有效性,需求是能够现实的吗?硬件系统的支持力度怎样?)o可修改性o可跟踪性o注释118合肥工业大学合肥工业大学 软件工程实验室软件工程实验室4.需求规约的验证(1)o验证是为了确保需求说明准确、完整地表达必要的质量特点o审查需求文档o以需求为依据编写测试用例写出黑盒功能测试用例o编写用户手册要用浅显易懂的语言描述出所有对用户可见的功能o确定合格的标准119合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求规约的验证(2)验证的方法o复审和进一步需求分析o实现原型系统o支持需求分析工具验证的主要内容o一致性验证o现实性验证(需求是现实的吗?)o

67、完整性(完备性)和有效性验证120合肥工业大学合肥工业大学 软件工程实验室软件工程实验室5.需求管理o需求管理需求管理是对需求变更了解和控制的过程。o需求管理的任务是“与客户就软件需求达成并保持一致”(Paulk1995)o持久的需求与易变的需求持久的需求与易变的需求o一个变更管理过程由三个阶段一个变更管理过程由三个阶段问题分析和变更描述问题分析和变更描述变更分析和成本计算变更分析和成本计算变更实现变更实现121合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求管理活动需求管理活动o需求管理活动包括:需求管理活动包括:定义需求基线定义需求基线审查变更请求,评估可能产生的影响以决定是否批

68、准审查变更请求,评估可能产生的影响以决定是否批准以可控的方式将批准的变更融入项目中以可控的方式将批准的变更融入项目中保持项目计划与需求的同步保持项目计划与需求的同步基于对需求变更影响的估计协商新的需求约定基于对需求变更影响的估计协商新的需求约定跟踪每项需求(找到对应的设计、代码和测试用例)跟踪每项需求(找到对应的设计、代码和测试用例)在项目的开发过程中始终跟踪需求的状态和变更在项目的开发过程中始终跟踪需求的状态和变更122合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求需求需求需求变更变更变更变更需求开发与需求管理的分界需求开发与需求管理的分界分析、记录分析、记录分析、记录分析、记录

69、审阅、协商审阅、协商审阅、协商审阅、协商需求变更过程需求变更过程需求变更过程需求变更过程基线需求基线需求基线需求基线需求市场营销市场营销市场营销市场营销 客户客户客户客户 管理层管理层管理层管理层需求开发需求开发需求开发需求开发需求管理需求管理需求管理需求管理市场营销市场营销市场营销市场营销客户客户客户客户管理层管理层管理层管理层项目项目项目项目变更变更变更变更项目环境项目环境项目环境项目环境123合肥工业大学合肥工业大学 软件工程实验室软件工程实验室对项目需求状况作出快速评估(1)1)项目前景项目前景(vision)和范围和范围(scope)未曾明确定义未曾明确定义2)客户太忙,没时间与需求

70、分析和开发人员一起讨论需求客户太忙,没时间与需求分析和开发人员一起讨论需求3)用户代理(如开发经理、用户负责人、营销人员等)自用户代理(如开发经理、用户负责人、营销人员等)自诩可以代表用户,其实不能准确说出用户的要求诩可以代表用户,其实不能准确说出用户的要求4)需求只存在于那些所谓专家的脑子里,没有被记录下来需求只存在于那些所谓专家的脑子里,没有被记录下来5)客户坚持所有需求都很重要,不愿排出它们的优先次序客户坚持所有需求都很重要,不愿排出它们的优先次序6)开发人员在编码过程中发现需求有歧义,缺少足够的信开发人员在编码过程中发现需求有歧义,缺少足够的信息,只能去猜测息,只能去猜测124合肥工业

71、大学合肥工业大学 软件工程实验室软件工程实验室对项目需求状况作出快速评估(2)7)开发人员与客户沟通时只关心用户界面,忽略了用户需开发人员与客户沟通时只关心用户界面,忽略了用户需要用软件做什么要用软件做什么8)客户签字确认了需求却又一直提出修改要求客户签字确认了需求却又一直提出修改要求9)项目范围因接受需求变更而扩大,却没有相应地增加投项目范围因接受需求变更而扩大,却没有相应地增加投入或剪裁功能,进度因而被延误入或剪裁功能,进度因而被延误10)需求变更的请求被弄丢,开发人员和客户都不了解所有需求变更的请求被弄丢,开发人员和客户都不了解所有变更请求的状态变更请求的状态11)开发人员按照客户要求实

72、现的功能无人问津开发人员按照客户要求实现的功能无人问津12)需求规格说明中的要求都实现了客户却不满意需求规格说明中的要求都实现了客户却不满意125合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求工程o软件需求(第5章)o需求工程过程(第6章)o需求建模(第7章)o软件原型系统开发(第8章)o形式化描述(第9章)126合肥工业大学合肥工业大学 软件工程实验室软件工程实验室本章要回答的主要问题o系统上下文建模的重要性o行为建模、数据建模和对象建模oUML用于不同类型的系统模型oCASE工作平台是如何支持系统建模的127合肥工业大学合肥工业大学 软件工程实验室软件工程实验室3.系统模型o模

73、型模型是系统的抽象视图,它忽略了系统中的所有细节。o从不同的角度(外部、行为或结构)表达系统,形成不同类型的模型:上下文模型上下文模型、行为模型行为模型、结构模型结构模型。o上下文模型上下文模型(系统环境模型)表达系统在整个环境中与其它系统和过程的位置关系。如用例图模型是一种上下文模型。o状态机模型状态机模型用来描述系统的行为,以响应内部和外部的事件。它是一种行为模型行为模型。o结构模型结构模型包括体系结构模型和数据结构模型。128合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o数据流模型数据流模型用来描述数据是怎样一步步在处理序列中流动的,它不仅可以描述系统内的处理过程(行为),也能

74、够有效地描述系统的上下文。oE-R模型模型是一种最广泛使用的数据结构模型。数据结构模型。o对象建模对象建模在一定程度上是结构建模和行为建模的结合。UML已经被OMG认定为对象建模标准。129合肥工业大学合肥工业大学 软件工程实验室软件工程实验室HowtoExpressRequirements1)Staticdescriptions2)Dynamicdescriptions3)Object-orientedspecification4)FormalMethods130合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1)StaticDescriptionso数据流图、数据字典、加工说明等o判

75、定表( Decision Tables )o判定树oE-R模型o层次方框图、Warnier图、IPO图oUML中类图、包图131合肥工业大学合肥工业大学 软件工程实验室软件工程实验室WarnierDiagramsSoftwareproductsSystemApplicationOS(n1)Compiler(n2)Software ToolEditor(n3)Test driver(n4)CAD tool(n5)132合肥工业大学合肥工业大学 软件工程实验室软件工程实验室IPODiagramsOldmasterfilesOtherfilesInputProcessOutputVertifyPri

76、maryRecordVertifyOrtherRecordUpdaterecordValidPrimaryRecordValidOrtherRecordUpdatedfiles133合肥工业大学合肥工业大学 软件工程实验室软件工程实验室E-R模型(Entity-Relationship)o概念模型(E-R图)o逻辑模型(二维表的定义)o物理模型(存储空间的定义,如定义各个字段的大小)o数据库的设计一般应经过由概念模型到逻辑模型,再到物理模型的映射过程。134合肥工业大学合肥工业大学 软件工程实验室软件工程实验室数据结构的规范化o1970年,IBM的E.F.Godd提出关系模型,由二维表表示。o

77、按照属性间的依赖程度区分关系规范化的程度,由范式(Normal Form)来表示。1NF:表中不能有表(每个信息项必须是一个不可分割的数据项)2NF:非主属性由关键字唯一确定3NF:任何非主属性间不存在函数依赖,即非主属性相互独立。135合肥工业大学合肥工业大学 软件工程实验室软件工程实验室DecisionTablesRule1Rule2Rule3Rule4Rule5HighstandardizedexamscoresTFFFFHighgradesTFFFOutsideactivitiesTFFGoodrecommendationsTFSendrejectionletterXXXSendadm

78、issionformsXX136合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2)DynamicDescriptionsoFunctionalDescriptionsandTransitionDiagramsoEventTablesoPetriNets137合肥工业大学合肥工业大学 软件工程实验室软件工程实验室FunctionalDescriptionsState iState kCondition j138合肥工业大学合肥工业大学 软件工程实验室软件工程实验室TransitionDiagramsS iS kEvent or Condition Xoo状态迁移图是描述系统的状态如何响应

79、外部的信状态迁移图是描述系统的状态如何响应外部的信状态迁移图是描述系统的状态如何响应外部的信状态迁移图是描述系统的状态如何响应外部的信号进行推移的一种图形表示。号进行推移的一种图形表示。号进行推移的一种图形表示。号进行推移的一种图形表示。 圆圈圆圈圆圈圆圈“ “ ” ”表示可得到的系统状态表示可得到的系统状态表示可得到的系统状态表示可得到的系统状态 箭头箭头箭头箭头“ “” ”表示从一种状态向另一种状态的迁移。表示从一种状态向另一种状态的迁移。表示从一种状态向另一种状态的迁移。表示从一种状态向另一种状态的迁移。139合肥工业大学合肥工业大学 软件工程实验室软件工程实验室t1 t1 中断事件中断

80、事件中断事件中断事件t2 t2 中断已处理中断已处理中断已处理中断已处理t3 t3 分配分配分配分配CPUCPUt4 t4 用完用完用完用完CPUCPU时间时间时间时间当有多个申请占用当有多个申请占用当有多个申请占用当有多个申请占用CPUCPU运行的进程时运行的进程时运行的进程时运行的进程时, , 有关有关有关有关CPUCPU分配的进程的状态迁移分配的进程的状态迁移分配的进程的状态迁移分配的进程的状态迁移140合肥工业大学合肥工业大学 软件工程实验室软件工程实验室可得到的状态就绪,运行,等待可得到的状态就绪,运行,等待生成的事件生成的事件t1,t2, t3, t4 t1 中断事件,中断事件,t

81、2 中断已处理中断已处理 t3 分配分配CPU ,t4 用完用完CPU时间时间141合肥工业大学合肥工业大学 软件工程实验室软件工程实验室状态迁移图的优点oo状态之间的关系能够直观地捕捉到状态之间的关系能够直观地捕捉到状态之间的关系能够直观地捕捉到状态之间的关系能够直观地捕捉到oo由于状态迁移图的单纯性,能够机械地分析许多由于状态迁移图的单纯性,能够机械地分析许多由于状态迁移图的单纯性,能够机械地分析许多由于状态迁移图的单纯性,能够机械地分析许多情况,可很容易地建立分析工具情况,可很容易地建立分析工具情况,可很容易地建立分析工具情况,可很容易地建立分析工具142合肥工业大学合肥工业大学 软件工

82、程实验室软件工程实验室FenceDiagramshowingStateTransitions(Hotel reservations)(Null)RequestedOn waiting listConfirmedUsedCanceledArchive143合肥工业大学合肥工业大学 软件工程实验室软件工程实验室UseUMLtoRepresentOOoOMG(ObjectManagementGroup)haveadoptedUMLastheOOnotationalstandard.oUMLcanbeusedtovisualize,specify,ordocumentaproblem.oUMLcanb

83、eusedthroughoutthesoftwaredevelopmentprocess.144合肥工业大学合肥工业大学 软件工程实验室软件工程实验室UML由两大部分的组成ooUMLUMLUMLUML语义语义语义语义描述基于描述基于描述基于描述基于UMLUMLUMLUML的精确元模型定义。的精确元模型定义。的精确元模型定义。的精确元模型定义。元模型为元模型为元模型为元模型为UMLUMLUMLUML的所有元素在语法和语义上提供的所有元素在语法和语义上提供的所有元素在语法和语义上提供的所有元素在语法和语义上提供简单、一致和通用的定义性说明,使开发者在简单、一致和通用的定义性说明,使开发者在简单、一

84、致和通用的定义性说明,使开发者在简单、一致和通用的定义性说明,使开发者在语义上取得一致,消除了因人而异的表达方法语义上取得一致,消除了因人而异的表达方法语义上取得一致,消除了因人而异的表达方法语义上取得一致,消除了因人而异的表达方法所造成的影响。所造成的影响。所造成的影响。所造成的影响。UMLUMLUMLUML还支持对元模型的扩展定义。还支持对元模型的扩展定义。还支持对元模型的扩展定义。还支持对元模型的扩展定义。145合肥工业大学合肥工业大学 软件工程实验室软件工程实验室ooUMLUMLUMLUML表示法表示法表示法表示法定义定义定义定义UMLUMLUMLUML符号,为开发者或开发工具使用这符

85、号,为开发者或开发工具使用这符号,为开发者或开发工具使用这符号,为开发者或开发工具使用这些图形符号和文本语法进行系统建模提供标些图形符号和文本语法进行系统建模提供标些图形符号和文本语法进行系统建模提供标些图形符号和文本语法进行系统建模提供标准。准。准。准。这些图形符号和文字所表达的是应用级的模这些图形符号和文字所表达的是应用级的模这些图形符号和文字所表达的是应用级的模这些图形符号和文字所表达的是应用级的模型,在语法上它是型,在语法上它是型,在语法上它是型,在语法上它是UMLUMLUMLUML元模型的实例。元模型的实例。元模型的实例。元模型的实例。146合肥工业大学合肥工业大学 软件工程实验室软

86、件工程实验室UML的具体组成oo视图(视图(视图(视图(View)View)View)View)是表达系统的某一方面特征的是表达系统的某一方面特征的是表达系统的某一方面特征的是表达系统的某一方面特征的UMLUMLUMLUML建模元素的子集。建模元素的子集。建模元素的子集。建模元素的子集。视图由多个图构成,是在某一个抽象层上对系统的抽视图由多个图构成,是在某一个抽象层上对系统的抽视图由多个图构成,是在某一个抽象层上对系统的抽视图由多个图构成,是在某一个抽象层上对系统的抽象表示。象表示。象表示。象表示。oo图(图(图(图(Diagram)Diagram)Diagram)Diagram)模型元素集的

87、图形表示模型元素集的图形表示模型元素集的图形表示模型元素集的图形表示oo模型元素(模型元素(模型元素(模型元素(Model Element)Model Element)Model Element)Model Element)代表代表代表代表OOOOOOOO中的类、对象、消息和关系等概念,是构成图中的类、对象、消息和关系等概念,是构成图中的类、对象、消息和关系等概念,是构成图中的类、对象、消息和关系等概念,是构成图的最基本的常用概念。的最基本的常用概念。的最基本的常用概念。的最基本的常用概念。147合肥工业大学合肥工业大学 软件工程实验室软件工程实验室oo通用与扩展机制(通用与扩展机制(通用与扩

88、展机制(通用与扩展机制( General and Extension General and Extension General and Extension General and Extension Mechanism Mechanism Mechanism Mechanism )通用机制用于表示其他信息,比如注释、通用机制用于表示其他信息,比如注释、通用机制用于表示其他信息,比如注释、通用机制用于表示其他信息,比如注释、模型元素的语义等。模型元素的语义等。模型元素的语义等。模型元素的语义等。扩展机制使扩展机制使扩展机制使扩展机制使UMLUMLUMLUML能够适应某种特殊的方法,能够适应某种

89、特殊的方法,能够适应某种特殊的方法,能够适应某种特殊的方法,或扩充至一个组织或用户。或扩充至一个组织或用户。或扩充至一个组织或用户。或扩充至一个组织或用户。148合肥工业大学合肥工业大学 软件工程实验室软件工程实验室不同视角建模形成系统的不同视图oo用例视图(用例视图(用例视图(用例视图(Use Case ViewUse Case ViewUse Case ViewUse Case View)强调从用户的角度看到的或需要的系统功能。强调从用户的角度看到的或需要的系统功能。强调从用户的角度看到的或需要的系统功能。强调从用户的角度看到的或需要的系统功能。oo逻辑视图(逻辑视图(逻辑视图(逻辑视图(

90、Logical ViewLogical ViewLogical ViewLogical View)展现系统的静态或结构组成及特征,故又称为展现系统的静态或结构组成及特征,故又称为展现系统的静态或结构组成及特征,故又称为展现系统的静态或结构组成及特征,故又称为Structural Model ViewStructural Model ViewStructural Model ViewStructural Model View和和和和Static View.Static View.Static View.Static View.149合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o并发视图

91、(并发视图(Concurrent ViewConcurrent View)体现系统的动态或行为特征,故又称为体现系统的动态或行为特征,故又称为Behavioral Behavioral Model ViewModel View和和Dynamic View.Dynamic View.o组件视图(组件视图(Component ViewComponent View)体现系统的结构或行为特征,故又称为体现系统的结构或行为特征,故又称为Implementation Model View.Implementation Model View.o配置视图(配置视图(Deployment ViewDeploym

92、ent View)体现系统的实现环境的结构或行为特征,故又称为体现系统的实现环境的结构或行为特征,故又称为Environment Model ViewEnvironment Model View和和Physical View.Physical View.150合肥工业大学合肥工业大学 软件工程实验室软件工程实验室UMLdiagramsoStatic view is depicted withUse cases( (用例图用例图)Class diagrams(类图类图)Package diagrams( (包图包图)Deployment diagrams( (配置图配置图)151合肥工业大学合肥

93、工业大学 软件工程实验室软件工程实验室oDynamic view is depicted withState diagrams(状态图)状态图)Activity diagrams(活动图)活动图)Sequence diagrams(顺序图)(顺序图) Collaboration diagrams(合作图)(合作图)oRestrictions and formalizationBe expressed with OCL(object constraint language)152合肥工业大学合肥工业大学 软件工程实验室软件工程实验室UMLdiagramsoUsecasesDiagramoStat

94、icDiagramClassdiagramsPackagediagramsoBehaviorDiagramStatediagramsActivitydiagrams153合肥工业大学合肥工业大学 软件工程实验室软件工程实验室UMLdiagramsInteractive DiagramSequence diagrams Collaboration diagramsImplementation DiagramComponent diagramsDeployment diagrams154合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求工程o需求及需求工程概念(第5章)o需求工程过程(第6

95、章)o需求建模(第7章)o软件原型系统开发(第8章)o形式化描述(第9章)155合肥工业大学合肥工业大学 软件工程实验室软件工程实验室4.软件原型系统开发156合肥工业大学合肥工业大学 软件工程实验室软件工程实验室需求工程o需求及需求工程概念(第5章)o需求工程过程(第6章)o需求建模(第7章)o软件原型系统开发(第8章)o形式化描述(第9章)157合肥工业大学合肥工业大学 软件工程实验室软件工程实验室5.形式化描述158合肥工业大学合肥工业大学 软件工程实验室软件工程实验室高级软件工程一、软件工程概述二、软件需求三、软件设计四、检验和有效性验证方法五、软件进化六、软件项目管理七、Advanc

96、edTopicsinSoftwareEngineering159合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件设计软件设计o体系结构设计(第10章)o分布式系统体系结构(第11章)o面向对象的设计(第12章)o实时软件的设计(第13章)o使用复用的设计(第14章)o用户界面设计(第15章)160合肥工业大学合肥工业大学 软件工程实验室软件工程实验室本章要回答的主要问题o软件体系结构设计的重要性o可能用于系统体系结构的不同模型o一系列不同类型的软件体系结构o领域相关的体系结构怎样作为产品线体系结构的基础161合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构研究的主要

97、内容o软件体系结构建模软件体系结构建模o软件体系结构风格软件体系结构风格o软件体系结构描述软件体系结构描述o动态软件体系结构动态软件体系结构oWebWeb服务体系结构服务体系结构o基于体系结构的软件开发基于体系结构的软件开发o软件体系结构的分析与测试软件体系结构的分析与测试o软件体系结构评估软件体系结构评估o软件产品线体系结构软件产品线体系结构162合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构的研究背景(软件体系结构的研究背景(1 1)o随着软件系统规模越来越大、越来越复杂,整个随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。系统的结构和规格

98、说明显得越来越重要。o对于大规模的复杂软件系统来说,对总体的系统对于大规模的复杂软件系统来说,对总体的系统结构设计和规格说明比起对计算的算法和数据结结构设计和规格说明比起对计算的算法和数据结构的选择已经变得明显重要得多。构的选择已经变得明显重要得多。o对软件体系结构的系统、深入的研究将会成为提对软件体系结构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希高软件生产率和解决软件维护问题的新的最有希望的途径。望的途径。163合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构的研究背景(软件体系结构的研究背景(2 2)o事实上,软件总是有体系结构的,不存在没有体

99、事实上,软件总是有体系结构的,不存在没有体系结构的软件。系结构的软件。o软件体系结构虽脱胎于软件工程,但其形成同时软件体系结构虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法,最近几年软件体系结构研究已贵的思想和方法,最近几年软件体系结构研究已完全独立于软件工程的研究,成为计算机科学的完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。一个最新的研究方向和独立学科分支。 o系统体系结构影响性能、鲁棒性、分布能力、可系统体系结构影响性能、鲁棒性、分布能力、可维护行等非功能需求。反之,系统的结构

100、和风格维护行等非功能需求。反之,系统的结构和风格依赖于系统的非功能需求。依赖于系统的非功能需求。164合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构的研究背景(软件体系结构的研究背景(3 3)o性能性能,如果性能是关键性需求,那么体系结构的设计就要定位在少数几个子系统上的一些关键性操作上,这可能意味着系统使用较大粒度的组件。o保密性保密性,如果保密性是关键性需求,那么体系结构的分层设计,把重要资源放在内层,并且在每层采用严格的安全验证。o安全性安全性,如果安全性是关键性需求,那么体系结构的设计就要将与安全相关的操作集中子一个或少数几个子系统中,以减少安全有效性验证方面的问题

101、,降低成本,便于系统的保护。165合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构的研究背景(软件体系结构的研究背景(4 4)o可用性,如果可用性是关键性需求,那么体系结构的设计就要采用冗余性组件,以便组件的更新和替换(可能在不停止运行的情况下)。o可维护性,如果可维护性是关键性需求,那么体系结构的设计就要使用小粒度的自包含组件,以便于更换。这里,数据的共享方式以及松耦合结构尤为重要。o实际应用中,经常存在冲突,只能采用折中方案。冲突,只能采用折中方案。166合肥工业大学合肥工业大学 软件工程实验室软件工程实验室体系结构设计的一般过程体系结构设计的一般过程1.系统结构化系统结

102、构化,将系统分解成一系列基本子系统(是一个独立的软件单元),并识别它们之间的通信。2.控制建模控制建模,建立系统各部分之间控制关系的一般模型。3.模块分解模块分解,将子系统进一步分解成模块,并确定模块之间的关联。167合肥工业大学合肥工业大学 软件工程实验室软件工程实验室子系统、模块与构件子系统、模块与构件o首先,子系统子系统和模块模块之间没有明确的界线。o一个子系统子系统独立构成系统,不依赖其它子系统提供的服务。子系统由模块组成,要定义与其它子系统的接口。o模块模块通常是一个能够提供一个或多个服务的系统组件,一般不被看成一个独立的系统。o模块通常由许多其它更简单的组件组件组成。168合肥工业

103、大学合肥工业大学 软件工程实验室软件工程实验室构件(组件)构件(组件)o构件构件是指语义完整、语法正确和有可重用价值的单位软是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,件,是软件重用过程中可以明确辨识的系统;结构上,它是它是语义描述语义描述、通讯接口通讯接口和和实现代码实现代码的复合体。的复合体。169合肥工业大学合肥工业大学 软件工程实验室软件工程实验室构件模型的构件模型的三个主要流派三个主要流派oOMG(Object Management Group,对象管理集,对象管理集团)的团)的CORBA(Common Object Request B

104、roker Architecture,通用对象请求代理结构),通用对象请求代理结构)oSun的的EJB(Enterprise Java Bean)oMicrosoft的的DCOM(Distributed Component Object Model,分布式构件对象模型)。,分布式构件对象模型)。170合肥工业大学合肥工业大学 软件工程实验室软件工程实验室青鸟构件模型青鸟构件模型171合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构的定义(软件体系结构的定义(1 1)oDewayne Perry和和A1exander Wo1f软件体系结构是具有一定形式的结结构构化化元元素素,即

105、构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。172合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构的定义(软件体系结构的定义(2 2)oMary Shaw和和David Garlan软软件件体体系系结结构构是是软软件件设设计计过过程程中中的的一一个个层层次次,这这一一层层次次超越计算过程中的算法设计和数据结构设计。超越计算过程中的算法设计和数据结构设计。体体系系结结构构问问题题包包括括总总体体

106、组组织织和和全全局局控控制制、通通讯讯协协议议、同同步步、数数据据存存取取,给给设设计计元元素素分分配配特特定定功功能能,设设计计元元素素的的组组织织,规模和性能,在各设计方案间进行选择等。规模和性能,在各设计方案间进行选择等。软软件件体体系系结结构构处处理理算算法法与与数数据据结结构构之之上上关关于于整整体体系系统统结结构构设设计计和和描描述述方方面面的的一一些些问问题题,如如全全局局组组织织和和全全局局控控制制结结构构、关关于于通通讯讯、同同步步与与数数据据存存取取的的协协议议,设设计计构构件件功功能能定定义义,物物理分布与合成,设计方案的选择、评估与实现等。理分布与合成,设计方案的选择、

107、评估与实现等。173合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构的定义(软件体系结构的定义(3 3)oKruchten软件体系结构有四个角度,它们从不同方面对系统进行描述:概念概念角度描述系统的主要构件及它们之间的关系;模模块块角度包含功能分解与层次结构;运行运行角度描述了一个系统的动态结构;代码代码角度描述了各种代码和库函数在开发环境中的组织。oHayes Roth软件体系结构是一个抽象的系统规范,主要包括用其行软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。为来描述的功能构件和构件之间的相互连接、接口和关系。174合

108、肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构的定义(软件体系结构的定义(4 4)oDavid Garlan 和和 Dewne Perry软件体系结构是一个程序系统各构件的结构、它们之软件体系结构是一个程序系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间演化的指导方针。间的相互关系以及进行设计的原则和随时间演化的指导方针。oBarry Boehm软件体系结构包括一个软件和系统构件,互联及约束的软件体系结构包括一个软件和系统构件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这集合;一个系统需求说明的集合;一个基本原理用以说明这一构件,互联和约束能

109、够满足系统需求。一构件,互联和约束能够满足系统需求。175合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构的定义(软件体系结构的定义(5 5)oBass,Ctements 和和 Kazman软件体系结构包括一个或一组软件构件、软件构件的外软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,部的可见特性及其相互关系。其中,“软件外部的可见特性软件外部的可见特性”是指软件构件提供的服务、性能、特性、错误处理、共享是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。资源使用等。176合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系

110、结构的定义(软件体系结构的定义(6 6)o总之总之软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述构成系统的元素的描述、这这些元素的相互作用些元素的相互作用、指导元素集成的模式指导元素集成的模式以及这些模式的约束模式的约束组成。软件体系结构不仅指定了系统的组织结构组织结构和拓扑结构拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。177合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件体系结构风格软件体系结构风格o软件体系结构风格是描述某一特定应用领域中系统组织软件体系结构风格是描述某一特定应用领域中系统组织方式

111、的惯用模式。方式的惯用模式。o体系结构风格定义了一个系统家族,即一个体系结构定体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。接件组合起来的。o体系结构风格反映了领域中众多系统所共有的结构和语体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。一个完整的系统。178合肥工业大学合肥工

112、业大学 软件工程实验室软件工程实验室讨论体系结构风格时要回答的问题讨论体系结构风格时要回答的问题q构件和连接件的类型是什么?构件和连接件的类型是什么?q可容许的结构模式是什么?可容许的结构模式是什么?q基本的计算模型是什么?基本的计算模型是什么?q风格的基本不变性是什么?风格的基本不变性是什么?q其使用的常见例子是什么?其使用的常见例子是什么?q使用此风格的优缺点是什么?使用此风格的优缺点是什么?q其常见的特例是什么?其常见的特例是什么?179合肥工业大学合肥工业大学 软件工程实验室软件工程实验室经典的体系结构风格经典的体系结构风格o数据流风格:批处理序列;管道数据流风格:批处理序列;管道/

113、/过滤器。过滤器。o调用调用/ /返回风格:主程序返回风格:主程序/ /子程序;面向对象风格;层次子程序;面向对象风格;层次结构。结构。o独立构件风格:进程通讯;事件系统。独立构件风格:进程通讯;事件系统。o虚拟机风格:解释器;基于规则的系统。虚拟机风格:解释器;基于规则的系统。o仓库风格:数据库系统;超文本系统;黑板系统。仓库风格:数据库系统;超文本系统;黑板系统。oC/SC/S风格风格o三层三层C/SC/S风格风格oB/SB/S风格风格o180合肥工业大学合肥工业大学 软件工程实验室软件工程实验室管道和过滤器管道和过滤器o每个构件都有一组输入和输出,构件读输入的数据流,每个构件都有一组输入

114、和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。全消费之前,输出便产生了。o这里的构件被称为过滤器,这种风格的连接件就象是数这里的构件被称为过滤器,这种风格的连接件就象是数据流传输的管道,将一个过滤器的输出传到另一过滤器据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。的输入。181合肥工业大学合肥工业大学 软件工程实验室软件工程实验室管道和过滤器管道和过滤器182合肥工业大学合肥工业大学 软

115、件工程实验室软件工程实验室管道和过滤器风格的优点管道和过滤器风格的优点o使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;o允许设计者将整个系统的输入允许设计者将整个系统的输入/ /输出行为看成是多个过滤输出行为看成是多个过滤器的行为的简单合成;器的行为的简单合成;o支持软件重用。只要提供适合在两个过滤器之间传送的支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;数据,任何两个过滤器都可被连接起来;o系统维护和增强系统性能简单。新的过滤器可以添加到系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧

116、的可以被改进的过滤器替换掉;现有系统中来;旧的可以被改进的过滤器替换掉;o允许对一些如吞吐量、死锁等属性的分析;允许对一些如吞吐量、死锁等属性的分析;o支持并行执行。每个过滤器是作为一个单独的任务完成,支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。因此可与其它任务并行执行。183合肥工业大学合肥工业大学 软件工程实验室软件工程实验室管道和过滤器风格的缺点管道和过滤器风格的缺点o通常导致进程成为批处理的结构。这是因为虽然过滤器通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必可增量式地处理数据,但它们是独立的,所以设计者

117、必须将每个过滤器看成一个完整的从输入到输出的转换;须将每个过滤器看成一个完整的从输入到输出的转换;o不适合处理交互的应用。当需要增量地显示改变时,这不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重;个问题尤为严重;o因为在数据传输上没有通用的标准,每个过滤器都增加因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。并增加了编写过滤器的复杂性。184合肥工业大学合肥工业大学 软件工程实验室软件工程实验室数据抽象和面向对象组织数据抽象和面向对象组织o这种风格建立

118、在数据抽象和面向对象的基础上,数据的这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或表示方法和它们的相应操作封装在一个抽象数据类型或对象中。对象中。o这种风格的构件是对象,或者说是抽象数据类型的实例。这种风格的构件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的构件,因为它负责保持资源对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。的完整性。对象是通过函数和过程的调用来交互的。185合肥工业大学合肥工业大学 软件工程实验室软件工程实验室186合肥工业大学合肥工业大学 软件工程实验室软件工程

119、实验室面向对象系统的优点面向对象系统的优点o因为对象对其它对象隐藏它的表示,所以可以改变一个因为对象对其它对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其它的对象;对象的表示,而不影响其它的对象;o设计者可将一些数据存取操作的问题分解成一些交互的设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合。代理程序的集合。187合肥工业大学合肥工业大学 软件工程实验室软件工程实验室面向对象系统的缺点面向对象系统的缺点o为了使一个对象和另一个对象通过过程调用等进行交互,为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。只要一个对象的标识改变了,就必须知道对象的标识。

120、只要一个对象的标识改变了,就必须修改所有其他明确调用它的对象;必须修改所有其他明确调用它的对象;o必须修改所有显式调用它的其它对象,并消除由此带来必须修改所有显式调用它的其它对象,并消除由此带来的一些副作用。例如,如果的一些副作用。例如,如果A A使用了对象使用了对象B B,C C也使用了对也使用了对象象B B,那么,那么,C C对对B B的使用所造成的对的使用所造成的对A A的影响可能是料想的影响可能是料想不到的。不到的。188合肥工业大学合肥工业大学 软件工程实验室软件工程实验室基于事件的隐式调用基于事件的隐式调用o构件不直接调用一个过程,而是触发或广播一个或多个事构件不直接调用一个过程,

121、而是触发或广播一个或多个事件。系统中的其它构件中的过程在一个或多个事件中注册,件。系统中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。程的调用。o这种风格的构件是一些模块,模块既可以是一些过程,又这种风格的构件是一些模块,模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,

122、过可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。程被调用。o这种风格的主要特点是事件的触发者并不知道哪些构件会这种风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。含显式调用作为构件交互的补充形式。189合肥工业大学合肥工业大学 软件工程实验室软件工程实验室基于事件的隐式调用的优点基于事件的隐式调用的优点o为软件重用提供了强大的支持。当需要将一个构件加入

123、为软件重用提供了强大的支持。当需要将一个构件加入现存系统中时,只需将它注册到系统的事件中。现存系统中时,只需将它注册到系统的事件中。o为改进系统带来了方便。当用一个构件代替另一个构件为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响到其它构件的接口。时,不会影响到其它构件的接口。190合肥工业大学合肥工业大学 软件工程实验室软件工程实验室基于事件的隐式调用的缺点基于事件的隐式调用的缺点o构件放弃了对系统计算的控制。一个构件触发一个事件构件放弃了对系统计算的控制。一个构件触发一个事件时,不能确定其它构件是否会响应它。而且即使它知道时,不能确定其它构件是否会响应它。而且即使它知道事件注册

124、了哪些构件的构成,它也不能保证这些过程被事件注册了哪些构件的构成,它也不能保证这些过程被 调用的顺序。调用的顺序。o数据交换的问题。有时数据可被一个事件传递,但另一数据交换的问题。有时数据可被一个事件传递,但另一些情况下,基于事件的系统必须依靠一个共享的仓库进些情况下,基于事件的系统必须依靠一个共享的仓库进行交互。在这些情况下,全局性能和资源管理便成了问行交互。在这些情况下,全局性能和资源管理便成了问题。题。o既然过程的语义必须依赖于被触发事件的上下文约束,既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题。关于正确性的推理存在问题。191合肥工业大学合肥工业大学 软件工

125、程实验室软件工程实验室分层系统分层系统o层次系统组织成一个层次结构,每一层为上层服务,并层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻的层可见。这样的系的输出函数外,内部的层只对相邻的层可见。这样的系统中构件在一些层实现了虚拟机(在另一些层次系统中统中构件在一些层实现了虚拟机(在另一些层次系统中层是部分不透明的)。连接件通过决定层间如何交互的层是部分不透明的)。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。协议来定义,拓扑约束包括对相邻层间

126、交互的约束。o这种风格支持基于可增加抽象层的设计。允许将一个复这种风格支持基于可增加抽象层的设计。允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大许每层用不同的方法实现,同样为软件重用提供了强大的支持。的支持。192合肥工业大学合肥工业大学 软件工程实验室软件工程实验室分层系统分层系统193合肥工业大学合肥工业大学 软件工程实验室软件工程实验室分层系统的优点分层系统的优点o支持基于抽象程度递增

127、的系统设计,使设计者可以把一支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解;个复杂系统按递增的步骤进行分解;o支持功能增强,因为每一层至多和相邻的上下层交互,支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层;因此功能的改变最多影响相邻的上下层;o支持重用。只要提供的服务接口定义不变,同一层的不支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。口,而允许各种不同的实现方法。194合肥工业大学合肥工业大学 软件

128、工程实验室软件工程实验室分层系统的缺点分层系统的缺点o并不是每个系统都可以很容易地划分为分层的模式,甚并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;综合起来;o很难找到一个合适的、正确的层次抽象方法。很难找到一个合适的、正确的层次抽象方法。195合肥工业大学合肥工业大学 软件工程实验室软件工程实验室仓库系统及知识库仓库系统及知识库o在仓库风格中,有两种不同的构件:中央数据结构说明在仓库风格中,

129、有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存贮上执行,仓库与外当前状态,独立构件在中央数据存贮上执行,仓库与外构件间的相互作用在系统中会有大的变化。构件间的相互作用在系统中会有大的变化。o控制原则的选取产生两个主要的子类。若输入流中某类控制原则的选取产生两个主要的子类。若输入流中某类时间触发进程执行的选择,则仓库是一传统型数据库;时间触发进程执行的选择,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。选择,则仓库是一黑板系统。196合肥工业大学合肥工业大学 软件工程实验室软件工

130、程实验室仓库系统及知识库仓库系统及知识库197合肥工业大学合肥工业大学 软件工程实验室软件工程实验室C2C2风格风格o通过连接件绑定在一起的按照一组规则运作的并行构件通过连接件绑定在一起的按照一组规则运作的并行构件网络。网络。C2C2风格中的系统组织规则如下:风格中的系统组织规则如下:系统中的构件和连接件都有一个顶部和一个底部;系统中的构件和连接件都有一个顶部和一个底部;构件的顶部应连接到某连接件的底部,构件的底部则构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;连接是不允许的;一个连接件

131、可以和任意数目的其它构件和连接件连接;一个连接件可以和任意数目的其它构件和连接件连接;当两个连接件进行直接连接时,必须由其中一个的底当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。部到另一个的顶部。198合肥工业大学合肥工业大学 软件工程实验室软件工程实验室C2C2风格风格199合肥工业大学合肥工业大学 软件工程实验室软件工程实验室C2C2风格的特点风格的特点o系统中的构件可实现应用需求,并能将任意复杂度的功系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;能封装在一起;o所有构件之间的通讯是通过以连接件为中介的异步消息所有构件之间的通讯是通过以连接件为中介的异步消

132、息交换机制来实现的;交换机制来实现的;o构件相对独立,构件之间依赖性较少。系统中不存在某构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。控制线程之类的相关性假设。200合肥工业大学合肥工业大学 软件工程实验室软件工程实验室客户客户/ /服务器风格服务器风格产生背景o在集中式计算技术时代广泛使用的是大型机在集中式计算技术时代广泛使用的是大型机/ /小型机计算小型机计算模型。它是通过一台物理上与宿主机相连接的非智能终模型。它是通过一台物理上与宿主机相连接的非智能终端来实现宿主机

133、上的应用程序。端来实现宿主机上的应用程序。 o2020世纪世纪8080年代以后,集中式结构逐渐被以年代以后,集中式结构逐渐被以PCPC机为主的微机为主的微机网络所取代。个人计算机和工作站的采用,永远改变机网络所取代。个人计算机和工作站的采用,永远改变了协作计算模型,从而导致了分散的个人计算模型的产了协作计算模型,从而导致了分散的个人计算模型的产生。生。201合肥工业大学合肥工业大学 软件工程实验室软件工程实验室客户客户/ /服务器风格基本概念服务器风格基本概念oC/SC/S软件体系结构是基于资源不对等,且为实现共享而提软件体系结构是基于资源不对等,且为实现共享而提出来的,是出来的,是2020世

134、纪世纪9090年代成熟起来的技术,年代成熟起来的技术,C/SC/S体系结构体系结构定义了工作站如何与服务器相连,以实现数据和应用分定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。布到多个处理机上。oC/SC/S体系结构有三个主要组成部分:数据库服务器、客户体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。应用程序和网络。202合肥工业大学合肥工业大学 软件工程实验室软件工程实验室客户客户/ /服务器风格体系结构服务器风格体系结构203合肥工业大学合肥工业大学 软件工程实验室软件工程实验室C/SC/S风格的任务风格的任务分配分配o服务器服务器(1 1)数据库安全性的

135、要求;)数据库安全性的要求;(2 2)数据库访问并发性的控制;)数据库访问并发性的控制;(3 3)数据库前端的客户应用程序的全局数据完整性规则)数据库前端的客户应用程序的全局数据完整性规则(4 4)数据库的备份与恢复。)数据库的备份与恢复。o客户应用程序客户应用程序(1 1)提供用户与数据库交互的界面;)提供用户与数据库交互的界面;(2 2)向向数数据据库库服服务务器器提提交交用用户户请请求求并并接接收收来来自自数数据据库库服服务务器的信息;器的信息;(3 3)利利用用客客户户应应用用程程序序对对存存在在于于客客户户端端的的数数据据执执行行应应用用逻逻辑要求。辑要求。204合肥工业大学合肥工业

136、大学 软件工程实验室软件工程实验室C/SC/S结构的处理流程结构的处理流程205合肥工业大学合肥工业大学 软件工程实验室软件工程实验室C/SC/S风格之优点风格之优点oC/S C/S 体系结构具有强大的数据操作和事务处理能力,模体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。型思想简单,易于人们理解和接受。o系统的客户应用程序和服务器构件分别运行在不同的计系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,这对于硬件和软件的变

137、化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。而且易于对系统进行扩充和缩小。o在在C/SC/S体系结构中,系统中的功能构件充分隔离,客户应体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个程序中都要对一个DBMSDBMS进行编码。将大的应用处理任务进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大分布到许多通过网络连接的低成本计算机上,以节约大量费用。量费

138、用。206合肥工业大学合肥工业大学 软件工程实验室软件工程实验室C/SC/S风格之缺点风格之缺点o开发成本较高开发成本较高o客户端程序设计复杂客户端程序设计复杂o信息内容和形式单一信息内容和形式单一o用户界面风格不一,使用繁杂,不利于推广使用用户界面风格不一,使用繁杂,不利于推广使用o软件移植困难软件移植困难o软件维护和升级困难软件维护和升级困难o新技术不能轻易应用新技术不能轻易应用207合肥工业大学合肥工业大学 软件工程实验室软件工程实验室三层客户三层客户/ /服务器风格体系结构服务器风格体系结构208合肥工业大学合肥工业大学 软件工程实验室软件工程实验室三层三层C/SC/S风格处理流程风格

139、处理流程209合肥工业大学合肥工业大学 软件工程实验室软件工程实验室三层三层C/SC/S风格物理结构风格物理结构210合肥工业大学合肥工业大学 软件工程实验室软件工程实验室三层三层C/SC/S之优点之优点o允许合理地划分三层结构的功能,使之在逻辑上保持相对独允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。立性,能提高系统和软件的可维护性和可扩展性。o允许更灵活有效地选用相应的平台和硬件系统,使之在处理允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且负荷能力上与处理特性上分别适应于结构清晰的三

140、层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。这些平台和各个组成部分可以具有良好的可升级性和开放性。o应用的各层可以并行开发,可以选择各自最适合的开发语言。应用的各层可以并行开发,可以选择各自最适合的开发语言。o利用功能层有效地隔离开表示层与数据层,未授权的用户难利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础。据层,为严格的安全管理奠定了坚实的基础。211合肥工业大学合肥工业大学 软件工程实验室软件工程实验室三层三层C/SC/S要注

141、意的问题要注意的问题o三层三层C/SC/S结构各层间的通信效率若不高,即使分配给各层结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性的硬件能力很强,其作为整体来说也达不到所要求的性能。能。o设计时必须慎重考虑三层间的通信方法、通信频度及数设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层据量。这和提高各层的独立性一样是三层C/SC/S结构的关键结构的关键问题。问题。212合肥工业大学合肥工业大学 软件工程实验室软件工程实验室浏览器浏览器/ /服务器风格服务器风格o浏览器浏览器/ /服务器(服务器(B/SB/S)风格就是

142、上述三层应用结构的一种)风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器实现方式,其具体结构为:浏览器/Web/Web服务器服务器/ /数据库服数据库服务器。务器。oB/SB/S体系结构主要是利用不断成熟的体系结构主要是利用不断成熟的WWWWWW浏览器技术,结合浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。复杂的专用软件才能实现的强大功能,并节约了开发成本。从某种程度上来说,从某种程度上来说,B/SB/S结构是一种全新的软件体系结构。结构是一种全新的软件体系结构

143、。213合肥工业大学合肥工业大学 软件工程实验室软件工程实验室B/SB/S风格之体系结构风格之体系结构214合肥工业大学合肥工业大学 软件工程实验室软件工程实验室B/SB/S风格之优点风格之优点o基于基于B/SB/S体系结构的软件,系统安装、修改和维护全在服体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了就可运行全部的模块,真正达到了“零客户端零客户端”的功能,的功能,很容易在运行时自动升级。很容易在运行时自动升级。oB/SB/S体系结构还提供了异种机、异种网、异种应用服务的

144、体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。联机、联网、统一服务的最现实的开放性基础。215合肥工业大学合肥工业大学 软件工程实验室软件工程实验室B/SB/S风格之缺点风格之缺点oB/SB/S体系结构缺乏对动态页面的支持能力,没有集成有效体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。的数据库处理功能。oB/SB/S体系结构的系统扩展能力差,安全性难以控制。体系结构的系统扩展能力差,安全性难以控制。o采用采用B/SB/S体系结构的应用系统,在数据查询等响应速度上,体系结构的应用系统,在数据查询等响应速度上,要远远地低于要远远地低于C/

145、SC/S体系结构。体系结构。oB/SB/S体系结构的数据提交一般以页面为单位,数据的动态体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理交互性不强,不利于在线事务处理(OLTP)(OLTP)应用。应用。216合肥工业大学合肥工业大学 软件工程实验室软件工程实验室公共对象请求代理体系结构之对象管理结构公共对象请求代理体系结构之对象管理结构217合肥工业大学合肥工业大学 软件工程实验室软件工程实验室CORBACORBA技术规范技术规范o接口定义语言(接口定义语言(IDLIDL)o接口池(接口池(IRIR)o动态调用接口(动态调用接口(DIIDII)o对象适配器(对象适配

146、器(OAOA)218合肥工业大学合肥工业大学 软件工程实验室软件工程实验室CORBACORBA技术规范技术规范o接口定义语言接口定义语言CORBACORBA利用利用IDLIDL统一地描述服务器对象(向调用者提供服务统一地描述服务器对象(向调用者提供服务的对象)的接口。的对象)的接口。IDLIDL本身也是面向对象的。它虽然不是编本身也是面向对象的。它虽然不是编程语言,但它为客户对象(发出服务请求的对象)提供了程语言,但它为客户对象(发出服务请求的对象)提供了语言的独立性,因为客户对象只需了解服务器对象的语言的独立性,因为客户对象只需了解服务器对象的IDLIDL接接口,不必知道其编程语言。口,不必

147、知道其编程语言。IDLIDL语言是语言是CORBACORBA规范中定义的一种中性语言,它用来描述规范中定义的一种中性语言,它用来描述对象的接口,而不涉及对象的具体实现。对象的接口,而不涉及对象的具体实现。在在CORBACORBA中定义了中定义了IDLIDL语言到语言到C C、C+C+、SmallTalkSmallTalk和和JavaJava语言语言的映射。的映射。219合肥工业大学合肥工业大学 软件工程实验室软件工程实验室CORBACORBA技术规范技术规范o接口池接口池CORBACORBA的接口池包括了分布计算环境中所有可用的服的接口池包括了分布计算环境中所有可用的服务器对象的接口表示。它使

148、动态搜索可用服务器的接务器对象的接口表示。它使动态搜索可用服务器的接口、动态构造请求及参数成为可能。口、动态构造请求及参数成为可能。220合肥工业大学合肥工业大学 软件工程实验室软件工程实验室CORBACORBA技术规范技术规范o 动态调用接口动态调用接口CORBACORBA的动态调用接口提供了一些标准函数以供客户对的动态调用接口提供了一些标准函数以供客户对象动态创建请求、动态构造请求参数。客户对象将动态调象动态创建请求、动态构造请求参数。客户对象将动态调用接口与接口池配合使用可实现服务器对象接口的动态搜用接口与接口池配合使用可实现服务器对象接口的动态搜索、请求及参数的动态构造与动态发送。当然

149、,只要客户索、请求及参数的动态构造与动态发送。当然,只要客户对象在编译之前能够确定服务器对象的对象在编译之前能够确定服务器对象的IDLIDL接口,接口,CORBACORBA也也允许客户对象使用静态调用机制。显然,静态机制的灵活允许客户对象使用静态调用机制。显然,静态机制的灵活性虽不及动态机制,但执行效率却胜过动态机制。性虽不及动态机制,但执行效率却胜过动态机制。在在CORBACORBA中,对象适配器用于屏蔽中,对象适配器用于屏蔽ORBORB内核的实现细节,内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用为服务器对象的实现者提供抽象接口,以便他们使用ORBORB内部的某些功能。这些

150、功能包括服务器对象的登录与激活、内部的某些功能。这些功能包括服务器对象的登录与激活、客户请求的认证等。客户请求的认证等。221合肥工业大学合肥工业大学 软件工程实验室软件工程实验室CORBACORBA体系体系结构结构222合肥工业大学合肥工业大学 软件工程实验室软件工程实验室CORBACORBA体系结构特点体系结构特点o引入中间件作为事务代理,完成客户机向服务对象方引入中间件作为事务代理,完成客户机向服务对象方(ServerServer)提出的业务请求。)提出的业务请求。o实现客户与服务对象的完全分开,客户不需要了解服务实现客户与服务对象的完全分开,客户不需要了解服务对象的实现过程以及具体位置

151、。对象的实现过程以及具体位置。o提供软总线机制,使得在任何环境下、采用任何语言开提供软总线机制,使得在任何环境下、采用任何语言开发的软件只要符合接口规范的定义,均能够集成到分布发的软件只要符合接口规范的定义,均能够集成到分布式系统中。式系统中。oCORBACORBA规范软件系统采用面向对象的软件实现方法开发应规范软件系统采用面向对象的软件实现方法开发应用系统,实现对象内部细节的完整封装,保留对象方法用系统,实现对象内部细节的完整封装,保留对象方法的对外接口定义。的对外接口定义。223合肥工业大学合肥工业大学 软件工程实验室软件工程实验室正交软件体系结构正交软件体系结构o正交软件体系结构由正交软

152、件体系结构由组织层组织层和和线索线索的构件构成。层是由的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。关联很少,在同一层中的构件之间是不存在相互调用的。o如果线索是相互独立的,即不同线索中的构件之

153、间没有如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。相互调用,那么这个结构就是完全正交的。224合肥工业大学合肥工业大学 软件工程实验室软件工程实验室正交软件体系结构框架正交软件体系结构框架225合肥工业大学合肥工业大学 软件工程实验室软件工程实验室正交软件体系特征正交软件体系特征o正交软件体系结构由完成不同功能的正交软件体系结构由完成不同功能的n n(n 1n 1)个线索)个线索(子系统)组成;(子系统)组成;o系统具有系统具有m m(m 1m 1)个不同抽象级别的层;)个不同抽象级别的层;o线索之间是相互独立的(正交的);线索之间是相互独立的(正交的

154、);o系统有一个公共驱动层(一般为最高层)和公共数据结系统有一个公共驱动层(一般为最高层)和公共数据结构(一般为最低层)。构(一般为最低层)。226合肥工业大学合肥工业大学 软件工程实验室软件工程实验室正交软件体系之优点正交软件体系之优点o结构清晰,易于理解。由于线索功能相互独立,不进行结构清晰,易于理解。由于线索功能相互独立,不进行互相调用,结构简单、清晰,构件在结构图中的位置已互相调用,结构简单、清晰,构件在结构图中的位置已经说明它所实现的是哪一级抽象,担负的是什么功能。经说明它所实现的是哪一级抽象,担负的是什么功能。o易修改,可维护性强。由于线索之间是相互独立的,所易修改,可维护性强。由

155、于线索之间是相互独立的,所以对一个线索的修改不会影响到其他线索。系统功能的以对一个线索的修改不会影响到其他线索。系统功能的增加或减少,只需相应的增删线索构件族,而不影响整增加或减少,只需相应的增删线索构件族,而不影响整个正交体系结构,因此能方便地实现结构调整。个正交体系结构,因此能方便地实现结构调整。o可移植性强,重用粒度大。因为正交结构可以为一个领可移植性强,重用粒度大。因为正交结构可以为一个领域内的所有应用程序所共享,这些软件有着相同或类似域内的所有应用程序所共享,这些软件有着相同或类似的层次和线索,可以实现体系结构级的重用。的层次和线索,可以实现体系结构级的重用。227合肥工业大学合肥工

156、业大学 软件工程实验室软件工程实验室基于层次消息总线的体系结构基于层次消息总线的体系结构228合肥工业大学合肥工业大学 软件工程实验室软件工程实验室HMB风格的构件模型风格的构件模型229合肥工业大学合肥工业大学 软件工程实验室软件工程实验室HMB风格的构件接口风格的构件接口oHMBHMB风格的构件接口是一种基于消息的互联接口,可以较风格的构件接口是一种基于消息的互联接口,可以较好地支持体系结构设计。构件之间通过消息进行通讯,好地支持体系结构设计。构件之间通过消息进行通讯,接口定义了构件发出和接收的消息集合。接口定义了构件发出和接收的消息集合。o当某个事件发生后,系统或构件发出相应的消息,消息

157、当某个事件发生后,系统或构件发出相应的消息,消息总线负责把该消息传递到此消息感兴趣的构件。总线负责把该消息传递到此消息感兴趣的构件。o按照响应方式的不同,消息可分为同步消息和异步消息。按照响应方式的不同,消息可分为同步消息和异步消息。230合肥工业大学合肥工业大学 软件工程实验室软件工程实验室HMB风格的消息总线风格的消息总线231合肥工业大学合肥工业大学 软件工程实验室软件工程实验室HMB风格的风格的构件构件静态结构静态结构232合肥工业大学合肥工业大学 软件工程实验室软件工程实验室HMB风格的风格的构件构件动态行为动态行为o构件的行为就由外来消息的类型唯一确定,即一个消息构件的行为就由外来

158、消息的类型唯一确定,即一个消息和构件的某个操作之间存在着固定的对应关系。对于这和构件的某个操作之间存在着固定的对应关系。对于这类构件,可以认为构件只有一个状态,或者在每次对消类构件,可以认为构件只有一个状态,或者在每次对消息响应之前,构件处于初始状态。息响应之前,构件处于初始状态。o更通常的情况是,构件的行为同时受外来消息类型和自更通常的情况是,构件的行为同时受外来消息类型和自身当前所处状态的影响。身当前所处状态的影响。233合肥工业大学合肥工业大学 软件工程实验室软件工程实验室运行时刻的系统演化运行时刻的系统演化o动态增加或删除构件动态增加或删除构件o动态改变构件响应的消息类型动态改变构件响

159、应的消息类型o消息过滤消息过滤234合肥工业大学合肥工业大学 软件工程实验室软件工程实验室异构结构风格异构结构风格o为什么使用异构体系风格?为什么使用异构体系风格?不同的结构有不同的处理能力的强项和弱点,一个系统不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问的体系结构应该根据实际需要进行选择,以解决实际问题。题。关于软件包、框架、通信以及其他一些体系结构上的问关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。即使在某段时间内某一种标准题,目前存在多种标准。即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。占统治地位,

160、但变动最终是绝对的。实际工作中,我们总会遇到一些遗留下来的代码,它们实际工作中,我们总会遇到一些遗留下来的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。然仍有效用,但是却与新系统有某种程度上的不协调。然而在许多场合,将技术与经济综合进行考虑时,总是决而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。定不再重写它们。即使在某一单位中,规定了共享共同的软件包或相互关即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。系的一些标准,仍会存在解释或表示习惯上的不同。235合肥工业大学合肥工业大学 软件工程实验室软件工程实验室C/SC/S

161、与与B/SB/S混合之内外有别模型混合之内外有别模型236合肥工业大学合肥工业大学 软件工程实验室软件工程实验室C/SC/S与与B/SB/S混合之查改有别模型混合之查改有别模型237合肥工业大学合肥工业大学 软件工程实验室软件工程实验室异构实例异构实例238合肥工业大学合肥工业大学 软件工程实验室软件工程实验室特定领域软件体系结构特定领域软件体系结构oHayes-RothHayes-Roth对对DSSADSSA的定义如下的定义如下:“DSSA:“DSSA就是专用于一类特就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造

162、应用系统限定了标准的组合结构的软件的、为成功构造应用系统限定了标准的组合结构的软件构件的集合构件的集合”。oTraczTracz的定义为:的定义为:“DSSA“DSSA就是一个特定的问题领域中支持就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应的开发基础,其目标就是支持在一个特定领域中多个应用的生成用的生成”。239合肥工业大学合肥工业大学 软件工程实验室软件工程实验室o特定领域有垂直域垂直域和水平域水平域之分o垂直域:定义了一个特定的系统族,包含整个系统族内垂直域:定义

163、了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构。方案的一个通用软件体系结构。o水平域:定义了在多个系统和多个系统族中功能区域的水平域:定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统族的特定部分功共有部分,在子系统级上涵盖多个系统族的特定部分功能,无法为系统提供完整的通用体系结构。能,无法为系统提供完整的通用体系结构。240合肥工业大学合肥工业大学 软件工程实验室软件工程实验室领域分析领域分析241合肥工业大学合肥工业大学 软件工程实验室软件工程实验室建立过

164、程建立过程o定义领域范围:确定什么在感兴趣的领域中以及本过程定义领域范围:确定什么在感兴趣的领域中以及本过程到何时结束。到何时结束。o定义领域特定的元素:编译领域字典和领域术语的同义定义领域特定的元素:编译领域字典和领域术语的同义词词典。识别领域中应用间的共同性和差异性;词词典。识别领域中应用间的共同性和差异性;o定义领域特定的设计和实现需求约束:描述解空间中有定义领域特定的设计和实现需求约束:描述解空间中有差别的特性。不仅要识别出约束,并且要记录约束对设差别的特性。不仅要识别出约束,并且要记录约束对设计和实现决定造成的后果,还要记录对处理这些问题时计和实现决定造成的后果,还要记录对处理这些问

165、题时产生的所有问题的讨论;产生的所有问题的讨论;o定义领域模型和体系结构:产生一般的体系结构,并说定义领域模型和体系结构:产生一般的体系结构,并说明构成它们的模块或构件的语法和语义;明构成它们的模块或构件的语法和语义;o产生、搜集可重用的产品单元:为产生、搜集可重用的产品单元:为DSSADSSA增加构件使得它增加构件使得它可以被用来产生问题域中的新应用。可以被用来产生问题域中的新应用。242合肥工业大学合肥工业大学 软件工程实验室软件工程实验室DSSADSSA三层次系统模型三层次系统模型243合肥工业大学合肥工业大学 软件工程实验室软件工程实验室DSSADSSA和体系结构风格的比较和体系结构风

166、格的比较oDSSADSSA以问题域为出发点,体系结构风格以解决域为出发以问题域为出发点,体系结构风格以解决域为出发点。点。oDSSADSSA只对某一个领域进行设计专家知识的提取、存储和只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种体系结构风格;而在某个体组织,但可以同时使用多种体系结构风格;而在某个体系结构风格中进行体系结构设计专家知识的组织时,可系结构风格中进行体系结构设计专家知识的组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。以将提取的公共结构和设计方法扩展到多个应用领域。oDSSADSSA通常选用一个或多个适合所研究领域的体系结构风通常选用一个或多个适合

167、所研究领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。格,并设计一个该领域专用的体系结构分析设计工具。o体系结构风格的定义和该风格应用的领域是直交的,提体系结构风格的定义和该风格应用的领域是直交的,提取的设计知识比用取的设计知识比用DSSADSSA提取的设计专家知识的应用范围提取的设计专家知识的应用范围要广。要广。oDSSADSSA和体系结构风格是互为补充的两种技术。和体系结构风格是互为补充的两种技术。244合肥工业大学合肥工业大学 软件工程实验室软件工程实验室思考题思考题1 1、层次系统结构和基于消息的层次系统结构有什么区别?、层次系统结构和基于消息的层次系统结构有什么区别?

168、2 2、试试分分析析和和比比较较B/SB/S,二二层层C/SC/S和和三三层层C/SC/S,指指出出各各自自的的优优点点和缺点。和缺点。3 3、组组织织或或参参与与一一个个采采用用B/SB/S和和C/SC/S混混合合体体系系结结构构的的软软件件项项目目的开发,总结开发经验。的开发,总结开发经验。4 4、组组织织或或参参与与一一个个采采用用三三层层体体系系结结构构的的软软件件项项目目的的开开发发,总结开发经验。总结开发经验。5 5、在在软软件件开开发发中中,采采用用异异构构结结构构有有什什么么好好处处,其其负负面面影影响响有哪些?有哪些?245合肥工业大学合肥工业大学 软件工程实验室软件工程实验

169、室软件设计软件设计o体系结构设计(第10章)o分布式系统体系结构(第11章)o面向对象的设计(第12章)o实时软件的设计(第13章)o使用复用的设计(第14章)o用户界面设计(第15章)246合肥工业大学合肥工业大学 软件工程实验室软件工程实验室本章要回答的主要问题o分布式体系结构的优点和缺点oC/S体系结构开发的不同方法oC/S体系结构与分布式对象体系结构的区别o对象请求代理概念和CORBA标准的基本原理247合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件设计软件设计o体系结构设计(第10章)o分布式系统体系结构(第11章)o面向对象的设计(第12章)o实时软件的设计(第13章)

170、o使用复用的设计(第14章)o用户界面设计(第15章)248合肥工业大学合肥工业大学 软件工程实验室软件工程实验室本章要回答的主要问题o为什么软件设计可以表现成一组交互的对象,这些对象管理自己的状态和操作o在一般的面向对象的设计过程中最重要的活动o可能用于面向对象设计的各种模型o这些模型的UML表示249合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件设计软件设计o体系结构设计(第10章)o分布式系统体系结构(第11章)o面向对象的设计(第12章)o实时软件的设计(第13章)o使用复用的设计(第14章)o用户界面设计(第15章)250合肥工业大学合肥工业大学 软件工程实验室软件工程实

171、验室本章要回答的主要问题o复用软件组件的好处以及在复用中可能出现的问题o可以复用的不同类型的组件和不同的复用设计过程o应用系列(产品线)的概念,了解应用系列为什么是一种有效的复用软件的方法o在面向对象开发中,为什么模式是提升设计复用的高层抽象251合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件设计软件设计o体系结构设计(第10章)o分布式系统体系结构(第11章)o面向对象的设计(第12章)o实时软件的设计(第13章)o使用复用的设计(第14章)o用户界面设计(第15章)252合肥工业大学合肥工业大学 软件工程实验室软件工程实验室本章要回答的主要问题o系统上下文建模的重要性o行为建模

172、、数据建模和对象建模oUML用于不同类型的系统模型oCASE工作平台是如何支持系统建模的253合肥工业大学合肥工业大学 软件工程实验室软件工程实验室高级软件工程一、软件工程概述二、软件需求三、软件设计四、检验和有效性验证方法五、软件进化六、软件项目管理七、AdvancedTopicsinSoftwareEngineering254合肥工业大学合肥工业大学 软件工程实验室软件工程实验室高级软件工程一、软件工程概述二、软件需求三、软件设计四、检验和有效性验证方法五、软件进化六、软件项目管理七、AdvancedTopicsinSoftwareEngineering255合肥工业大学合肥工业大学 软件

173、工程实验室软件工程实验室高级软件工程一、软件工程概述二、软件需求三、软件设计四、检验和有效性验证方法五、软件进化六、软件项目管理七、AdvancedTopicsinSoftwareEngineering256合肥工业大学合肥工业大学 软件工程实验室软件工程实验室高级软件工程一、软件工程概述二、软件需求三、软件设计四、检验和有效性验证方法五、软件进化六、软件项目管理七、AdvancedTopicsinSoftwareEngineering257合肥工业大学合肥工业大学 软件工程实验室软件工程实验室AdvancedTopicsoFormalMethodsoCleanroomsoftwareEngi

174、neeringoComponent-Based DevelopmentoReengineeringoApplyingWebEngineeringoTheroadAhead258合肥工业大学合肥工业大学 软件工程实验室软件工程实验室Component-based Software Engineering1、软件构件技术、软件构件技术2、基于构件的软件工程、基于构件的软件工程3、基于构件的软件工程目前主要研究方向、基于构件的软件工程目前主要研究方向及相关领域介绍及相关领域介绍259合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.1 软件构件的定义o软件构件构件,简称为软构件或构件(com

175、ponent)是应用系统中可以被明确识别的构成成分。o构件构件是在软件复用技术发展过程中,为满足软件复用的需要而产生一种新概念。o构件构件既可以是源代码片断、子程序,也可以是被封装函数,类,功能模块,软件框架等基本元素。260合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.1 软件构件的定义几种有代表性的构件的定义o世界上首位软件构件专著作者Szyperski将构件定义为:“一个可以被独立部署,由第三方组装的单元;它有规范的接口和明确的依赖环境”。o卡内基.梅隆大学软件工程研究所(CMU/SEI)认为:“软件构件是一个不透明的功能实现,能够被第三方组装,符合一个特定的模型”。o我国杨

176、芙清院士认为:“构件是软件的构成元素,具有一定的功能和结构,并符合一定的标准,可以完成一个或多个特定的服务”。261合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.1 软件构件的定义上述关于构件定义的共同点:构件符合特定规范,具有规范的接口和完整的约束;构件实现了特定的功能;构件是可复用的软件单元;构件具有跨平台性,不依赖于特定的开发语言。262合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.1 软件构件的定义构件的特征属性:有用性(Usefulness):提供有用的功能;可用性(Usability):易于理解和使用;质量(Quality):必须能够正常的工作;适应性(Ad

177、aptability):易于通过参数在不同的语境中进行配置;可移植性(Portability):能在不同的硬件与软件环境中工作。263合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.2 软件构件的模型n构件模型是对现实构件的抽象,是对构件本质的描述。n根据构件的生产、管理和复用三个方面关注度的不同可以将构件分为3类。与构件部署/实现相关的模型与构件规约/组装相关的模型与构件分类/描述相关的模型264合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.2 软件构件的模型与构件部署/实现相关的模型构件开发者和使用者遵循特定的标准和规定;例如:构件的管理方式、部署方式、组装方式等。构

178、件以某种可以直接使用的形式存在;构件的接口和实体是分离的,复用程度高;具有代表性的有OMG的CORBA,SUN的EJB和微软的COM/DCOM模型等。265合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.2 软件构件的模型与构件规约/组装相关的模型以描述构件的功能规约为主要目标;通过配置构件的规约来形成系统;在设计层次上对构件进行组装;具有代表性的有3C模型,RESOLVE模型。目前学术界普遍认同的构件模型 266合肥工业大学合肥工业大学 软件工程实验室软件工程实验室3C模型(concept,content,context)3C模型从概念、内容和语境三个方面描述构件:概念对于“构件做

179、什么”进行了抽象描述,可以通过概念去理解构件的功能,概念包括接口规约和语义描述两个部分;内容是概念的具体实现,它描述了构件如何完成概念所刻画的功能;语境描述了构件和外围环境在概念级和内容级的关系,语境刻画构件的应用环境。267合肥工业大学合肥工业大学 软件工程实验室软件工程实验室3C模型3C模型的语境可分为:概念级语境:描述构件间接口和语义方面的关系操作级语境:刻画构件中被操作数据的特征(如类型和操作)实现级语境:描述构件间在实现方面的依赖关系268合肥工业大学合肥工业大学 软件工程实验室软件工程实验室1.2 软件构件的模型与构件分类/描述相关的模型以综合方式描述构件;构件易于被用户理解;在构

180、件库中可以高效的分类、存储和检索;具有代表性的有REBOOT模型、青鸟模型和ALOAF模型。269合肥工业大学合肥工业大学 软件工程实验室软件工程实验室REBOOT模型nREBOOT模型是一种基于刻面的分类和检索模型;nREBOOT模型从构件的各个角度,即若干个刻面(facet)来描述软件构件的属性;nREBOOT模型中是其提出的4个刻面:依赖、抽象、操作和操作对象。270合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件构件模型总结构件模型包括以下方面的内容:接口(interface):描述了构件的对外行为,也就是构件实现的功能;约束(constraint):描述了构件使用时的参数关

181、系、构件之间的依赖关系以及构件的软、硬件使用环境;实现体(implementation):构件功能具体实现部分;内部结构(structure):构件内部各模块之间连接关系;一个构件可能由若干个小构件组成,内部结构体现了这些子构件的关系;内部结构反应了构件粒度的大小。271合肥工业大学合肥工业大学 软件工程实验室软件工程实验室Component-based Software Engineering1、软件构件技术、软件构件技术2、基于构件的软件工程、基于构件的软件工程3、基于构件的软件工程目前主要研究方向、基于构件的软件工程目前主要研究方向及相关领域介绍及相关领域介绍272合肥工业大学合肥工业大

182、学 软件工程实验室软件工程实验室2.1基于构件的软件工程介绍n基于构件的软件工程(CBSE:Component-BasedSoftwareEngineering)nCBSE是指通过装配可重用构件来构造应用程序;在软件生命周期各个阶段CBSE都以构件为核心。nCBSE的目标是在一个良好的软件框架内通过集成构件来开发系统,即采用“即插即用”的软件开发方式;避免软件开发一切从零开始;通过替换构件来维护和升级系统;通过构件的复用来提高软件开发效率和质量。273合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.2基于构件的软件工程的特点(1)CBSE的关键思想来自于计算机硬件的设计,与传统的软件

183、开发方法相比,基于构件的软件开发有以下特点:即插即用:用户只使用构件时不需要对构件源代码进行修改,甚至在某些构件的重用过程中连重新编译都可以省略,也就是说是通过组装而不是编程来实现系统;有标准化的统一模型:构件的开发必须遵循一定标准和统一的模型,集成时构件之间具有较高的匹配程度和易使用性;274合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.2基于构件的软件工程的特点(2)以接口为核心:构件的接口与实现是分离的,构件通过接口实现它们之间的交互与连接,而构件的具体实现是被封装在内部的,使用者只关心接口信息,而不关心内部的实现细节;以复用为主要思想:在CBSE中软件生命周期的各个阶段都以

184、单位的复用为主要思想和目标;构件的获取渠道的多样性:构件的获取不是单一的,可以通过对开源软件的复用、商业购买或者自行开发来获得。275合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.2基于构件的软件工程的特点(3)基于构件的软件系统是通过构件组装形成的,它的生命周期不同于“一切从零开始”的传统软件的生命周期。它的生命周期可一概括为:构件需求分析;构件生产;构件评测;构件检索与匹配;构件维护;构件组装;软件测试与维护。与传统软件开发不同,基于构件的软件生命周期中各个阶段并不是顺序进行关系。在某些开发过程中,某些阶段可能不出现在生命周期中。276合肥工业大学合肥工业大学 软件工程实验室软

185、件工程实验室基于构件的软件开发过程277合肥工业大学合肥工业大学 软件工程实验室软件工程实验室基于构件的软件工程的关键技术o构件质量与构件种类o构件所遵循的模型o构件的组装集成技术o基于构件的软件系统的体系结构278合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.3构件组装技术CBSE中构件的组装受到构件模型、构件粒度、构件运行环境,软件系统结构等要素的影响。构件组装是指在不修改部分(构件个体)的前提下把部分组装成一个整体(复合构件)。根据对构件内部结构的了解可以将构件组装分为黑盒组装,白盒组装和灰盒组装。黑盒组装是最理想的方法,它不需要对构件实现细节有任何了解,也不需要对其进行配置

186、和修改;白盒组装要求将构件的所有细节都展现出来,让使用者理解后再进行组装,并可对构件按应用的需要进行修改;灰盒方法介于黑盒、白盒之间,是当前技术发展的合适选择。279合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.3构件组装技术n从应用的角度看,构件组装可简单的分为内部组装和外部组装两种形式。n内部组装通常是对于同构构件进行的,它将构件连接到系统或将源码包含到一个系统中来实现组装;该方式下构件以源码或可运行代码方式组装。n外部组装是指构件组装时独立的运行,通过接口的连接或各种通信机制来进行交互;该方式下构件以独立的模块形式运行。280合肥工业大学合肥工业大学 软件工程实验室软件工程实

187、验室几种常用的构件组装方式(1)基于编成语言的源代码组装该方法将现有构件中的可复用代码复制到新的构件中,并进行适应性修改以满足需求,开发人员必须可以完全访问构件的源代码。这种技术是最原始的,它不支持构件自适应和体系结构配置。基于框架的组装该方法是将按照特定模型开发构件在相应的软件框架中进行组装。例如,COM构件在.NET框架下,EJB在J2EE框架中组装。该组装过程遵循框架自身定义的约束和连接规则。基于框架的组装过程中构件的运行与框架之间有依赖关系。一般情况下异构构件无法在同一框架下组装。281合肥工业大学合肥工业大学 软件工程实验室软件工程实验室几种常用的构件组装方式(2)基于接口的组装构件

188、通过接口隐藏了模块的内部实现,所以在系统中模块可以互换而不影响其它模块,支持系统配置,模块的一个连接点可以是一次过程调用,也可以是全局变量的一次访问,这是目前普遍使用的一种构件组装方式。基于脚本语言地组装与标准的编程语言类似,脚本语言是解释型语言。脚本语言只能说明构件如何交互和数据结构如何在构件间交换,它的执行效率比编译型的语言低,而且没有提供底层系统功能的函数,所以不适合用来编写完整的应用系统;此外脚本语言使用动态类型,只有在执行阶段才能检测到类型错误。在构件组装中,脚本只表示构件连接的抽象。282合肥工业大学合肥工业大学 软件工程实验室软件工程实验室几种常用的构件组装方式(3)基于封装器的

189、组装封装器组装是一种传统的方法用于扩展现有的类或者转换接口,其主要的包装形式有子类、继承、聚集等,包装技术主要解决组装中出现的不匹配问题,一个构件可以以一定的透明方式被封装成另一个构件,代理对其它构件的调用,而且封装器可以用简单的方式修改构件的行为。事实上封装器方式是接口组装的变体,只不过是在原有构件粒度上进行了进一步的封装,赋予了构件新的接口。283合肥工业大学合肥工业大学 软件工程实验室软件工程实验室几种常用的构件组装方式(4)基于中间件的组装中间件组装是基于其它代码如接口定义语言、二进制代码等的一种组装方式,它通过严格限定系统中使用的构件形式,尽可能的避免组装不匹配的出现。中间件组装形式

190、通常清楚地说明构件接口如何定义,何种数据实体可以在构件之间互换,构件的交互机制以及使用何种体系风格,通常基于中间形式的系统适用于特定的应用领域和体系结构。中间形式的典型例子是软总线,与硬件系统中的总线类似,软总线定义了用于数据交换标准化的通信协议如数据类型集合、服务调用机制等信息,并且负责消息的处理和必要的数据转换。284合肥工业大学合肥工业大学 软件工程实验室软件工程实验室几种常用的构件组装方式(5)以上仅仅是介绍了几种常用的构件组装方式。在上述几种方式中,基于编成语言的源代码组装和基于框架的组装属于构件的内部组装方式;基于接口的组装、基于脚本语言地组装、基于封装器的组装和基于中间件的组装属

191、于构件的外部组装方式。285合肥工业大学合肥工业大学 软件工程实验室软件工程实验室2.4基于构件的软件工程的意义nCBSE从根本上改变了软件生产方式,改变了以往软件开发中“一切从零开始”的模式;nCBSE减少软件开发中大量的重复性工作,降低了开发成本;nCBSE缩短了开发周期,提高了软件生产效率;nCBSE提高了软件的灵活性和可维护性;nCBSE使得开发人员更多的关注于系统的业务流程和软件体系结构的设计。286合肥工业大学合肥工业大学 软件工程实验室软件工程实验室Component-based Software Engineering1、软件构件技术、软件构件技术2、基于构件的软件工程、基于构

192、件的软件工程3、基于构件的软件工程目前主要研究方向、基于构件的软件工程目前主要研究方向及相关领域介绍及相关领域介绍287合肥工业大学合肥工业大学 软件工程实验室软件工程实验室 3.1主要研究方向o构件模型构件模型:研究构件的本质特征及构件之间的关系。构件模型定义了构件的属性、接口、约束以及交互机制等方面内容,是构件使用和研究的基础。o构件获取构件获取:利用各种技术进行有目的的构件生产和从已有系统中提取构件。288合肥工业大学合肥工业大学 软件工程实验室软件工程实验室 3.1主要研究方向o构件描述语言构件描述语言:以构件模型为基础,对构件进行形式化的描述,方便用户对构件进行理解和组装使用;同时也

193、为构件使用过程中的配置、检测以及自动化进程提供支持。o构件库的研究构件库的研究:研究构件的分类策略、组织模式和检索策略,建立构件库系统,支持构件的有效管理。289合肥工业大学合肥工业大学 软件工程实验室软件工程实验室 3.1主要研究方向o构件的组装构件的组装:在构件模型的基础上研究如何通过构件接口使构件相互连接和交互,以构造应用系统。o构件的标准化构件的标准化:研究构件模型的标准化和构件库的标准化。o可靠性问题可靠性问题:对构件以及基于构件的应用系统的可靠性和安全性进行研究,对系统的性能进行预测,追踪构件的交互过程。290合肥工业大学合肥工业大学 软件工程实验室软件工程实验室 3.2相关领域介

194、绍在CBSE发展过程中,既有很多与其相关的已知领域,也出现了许多与其相关的新领域。尤其是在软件开发网络化的同时,构件技术也针对分布式环境和网络环境进行相应演化。CBSE相关领域主要有:SoftwareReengineeringWebServicesSOA(Service-OrientedArchitecture)291合肥工业大学合肥工业大学 软件工程实验室软件工程实验室软件再工程o软件再工程将逆向工程、重构和正向工程结合起来,将现有系统重新构造为新的系统。软件再工程的目的是对现有系统进行整理,挖掘可服用构件,延长其生命周期。o软件再工程的具体对象包括运行的系统、源代码、设计和分析文档、软件开

195、发过程等各个方面。292合肥工业大学合肥工业大学 软件工程实验室软件工程实验室WebServicesoWebServices是构件技术在网络环境下的演化,是一种能够被描述并通过网络发布、发现和调用的自包含、自描述、松散耦合的软构件。oWebServices采用标准协议,用接口定义、方法调用的方式来进行使用,解决面向Web的分布式计算问题。oWebServices的优点:协议的通用性,即采用标准的Internet协议;完全的平台和语言独立性,即WebServices采用XML数据格式进行通信和交互,不需要以往构件那样在特定的框架或模式下运行;具有更高的灵活性。293合肥工业大学合肥工业大学 软件

196、工程实验室软件工程实验室SOAoSOA又成为面向服务的体系结构,是传统软件体系结构结合了软件构件技术而演化而来的一种新的风格的体系结构。oSOA提供了一种面向服务、大粒度、松耦合以及动态绑定的分布式应用系统的构建方法。oSOA是通过调用一些可以独立运行、松耦合的模块来完成所需要的系统功能;各个模块的运行独立于具体的实现平台,模块之间通过接口通信进行交互。oCBSE中构件的模型和组装技术都适用于实现SOA的支持技术,并具有良好的统一性。oCORBA、WebServices、REST等技术都可以用于实现SOA。294合肥工业大学合肥工业大学 软件工程实验室软件工程实验室思考题(1)1.软件过程与软

197、件过程模型?分析主要的软件过程模型2.软件需求获取的主要内容?3.对比分析面向过程和面向对象软件工程4.软件工程从业人员职业道德(ACM/IEEE-CS)5.风险管理和风险分析的主要内容6.CASE7.SOA主要内容及其作用8.WebServices及其WebServices软件工程?295合肥工业大学合肥工业大学 软件工程实验室软件工程实验室思考题(2)1.列举一些常用的组件组装方式,并分析其中的一种。2.什么是SAAS?分析SAAS对软件工程的影响。3.OO分析所要识别的5各层次?OO建模(三视点模型)及其建模过程(对一个实例进行UML建模)4.软件测试5.MDA?6.软件再工程及其意义?7.软件工程面临的主要挑战?大量遗留系统问题,不断增长的需求,日益复杂的系统需求8.软件体系结构及其风格296

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号