第一章1.软件复用:利用现有的软件资源来开发新应用系统的过程。
其中软件资源可能是已经存在的软件,也可能是专门用于开发设计且可复用的软件构件。
2.可复用的软件的资源即复用成分,是软件服用技术的核心与基础。
3.实现软件复用需要解决三个问题:1.有可以复用的对象2.所复用的对象的对象是可用的3.复用者要知道怎样去使用被复用的对象4..软件重用再工程五个阶段:(1)候选阶段(2)选择阶段(3)资格说明阶段(4)分类和存储阶段(5)查找和检索5.软件复用:(1)代码复用分为目标代码复用和源代码复用(2)设计复用比源程序复用的级别更高(3)分析复用要比设计复用的级别更高(4)测试复用主要包括测试用例复用和测试过程复用6.软件复用的实现技术:组装和生成在组装中软件构件是复用的基石在生成中由程序生成器完成对软件结构模式的复用7.从构件的表示角度出发,分为人工智能方法、超文本和信息科学方法信息科学方法:枚举层次关键词分类方法8.软件构件化:就是要让软件开发过程向机械加工一样,可以使用各种标准的和非标准的零件来组装机器。
9.抽象构件模型:提供服务接口--(软件构件:属性集合行为集合)--接收服务接口10.网络服务技术:OMG的CORBA;SUN公司的J2EE/JavaBeans/EJB;Microsoft的DCOM/COM/COM+11.构件获取的四种方式:(1)从构件库中,按照适合新系统的原则选取,并做适应性修改已获得可重用的构件。
(2)根据新功能模块进行自行开发,以获取新构件(3)对遗留系统进行功能分析,将具有潜在应用价值的模块提取出来,使其接口进行标准化以获得可重用性构件(4)通过商业方式购买合适的构件,利用互联网资源进行共享或免费获取12.框架:是一种为特定领域应用提供可扩展模版的架构实例。
它表述了整个设计过程、指明了协作对象之间的依赖关系、明确了责任分配和控制流13.软件体系结构主要包括:构件、连接件和配置约束14.构件:可预制和可重用的软件部件,是组成体系结构的基本计算单元或数据存储单元1.模型的作用:使复杂的信息关联变得简单易懂,使我们能够洞察杂乱的和庞大的数据背后所隐藏的规律,使我们能够将系统需求映射到软件的框架结构上去。
2.软件体系结构模型能够帮助人们从全局的角度来把握整个系统的框架结构。
3.软件体系结构模型:(5种)结构模型:这是一个最直观、最普遍的建模方法。
这种方法以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义。
系统语义主要包括系统的配置、约束、隐含的假设条件、风格、性质等。
动态模型:是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。
例如,描述系统的重新配置或演化。
动态可以指系统总体结构的配置、建立或拆除通信通道或计算的过程。
框架模型:框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。
框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
过程模型:过程模型研究构造系统的步骤和过程。
结构是遵循某些过程脚本的结果。
功能模型:功能模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。
功能模型可以看作是一种特殊的框架模型。
4.“4+1”视图模型逻辑视图(概念视图)逻辑试图主要是用来描述系统的功能需求,即系统提供给最终用户的服务.表述了系统的功能需求及其之间的相互关系。
按照应用领域的概念来描述系统的框架结构。
在面向对象技术中,通过抽象、封装、继承,可以用对象模型来代表逻辑视图开发视图(模块视图)开发视图主要用来描述系统的组织,与逻辑视图密切相关,都是描述了系统的静态结构。
但是侧重点有所不同,开发视图与系统实现紧密相关。
模块视图负责软件模块的组织和管理,该视图以构件为着眼点,是系统开发的核心视角之一。
过程视图进程试图侧重系统的动态行为即系统运行时所表现出来的相关特征。
着重解决系统的可靠性、并发性、分布性、容错性、吞吐量等。
反映软件的行为结构。
物理视图物理试图主要描述硬件配置。
服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。
主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。
可以与进程视图一起映射。
场景视图场景是用户需求和系统功能实例的抽象,设计者通过分析如何满足每个场景所要求的约束来分析软件的体系结构。
场景是整个体系结构设计的依据。
(1)不能体现体系结构的构造是多层次抽象的过程,不能充分表达系统的体系结构风格(2)数据作为系统的重要组成部分,”4+1”视图中没有得到充分的体现(3)”4+1”视图不能充分的反映系统要素之间的联系,如构件、功能和角色之间的关联(4)在实现体系结构模型时,缺乏构造视图和建立视图之间关系的指导信息5.核心模型::=(构件,连接件,约束)构件::={端口1,端口2,...端口N}连接件::={角色1,角色2,...角色M}约束::={(端口i,角色j),...}6.构件是软件体系结构中的基本要素。
构件具有一定功能和可明确辨识的软件单位。
7.软件可以有不同的粒度。
一个构件可以小到只有一个过程,也可以大到包含一个应用程序。
可包含函数对象进程二进制对象类库和数据包等8.常见的构件:纯计算单元,数据存储单元,管理器,控制器9.构件组合遵循三个原则:(1)使参与组合的构件保持自身的独立性,从而有利于构件和所形成的复合构件具有更强的复用能力和演化能力(2)构件之间的组合应该由构件以外的实体来实施,如连接件。
(3)构件组合应有助于根据参与组合的构件的行为和性质来推导符合构件的行为和性质,从而有助于基于可复用构件的应用系统的开发10.常用的连接件:过程调用,数据流,消息传递11.对于构件而言,连接件是黏合剂,是构件交互的实现。
连接件和构件之间的区别主要在于他们在软件体系结构中承担不同的作用12.软件体系结构工程=形式化模型+软件技术+软件工程P3313.描述软件框架结构常用方法:一种是实践派风格,使用通用的建模符号;一种是学院派风格,使用了体系结构描述语言(ADL)集中描述了整个系统的高层结构实践派风格包括图形表示方法,模块内连接语言,基于构件的系统描述语言和UML描述方法14.P49页图1.软件体系结构风格也成为软件体系结构惯用模式,是指不同系统所拥有的共同组织结构和语义特征。
2.常见的软件体系结构的风格;(1)数据流风格(2)调用/返回风格(3)面向对象风格(4)独立部件风格(5)虚拟机风格(6)数据共享风格3.在管道/过滤器风格中,每个过滤器独立完成自己的任务,不同过滤器之间不需要进行交互。
各个过滤器不需要知道在其上游和下游所连接的过滤器的详细信息。
在该结构中,数据输出的最终结果和各个过滤器执行的顺序无关。
4.事件驱动体系结构的优缺点优点:(1)事件声明者不需要知道哪些构件会影响事件,因此,不能确定构件处理的先后顺序,甚至不能确定事件会引发哪些过程调用。
(2)提高了软件复用能力。
(3)便于系统升级。
缺点:(1)构件放弃了对计算的控制权。
(2)存在数据传输问题。
5.分层体系结构的风格是什么?:在分层体系结构中,上层通过下层提供的接口使用下层功能,而下层不能使用上层功能。
利用接口,可以将下层实现细节隐藏起来,从而有助于抽象设计,形成松散耦合和结构模型。
良好的层次结构将有助于对逻辑功能实现灵活的增加、删除和修改。
此外,良好的层次结构还有助于实现产品在不痛平台之间的快速移植。
优点:(1)设计者可以讲系统分解成一个增量的步骤序列,从而完成复杂的业务逻辑。
(2)每一层至多和相邻上下两层进行交互,每一层的功能变化最多只影响相邻两层,便于实现系统功能的扩展。
(3)只要给相邻层提供相同接口,就可以实现不同的方法来实现每一层,支持软件资源的复用。
缺点:(1)并非所有系统都能够按照层次来划分。
(2)很难找到一种合适和正确的层次划分方法,其应用范围受到限制。
(3)在传输数据的时候,需要经过多个层次,导致了系统性能下降。
(4)多层结构难以调试,往往需要一系列的跨层次调用来实现。
6.P58黑板体系结构:主要包括(1)知识源(2)中央数据单元(3)控制单元三个部分优点:(1)便于多用户共享大量数据,而不必关心数据是何时产生、由谁提供的及通过何种途径来提供。
(2)便于将构件座位知识源添加到系统中来。
缺点:(1)对于共享数据结构,不同的知识源要达成一致。
(2)需要同步机制和加锁机制来保证数据的完整性和一致性,增大了系统设计和复杂度。
7.解释器体系结构优点:(1)能够提高应用程序的移植能力和编程语言的跨平台移植能力。
(2)实际测试工作可能非常复杂,测试代价及其昂贵,具有一定的风险性。
可以利用解释器对未实现的硬件进行仿真。
缺点:(1)由于使用了特定语言和自定义操作规则,因此增加了系统运行的开销。
(2)解释器系统难以设计和测试。
8.C/S P62页图优点:(1)客户机构件和服务器构件分别运行在不同的计算机上,有利于分布式数据的组织和处理。
(2)构件之间的位置是相互透明的,客户机程序和服务器程序都不必考虑对方的实际存储位置。
(3)客户机侧重数据的显示和分析,服务器则注重数据的管理,因此,客户机程序和服务器程序可以运行在不痛的操作系统上,便于实现异构环境和多种不同开发技术的融合。
(4)构件之间是彼此独立和充分隔离的,这使得软件环境和硬件环境的配置有极大的灵活性,便于系统功能的扩展。
(5)将大规模的业务逻辑分布到多个通过网络连接的低成本的计算机上,降低了系统的整体开销。
缺点:(1)开发成本较高。
(2)在开发C/S结构系统的时候,大部分工作都集中在客户机程序的设计上,增加了设计的复杂度。
(3)信息内容和形式单一。
(4)如果对C/S体系结构和系统进行升级,开发人员需要到现场来更新客户及程序,同时需要对运行环境进行重新配置,增加了维护费用。
(5)两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Internet 和Internet。
(6)数据安全性不高9.在三层C/S结构的软件系统中,可以将业务逻辑划分成表示层、功能层和数据层三个部分。
P64图10.浏览器/服务器体系结构(B/S)优点:(1)客户端只要安装浏览器,操作简单。
能够发布动态信息和静态信息。
(2)运用HTTP标准协议和统一客户端软件,能够实现跨平台通信。
(3)开发版本较低,只需要维护Web服务器和中心数据库。
缺点:(1)个性化成都比较低,所有客户端的功能都是一样的。
(2)客户端数据处理能力比较差,加重了Web服务器的工作负担,影响系统的整体性能。
(3)在B/S结构的系统,数据提交一般以页面为单位,动态交互性不强,不利于在线事务处理(Online Transaction Processing,OLTP)(4)B/S体系结构的课扩展性比较差,系统安全性难以保障。