资源预览内容
第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
第9页 / 共43页
第10页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件质量保证和管理 - Ch.14 提高软件设计质量 第13章 回顾13.1 需求分析的概念 软件系统的构建层次, 软件需求工程过程13.2 需求的获取与分析13.3 需求分析建模 结构化分析建模,面向对象的分析建模,敏捷建模13.4 系统需求的质量保证第 14章 提高软件设计质量 14.1 软件设计软件设计 14.2 软件体系结构软件体系结构 14.3 软件设计模式软件设计模式 14.4 软件设计优化软件设计优化 14.5 一些典型的系统设计一些典型的系统设计 14.6 数据库设计质量数据库设计质量课程目标l了解软件设计的目标l理解软件体系结构的模型l掌握软件设计模式l理解软件设计的优化l了解一些典型的软件系统设计14.1 软件设计设计模式使得人们可以更加简单和方便地去复用成功的设计模式使得人们可以更加简单和方便地去复用成功的软件设计和体系结构,从而能够帮助设计者更快更好地软件设计和体系结构,从而能够帮助设计者更快更好地完成系统设计。完成系统设计。软件设计一般分为:软件设计一般分为:l 体系结构设计体系结构设计 高层次设计,将软件需求转化为数据结构和软件的系统结构,并定义子系统和它们之间的通信或接口。l详细设计详细设计 过去习惯成为总体设计或概要设计。通过对结构表示进行细化,得到软件软件详细的数据结构和算法。14.1.1 软件设计的目标 软件体系结构设计的基本任务:软件体系结构设计的基本任务:软件体系结构设计的基本任务:软件体系结构设计的基本任务: 设计软件系统结构设计软件系统结构 数据结构及数据库设计数据结构及数据库设计 编写概要设计文档编写概要设计文档 概要设计文档评审概要设计文档评审软件设计的目标具备特征:软件设计的目标具备特征:软件设计的目标具备特征:软件设计的目标具备特征: 可靠性可靠性 性能和安全性性能和安全性 可扩展性可扩展性 可定制性或可移植性可定制性或可移植性 可维护性和可重用性可维护性和可重用性14.1.2 软件设计评价标准l 软件设计质量的分析与评价包含:l 质量属性、度量以及质量分析与评价技术。l区分软件设计的质量属性:l 软件运行时间评价的质量属性;软件维护时间评价的质量属性;与体系结构本质质量相关的质量属性;l软件设计度量方法可以分为:l 面向功能设计的度量,面向对象设计度量。l软件设计的评价工具和技术:l 软件设计评审,静态分析,模拟与原型。l软件设计模型:l 由实体空间,过程空间和形式空间组成。软件系统设计模型示意图 软件设计评价l实体空间标准l 以源系统做为标准来度量系统设计模型,是一个软件设计最终应该附合的标准。它依赖于我们对于源系统的认识程度,同时软件设计是思维的产物。 l过程空间标准l 可以看作实体空间的间接标准,是基于分析模型和设计模型来定义。l形式空间标准l 以目标系统的角度(即软件产品质量属性)检验系统设计。实体空间标准和过程空间标准,可以保证目标系统的功能满足源系统。软件设计质量考察指标l 设计结果的稳定性l 设计的清晰性l 设计合理性l 系统的模块结构所显示的宽度、深度等l模块间松耦合而模块内部又保持高度一致性、稳定性是高质量软件设计的关键之一l给出的系统设计是否满足软件需求l可测试性和可追溯性l所要设计的系统在整个项目软件中的地位、作用l对各种需求项是否都进行了相应的设计分析系统的模块结构复杂性描述 14.1.3 软件设计原则1.软件设计的思想原则用户需求远比技术重要需求其实很少改变,改变的是对需求的理解接受变化不要低估软件规模的需求在软件设计中没有捷径可以走任何体系结构都有它自身的优点和缺点,设计模式也一样2.软件设计的技术原则开闭原则单一职责原则李氏代换原则依赖倒转原则接口隔离原则合成/聚合复用原则迪米特法则耦合的表现形式 系统模块的内聚性14.2 软件体系结构软件体系结构:软件体系结构: 软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这这些模式的约束组成。体系结构的模型和视图体系结构的模型和视图体系结构的分类体系结构的分类体系结构的设计体系结构的设计异步体系结构的选择异步体系结构的选择14.2.1 体系结构的模型和视图体系结构的模型体系结构的模型结构模型:结构模型:以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容。 框架模型:框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。动态模型:动态模型是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。过程模型:研究构造系统的步骤和过程 。功能模型:由一组功能构件按层次组成,下层向上层提供服务。体系结构的试图体系结构的试图概念试图逻辑试图物理试图14.2.2 体系结构的分类C/S软件体系结构传统的二层C/S结构存在局限性。三层C/S结构将应用功能分为表示层、功能层和数据层。B/S软件体系结构B/S结构是对C/S结构的一种改进。B/S结构和C/S结构比较接近,但也具有自己的特点。中间件的多层分布式的体系结构具有客户端的表示层、中间的业务逻辑层和数据库服务器的三层或多层体系结构。多层体系结构将客户和资源分开,降低了服务器的负载。多层分布式系统中,不同的组件可以用不同的语言来实现。14.2.3 体系结构的设计多层分布式体系主要层次在多层体系设计中,各层次按照一定方式进行划分,实现明确分工。客户、业务服务、数据服务。多层分布式体系设计要点安全性、稳定性易维护快速响应系统扩展灵活多层分布式体系结构的应用开发要考虑3方面的技术:开发环境、应用程序的集成、应用程序的配置。系统平台软件和终端软件的体系结构的划分是以高性能、高可靠性、高安全性、高扩展性和可管理为原则。 14.2.4 异步体系结构的选择异步体系结构优点:更快的响应时间负载平衡具有更好的容错能力支持断续连接的系统异步体系结构缺点:利用通知或轮询进行状态跟踪处理超时创建和执行补偿逻辑14.3 软件设计模式设计模式:设计模式使得人们可以更加简单和方便地去复用成功的软件设计和体系结构,从而能够帮助设计者更快更好地完成系统设计。建筑的永恒方法:模式是一条由三部分组成的规则,它表示了一个特定环境、一个问题和一个解决方案之间的关系。每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。14.3.1 设计模式的分类 创建型模式创建型模式 创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。结构型模式结构型模式 结构型类模式采用继承机制来组合接口或实现,描述了如何对一些对象进行组合,从而实现新功能的一些方法。 行为模式行为模式 行为模式涉及到算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。行为模式使用继承机制在类间分派行为。设计模式分类分类 具体种类描述创建型模式抽象工厂 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 生成器将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 工厂方法 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 原型用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 单件保证一个类仅有一个实例,并提供一个访问它的全句访问点。结构型模式适配器将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作桥接将抽象部分与它的实现部分分离,使它们都可以独立的变化组合将对象组合成树形结构以表示“部分整体”的层次结构。Composite使得用户单个对象和组合对象的使用具有一致性装饰动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活外观为子系统中的一组接口提供一个一致的界面,Faade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用享元运用共享技术有效的支持大量细粒度的对象代理为其他对象提供一种代理以控制对这个对象的访问设计模式分类分类具体种类描述行为型模式职责链使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。命令将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排对或记录请求日志,以及支持可撤销的操作。 解释器给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。迭代器提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。中介者用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。备忘录在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。观察者定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。状态允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。策略允许一个对象在其内部状态改变时改变它的行为。模板方法定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。访问者表示一个作用于某对象结构中的各元素的操作。14.3.2 MVC模型模型:是封装数据和所有基于对这些数据的操作。视图:是封装对数据的显示、即用户界面。控制器:是封装外界作用于模型的操作和对数据流向的控制。MVC设计模式将模型、视图与控制器分隔开来。MVC设计模式实现过程: 控制器创建模型; 控制器创建一个或多个视图,并将它们与模型相关联; 控制器负责改变模型的状态; 当模型的状态发生改变时,模型会通知与之相关的视图进行更新。UML表示MVC设计模式14.3.3 设计模式的作用设计模式有4个基本要素: 模式名称:描述模式的问题、解决方案和效果; 问题:描述了应该在何时使用模式; 解决方案:描述了设计的组成部分之间的相互关系、职责和协作方式。 效果:描述了模式应用的效果及使用模式应权衡的问题。设计模式在工程小组成员之间提供了通用的语义。设计模式可以更加简单方便的复用成功的设计和体系结构。设计模式有助于作出有利于系统复用的选择,避免设计损害系统复用性。设计模式可以帮助设计者更快更好的完成系统设计14.3.4 通过UML改善功能设计UML是一种直观化、明确化、构建和文档化软件系统产物的通用可视化建模语言。设计阶段分为结构设计和详细设计。结构设计是定义包,包括包间的依赖性和主要通信机制。详细设计是通过创建新的类图、状态图和动态图,描述新的技术类、并扩展和细化分析阶段。UML设计可以规格说明更直观、更清晰。系统设计分为硬件设计及软件设计。使用UML的Collaboration图和Component图分别对系统的硬、软件进行系统分析。除了使用UML框图外,还需要使用State Chart、Sequence框图描述具体的系统流程细节。14.4 软件设计优化 14.4.1 14.4.1 模块设计和接口设计的要求模块设计和接口设计的要求 14.4.2 14.4.2 详细设计的要求详细设计的要求 14.4.3 14.4.3 界面设计的要求界面设计的要求14.4.1 模块设计和接口设计的要求模块设计准则:模块的划分是合适、模块与模块之间是否具有一定的独立性每个模块的功能和接口定义是否正确数据结构的定义是否正确 模块内的数据流和控制流的定义是否正确 接口设计准则:用户接口设计是否正确全面,是否有单独的用户界面设计文档 是否包含有硬件接口设计,硬件接口设计是否正确且全面 概要设计规格说明是否包含有软件接口设计,软件接口设计是否正确且全面是否包含有通信接口设计,通信接口设计是否正确且全面 是否描述了各类接口的功能、各接口与其他接口或模块之间的关系已经接口的设计是否具有可测试性 14.4.2 详细设计的要求详细设计的目标任务:为每个模块确定采用的算法确定每一模块使用的数据结构确定模块接口的细节为每一个模块设计出一组测试用例详细设计的原则:模块的逻辑描述要清晰易读、准确可靠采用结构化设计方法,改善控制结构详细设计的表示方法:流程图伪码IPO图PAD判定表(树)5种软件详细设计表示方法比较14.4.3 界面设计的要求用户界面设计原则:用户界面必须保持一致性用户界面应有自助功能用户界面易懂性Windows界面设计规则:易用性规范性帮助设施美观与协调性独特性快捷方式的组合错误保护14.5 一些典型的系统设计 14.5.1 J2EE14.5.1 J2EE系统的设计系统的设计 14.5.2 .Net14.5.2 .Net系统的设计系统的设计14.5.1 J2EE系统的设计J2EE系统的结构:运行在客户端机器上的客户层组件运行在J2EE服务器上的Web层组件运行在J2EE服务器上的业务逻辑层组件运行在EIS服务器上的企业信息系统层软件J2EE的模型视图控制体系结构J2EE设计模式:前端控制器数据访问对象模式值对象模式截取过滤器会话面模式视图帮助器J2EE系统结构 客户层浏览器Pure HtmlJava AppletApplication ClientApplication Client ContainerWeb层Web服务器JSPJSPServletJ2EE Platform商业逻辑层EJB容器EJBEJBJ2EE Platform企业信息系统层数据库数据库EIS服务器J2EE服务器客户机14.5.2 .Net系统的设计逻辑层逻辑应用程序体系结构将任何系统都视为一组相互协作的服务,这些服务分为用户服务、业务服务和数据服务。物理部署模型Web服务器用作应用程序服务器远程应用程序层ASP.Net结构是一个3层系统:UI层、业务逻辑层、数据层ASP.Net的系统结构模型 J2EE与.Net的比较14.6 数据库设计质量数据库设计步骤:需求分析概念设计逻辑设计物理设计对数据库进行质量控制方面划分为:数据层的需求和构建数据字典设计数据库数据流设计14.6.1 数据层的需求和构建创建软件系统结构分为:l 数据层:代表物理数据库。实现数据网络交互共享的基础。l 业务层:负责数据层与表示层之间的数据传输。l 表示层:应用程序的客户端,通过业务层来访问数据库。数据是软件系统的核心,数据层是系统与数据库打交道的唯一一个地方数据层被分为: 数据访问元数据:描述数据的存取方法的数据,为系统的每一个存取数据逻辑提供描述。 数据访问层:是一个组件,管理数据库驱动,为上层提供简单一致的接口执行调用。 数据提供层:使用数据访问层执行数据的CRUD操作,使用数据访问元数据控制数据调用指令14.6.2 数据字典数据字典存储了各种模式和相应的映象。对数据库设计来讲,数据字典是进行数据收集和数据分析所获得的主要成果。数据字典使得信息描述准确以确保系统正确工作。数据字典有助于数据的进一步管理和控制14.6.3 数据流设计数据域包括: 数据流:数据通过系统时的变化方式; 数据内容:就是数据项; 数据结构:即各种数据项的逻辑组织。采用结构化方法进行分析,画出数据流图: 输出数据流的规范表述; 输入数据流的规范表述; 描述数据流细节。小结从软件系统结构设计、数据设计、设计模型等方面阐述软件设计阶段,并简单介绍了每个阶段设计的要求以及设计评价标准。软件设计处于软件工程的技术核心位置。设计模型可以方便的复用成功的体系结构,帮助设计者更好的完成系统设计软件设计提高了可以用于质量评估的软件表示。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号