软件工程
2023-04-29 22:44:56 11 举报
AI智能生成
软考
作者其他创作
大纲/内容
对象:对象是由数据及其操作所组成的封装体,是系统中用来描述客观事物的一个封装,是构成系统的基本单位,采用计算机语言描述,对象是由一组属性和这组属性进行操作的一组服务构成。三个基本要素:对象标识、对象状态、对象行为。
类:类是现实世界中实体的形式化描述,类将该实体的数据和函数封装在一起。类的数据也叫属性、状态或特征,它表现类静态的一面。类的函数也叫功能、操作、服务,表现为类动态的一面。
类和对象的关系:对象是类的实际例子。如果将对象比作房子,那么类就是房子的设计图纸。①每一个对象都是某一个类的实例。②每一个类在某一时刻都有零或更多实例。③类是静态,它们的存在、语义和关系在程序执行前就已经定义好了,对象是动态的。它们在程序执行时可以被创建和删除。④类是生成对象的模板
抽象:抽象是通过特特定的实例抽取共同特征以后形成概念的过程。它强调主要特征,忽略次要特征。一个对象是现实世界中一个实体的抽象,一个类是一组对象的抽象。
封装:是将相关的概念组成一个单元,然后通过一个名词来引用它。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外的接口进行。
继承:表示类之间的层次关系,这种关系使得某类对象可以继承另外一类对象的特征(attributes)和能力(operations),继承可以分为单继承和多继承,单继承是子类从一个父类继承,多继承中的子类可以从多个父类继承。Java是单继承,而C++允许多继承。
多态:多态性是一种方法,这种方法使得在多类中可以定义同一个操作或属性名,并在每个类中可以有不同的实现。多态性使得一个属性或变量在不同的时期可以表示不同类的对象。
接口:所谓接口就是说对操作规范的说明。接口知识说明操作应该做什么(What),但是没有定义操作应该做什么(How)。接口可以理解成为类的一个特例,它只规定实现此接口的操作方法,而把真正的实现细节由实现该接口的类去实现。接口在面向对象和设计过程起到了至关重要的桥梁作用,系统分析员通常先把有待实现的功能封装并定义成接口,而后期程序员依据此接口进行编码实现。
消息:是对象间交互的手段。
组件:组件是软件系统可替换的、物理的组成部分,它封装了实现体(实现某个职能)并提供了一组接口的实现方法。可以认为组件是一个封装的代码模块或者大粒度的运行模块,也可以将组件理解为具有一定功能、能够独立工作或同其他组件组合起来的协同工作的对象。对组件的要求:应该按照可复用的要求进行设计、实现、打包、编写文档。组件应该是内聚的,并具有相当稳定的公开的接口。
模式:模式是一条由三部分组成的规则,它表示了以个特定的环境、一个问题和一个解决方案之间的关系。每个模式描述了一个不断重复发生的问题,以及该问题的解决方案。这样就能一次又一次的使用该方案而不必做重复劳动。
复用:软件复用是指将已有软件及其有效成分用于构建新的软件或系统。组件技术是软件实现复用的关件。
基本概念
是一个通用的可视化建模语言,它是面向对象分析和设计的一种标准化表示,用于对软件的描述、可视化处理、构造和建立软件系统的文档。它记录了对所构造的系统的决定和理解,用于对系统的理解、设计、浏览、配置、维护和信息控制。
特征:①不是可视化的程序设计语言,而是可视化的建模语言。②是一种建模语言规范说明,是面向对象分析与设计的一种标准表示。③不是过程,也不是方法,但允许任何一种过程和方法使用它。④简单并且可扩展,具有扩展和专有化机制,便于扩展,无需对核心概念进行修改。⑤为面向对象的设计与开发中涌现出的高级概念(如协作、框架、模式和组件)提供支持,强调在软件开发中,对架构、框架、模式和组件的重用。⑥与最好的软件工程实践经验集成。
①用例图 Use Case Diagram②类图 Class Diagram③对象图 Object Diagram④构件图 Component Diagram⑤部署图 Deployment Diagram⑥状态图 State Diagram⑦序列图 Sequence Diagram⑧协作图 Collaboration Diagram⑨活动图 Activity Diagram
统一建模语言 UML
可视化建模与统一建模语言。
RUP全程为统一软件开发过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算的前提下,确保满最终用户需求的高质量产品。
RUP提高了团队的生产力,对于所有关键开发活动,它为每个团队成员提供了使用准则、模板、工具指导来进行范文的知识基础。而通过对相同知识基础的理解,无论是进行需求分析、设计、测试项目或者配置管理,均能确保全体成员共享相同的知识、过程和开发软件的视图。RUP 能对大部分开发过程提供自动化的工具支持。它们被用来创建和维护软件开发过程(可视化建模、编程、测试等)的各种各样的产物——特别是模型。
6个基本最佳实践经验:①迭代式开发②需求管理③使用以组件为中心的软件架构④可视化软件建模⑤验证软件质量⑥控制软件变更
RUP将周期划分为四个连续阶段:即初始连续阶段、细化阶段、构造阶段、交付阶段。
使用面向对象技术进行软件开发的最佳实践 ——RUP
面向对象的系统分析阶段将运用面向对象的方法分析问题域,建立基于对象、消息的业务规模,形成对客观世界和业务本身的正确认识。
概念
用例模型:一个用例模型由若干幅用例图组成,用例描述了用户与系统之间的交互,其重点是系统为用户做什么。用例模型描述全部的系统功能行为。
类对象模型:描述系统所涉及的全部类以及对象。每个类和对象都通过属性、操作和调研者来进一步描述
对象关系模型:描述对象之间的静态关系,同时定义了系统中所有重要的消息路径,它也可以具体化到对象属、操作者和协作者。对象关系模型包括类图、对象图。
描述了系统的动态行为。对象-行为模型包括状态图、顺序图、协作图和活动图。
对象行为模型
由用例模型、类、对象模型、对象、关系模型和对象-行为模型组成
面向对象的分析模型
①建立用户需求②建立创建软件设计的基础③定义软件完成后可被确认的一组需求。
面向对象分析的主要目标:
①发现角色/参与者②发现用例③建立用例模型 use case model④进行领域分析⑤建立对象关系模型⑥建立对象行为模型⑦建立功能模型
面向对象分析的步骤
面向对象的分析方法
面向对象的系统设计阶段对分析阶段给出的问题域模型,用面向对象的方法设计出软件基础架构(概要设计)和完整的类结构(详细设计),以实现业务功能。
用例设计:①利用交互改进用例实现②调整对设计类的操作需求③调整对于系统和它们的接口的操作需求④调整对封装体的操作需求
类设计:①确保类可为用例实现提供必须的行为②确保提供充足的信息来明确无误的实施类③处理和类有关的非功能性需求④包含用于类的设计机制
子系统设计:①用所包含类的协作来定义在于系统接口中指定的行为②记录于系统的内部结构③定义子系统接口和包含类之间的实现关系④确定对其他子系统的依赖关系
设计阶段主要包括用例设计、类设计和子系统设计
主要内容
面向对象系统设计
面向对象系统分析
面向对象系统分析与设计
将软件系统划分成多个模块,明确各个模块之间的相互作用,组合起来实现系统的全部特性,就是系统的架构。通常将一些经过实践证明的、可重复使用的软件架构设计策略总结成架构模式①软件架构是一个程序或者系统的构件的结构、构件间的关系以及控制构件设计演化 的原则和方针。②一个系统的软件架构由一组构件、构件间的连接件、构件和连接件的配置以及如何结合在一起的约束限制的描述组成。③在算法和数据结构之外,设计并确定系统整体结构成了新的问题。结构问题包括总体组织结构和全局控制结构、通信、同步和数据访问的协议、设计元素的功能分配、物理分布、设计元素的组成、可扩展性与性能、备选设计的选择等。④软件架构所关心的是软件构件及软件构件间的组织结构、约束和关系,是对系统的组成、系统结构及系统如何工作的较为宏观的描述。
定义
软件架构模式描述了某一特定的应用领域中系统的组织方式,它放映了领域中众多系统所共有的结构和语义特性,描述了如何将各个模块和子系统有效组织成一个完整的系统。
每一组构件都有一组输入,输出,构件读取输入流的数据流,经过内部处理后,产生输出数据流。该过程主要完成输入流的变换及增量计算。通常,将这里的构件称为过滤器,其中的连接器就像是数据流传输的管道,将一个过滤器的输出传送到另一个过滤器的输入管道,过滤器输出的正确性并不依赖与过滤器进行增量计算过程的顺序
优点:①体现了各功能模块的“黑盘”特性及高内聚、低耦合的特点。②可以将整个系统的输入,输出行为看成是多个过滤器行为的简单合成。③支持软件功能模块的重用。④便于系统维护:新的过滤器可以添加到现有系统中来,旧的可以由改进的过滤器替换。⑤支持某些特定的分析,如吞吐量计算、死锁检测。⑥支持并行操作,每个过滤器可以作为一个单独的任务完成。缺点:①通常导致系统处理过程的成批操作。②需要设计者协调两个相对独立但又存在关系的数据流。③可能需要每个过滤器自己完成数据解析和合成工作(如加密和解密),从而导致系统性能下降,并增加了系统具体实现的复杂性。
1.管道、过滤器模式
面向对象模式建立在数据抽象和面向对象的基础上,将数据的表示方法及其相应操作封装在一个抽象数据类型或对象中。面向对象模式的典型应用是基于构件的软件开发(Component-Based Development,CBD)
优点:①高度模块化②封装功能实现了数据隐藏③继承性提供了一种实现代码共享的手段④提供了系统的灵活性,便于维护及扩充
缺点:对象之间的调用需要知道对象的标识。如果对象标识发生改变,就必须通知所有调用该对象的对象。否则系统将可能无法正常运作
面向对象模式
构件并不直接调用过程,而是触发一个或多个事件。系统中的其他构件可以注册相关事件,触发一个事件时,系统会自动调用注册了该事件的构件过程,即触发事件会导致另一构件中过程的调用。主要特点是:触发者并不知道哪些构件会受到事件的影响,且不能假定构件的处理顺序,甚至不知道会调用哪些过程,使用事件驱动模式的典型系统包括各种图形界面工具。
优点:①支持软件重用,容易实现并发处理②具有良好的可扩展性,通过注册可引入新的构件,而不影响现有构件。③可以简化客户代码缺点:①构件削弱了自身对系统的控制能力。一个构件触发事件时,并不能确定响应该事件的其他构件及各构件的执行顺序。②不能很好的解决数据交换的问题③是系统各构件的逻辑关系变得更加复杂
事件驱动模式
采用层次化组织的方式,每一层都是为上一层服务,并使用下一层提供的功能。这种模式允许将一个复杂问题逐步分层实现。层次模式中的每一层最多之影响两层,只要给相邻提供相同的接口,就允许每层用不同的方法实现,可以充分支持软件复用。分层模式的典型应用是分层通信协议,如ISO/OSI的七层网络模型。
优点:①有助于把复杂的问题按功能分解,使整体设计更为清晰。②支持系统设计的逐级抽象。③较好的可扩展性④支持复用缺点:①并不是每个系统都可以很容易的划分出层次来;同时,各层功能的划分也没有一个统一的、正确的抽象方法。②层次的个数过多,系统的性能会下降。
分层模式
采用两个不同的软件:中央数据结构构件说明当前状态,独立构件在中央数据存储上执行,中央数据构件与独立的外部构件间的相互作用是系统的主要问题。知识库由两种不同的控制策略,如果输入流触发进程执行选择,基于传统数据库型的知识库模式;如果中央数据结构的当前状态触发进程执行的选择,则为基于黑板系统的知识库模式。黑板系统的典型应用是信号处理领域,如语言和模式识别
黑板系统的三个组成部分① 知识源:包含独立的、与应用程序相关的只是,知识源之间不直接进行通讯,他们之间的交互只通过黑板来完成。②黑板数据结构:按照与应用程序相关的层次来组织并解决问题的数据,知识源通过不断地改变黑板数据来解决问题③控制:完全由黑板的状态驱动,黑板状态的改变决定了需要使用的特定知识
知识库模式
C/S模式是基于资源不对等,为实现共享而提出的。C/S模式将应用一分为二,服务器(后台)负责处理数据管理,客户机完成与用户的交互。C/S模式具有强大的数据操作和事务处理能力。
优点:① 客户机与服务器分离,允许网络分布操作,二者的开发也可分开同时进行。②一个服务器可以服务于多个客户机缺点:①客户机与服务器的通讯依赖于网络,可能成为整个系统的运作瓶颈,服务器的负荷过重,难以管理大量的客户机,系统的性能受到很大的影响。②如果服务器机器界面定义有改变,客户机也要做相应改变。③二层C/S模式采用单一服务器且与局域网为中心,难以扩展至广域网或Internet④数据库安全性不好,客户端程序可以直接访问数据库服务器,使数据库的安全性收到威胁。C/S模式适用于分布式系统,得到了广泛应用,为了解决C/S模式模式中客户端的问题,发展形成了浏览器服务器模式B/S模式。
客户机/服务器模式
典型架构
软件架构的总体目标如下:① 最大化复用:复用包括构件的复用和设计模式的使用的多个方面。②复杂问题简单化:这也是中间件或多层技术的根本目标。在设计过程中,如果需要多个类协调完成某些功能时,应能正确的使用适当的设计模式。③灵魂的扩展性:灵活的扩展性使得用户可以在架构上进行二次开发或更加具体的开发。
模式和系统架构有很大的相似性,都是处理一些抽象概念间的关系,但是二者有很大的不同。模式是领域无关的,解决某些抽象问题,而系统架构则针对要解决的实际问题,是领域相关的。可以通过对问题领域的分析、分解找到解决问题相匹配的模式,把各种模式结合在一起构建整个系统架构。
软件架构设计是动态的,设计的初期并不能完全记录下来,这与建筑设计不同,由于架构设计伴随着整个项目的进行,因此整个过程一定要把握架构设计的目标。
软件架构设计方法
对于目前广泛使用分布式应用,其软件架构需要考虑如下问题:①关系数据库与对象数据库的选择问题:应尽量采用关系型数据库。关系型数据库本身已较为成熟,并且有很好的第三方厂商工具的知识。对象数据库没有关系数据库系统成熟,设计出的系统可移植性差。②用户界面选择使用HTML,HTML界面的开发和维护比起图形界面应用程序更容易,此外,HTML使用的HTTP协议可以穿越防火墙,解决Internet应用中的一个重要问题。③灵活性和性能的考虑:开发系统前,需要权衡独立于厂商抽象定义所提供的灵活性和特定厂商产品带来的性能。④技术的选择:选择成熟的技术可以规避项目风险,掌握技术不仅需要理解技术以及怎么运用,还需要理解技术的适用范围和局限性。⑤聘请经验丰富的软件架构设计师,可以有效的保证项目的成功。
软件架构的分析与评估
为解决分布系统的异构问题,人们提出中间件(Middleware)概念中间件是位于硬件、操作系统等平台和应用中间的通用服务。这些服务具有标准的程序接口和协议。不同的硬件及操作系统平台,可以有符合接口和协议规范的多种实现。
中间件是一种独立的系统软件或者服务程序,可以帮助分布式应用软件在不同的技术之间共享资源。它位于客户端/服务器的操作系统hi上,管理计算机资源和网络通信。其主要目的是实现应用与平台的无关性。满足大量应用需要、运行于多种硬件与操作系统平台、支持分布计算、提供跨网络硬件,操作系统平台的应用或服务的透明交互、支持标准的协议、支持标准的接口。
特点
数据库访问中间件通过一个抽象层访问数据库,从而允许使用相同或相似的代码访问不同的数据库资源。典型的技术如Windows平台的ODBC和Java的JDBC
数据库访问中间件
Remote Procedure Call RPC,是一种广泛使用的分布式应用程序处理方法。一个应用程序使用RPC来”远程“执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同。事实上RPC应用分为两个部分:服务器和客户机,服务器提供一个或多个远程过程;客户机向服务器发出远程调用。服务器和客户机可以位于同一台计算机,也可以位于不同的计算机,甚至可以运行不同的操作系统上。RPC所提供的是基于过程的服务访问,客户机与服务器进行直接连接,没有中间机构来处理请求,因此也具有一定的局限性。
远程过程调用
Message-Oriented Middleware,MOM)利用高效可靠的消息传递机制进行平台无关的数据交流,并可基于数据通信进行分布系统的集成。通过提供消息传递和消息排队模型,可在分布环境下扩展进程间的通信,并支持多种通讯协议、语言、应用程序、硬件和软件平台。典型的产品如IBM的MQSeries。通过使用MOM,通信双方的程序(称其为消息客户程序)可以在不同的时间运行,程序不在网络上直接通话,而是间接的将消息放入MOM服务器的消息机制中。因为程序间没有直接的联系,所以它们不必同时运行;消息放入适当的队列时,目标程序不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。消息客户程序之间通过将消息放入消息队列或者在从消息队列去除消息来进行通讯。客户程序不直接与其他程序通讯,避免了网络通讯的复杂性。消息队列和网络通信的维护工作由MOM完成。
面向消息中间件
随着对象技术与分布式计算技术的发展,两者相互结合形成了分布式对象技术,并发展出当局软件技术的主流方向。典型的产品如OMG的CORBA,SUN的RIVU/EJB 、Microsoft的DCOM等。
分布式对象中间件
也称事务处理监控器(Transaction Processing Monitor,TPM)最早出现在大型机上,为其提供支持大规模事务处理的可靠运行环境。随着分布计算技术发展,发布应用系统对大规模的处理也提出了需求。事务处理监控程序位于客户和服务器之间,完成事务管理与协调、负载平衡、失效恢复等任务,且提高系统的整体性能。典型产品如BEA的Tuxedo,今年还出现了新一类产品,即对象事务监控器(Object Transaction Monitor,OTM),可以保证分布式对象的事务完整性,支持EJB的J2EE应用服务器就属于该类产品。事务处理监控器在操作系统之上提供了一组服务,可以对客户请求进行管理并为其分配相应的服务进程,使用服务器在有限的系统资源下能够高效的为大量客户提供服务。
事务中间件
分类
软件中间件
软件架构
软件工程
0 条评论
回复 删除
下一页