版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四讲 设计工程(Design Engineering)Welcome to Software EngineeringLecture 4Zhang JPage 2目标:n 掌握设计工程的基本知识;n 了解基本的体系结构设计方法和模型;n 了解构件级设计的基本原则与方法; n 掌握用户界面设计的一些原则与基本设计活动。 Page 3内容n 设计工程n 体系结构设计n 构件设计n 用户界面设计n 设计文档与有效性验证Page 4 1 设计工程1.1 软件工程中的设计 设计是一个把问题转换成解决方案的创造性过程; 设计解决的是“如何实现系统”的问题; 从工程管理的角度,软件设计可以分成概要设计(总体
2、设计、系统设计)与细节设计(详细设计)Page 5设计的重要性n设计提供了软件的表示,使得软件的质量评价成为可能。设计提供了软件的表示,使得软件的质量评价成为可能。n软件设计是将用户要求准确地转化成为最终软件产品的唯软件设计是将用户要求准确地转化成为最终软件产品的唯一途径。一途径。n软件设计在软件过程中处于技术核心,它是建模活动的最软件设计在软件过程中处于技术核心,它是建模活动的最后一个软件工程活动后一个软件工程活动,是后续开发步骤及软件维护工作的,是后续开发步骤及软件维护工作的基础。基础。 如果没有设计,建立的将是一个不稳定的系统如果没有设计,建立的将是一个不稳定的系统 :Page 6设计的
3、重要性Programs no design just like buildings no blueprintPrograms no design just like buildings no blueprint咋还要图呢?Page 7从分析模型到设计模型Page 8从分析模型到设计模型Anal ysi s M odeluse-cases - text use-case di agram s acti vi ty di agram s swi m l ane di agram sdata fl ow di agram s control -fl ow di agram s processi ng
4、 narrati vesf fl lo o w w - -o o r ri ie e n n t te e d d e e l le e m m e e n n t ts sb b e e h h a a v v i io o r ra a l le e l le e m m e e n n t ts sc c l la a s ss s- -b b a a s se e d de e l le e m m e e n n t ts ss sc c e e n n a a r ri io o - -b b a a s se e d de e l le e m m e e n n t ts sc
5、l ass di agram s anal ysi s packages CRC m odel s col l aborati on di agram s state di agram s sequence di agram sD D a a t ta a / / C C l la a s ss s D D e e s si ig g n nA A r rc c h h i it te e c c t tu u r ra a l l D D e e s si ig g n nI In n t te e r rf fa a c c e e D D e e s si ig g n nC C o o
6、 m m p p o o n n e e n n t t- - L L e e v v e e l l D D e e s si ig g n nDesi gn M odelPage 91.2 设计概念1.2.1 1.2.1 模块化模块化 easier to build, easier to change, easier to fix .Page 101.2.1 1.2.1 模块化模块化n 在计算机软件领域,模块化的概念已被推崇了近四十年。目前,几乎所有的软件体系结构都体现了模块化的思想,即把软件划分为可独立命名和编址的构件,每个构件称为一个模块模块,每个模块完成一个子功能,当把所有模块组装到
7、一起成为一个整体时,便可以完成指定的功能。n 模块组成系统或子系统。n “一个复杂问题分割成若干个容易解决、容易管理的小问题后更易于求解”,模块化正是以此为依据把系统划分成若干个模块,各个击破。 Page 11模块划分与成本模块划分与成本n 如果模块是相互独立的,模块越小,每个模块的工作量越少;但当模块数增加时,模块间的联系随之增加,把这些模块联接起来的工作量也随之增加。Page 121.2.2 1.2.2 信息隐藏与独立性信息隐藏与独立性n 信息隐藏原理信息隐藏原理:模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块来说不可访问;每个模块只完成一个相对独立的特定功能;模块之
8、间仅交换那些为完成系统功能必须交换的信息,即模块应该功能独立的。 n 采用信息隐藏原理指导模块设计有很多好处:采用信息隐藏原理指导模块设计有很多好处: 1)它支持模块的并行开发; 2)减少测试和后期维护的工作量。因为测试和维护阶段不可避免地要修改设计和代码,模块对大多数数据和过程处理细节的隐藏可以减少错误向外传播。 3)整个系统扩充功能只需“插入”新模块,原有的多数模块无须改动。 Page 131.2.2 1.2.2 信息隐藏与独立性信息隐藏与独立性Page 14模块独立性(模块独立性(IndependencyIndependency)n 如果说,一个模块在不需要另一个模块的情况下,能够完整地
9、执行其功能,我们就称这两个模块是完全独立的。n 模块独立性的概念是模块化、抽象和信息隐藏概念的直接产物,模块独立性是通过开发具有“专一”功能和“避免”与其他模块过多交互作用的模块来达到的。 n 模块独立性可用两个定性准则来度量:耦合性耦合性(coupling)和内聚性内聚性(cohesion)。n 耦合是模块之间相对独立性的量度,而内聚则是模块功能相对强度的量度。 Page 15耦合性(耦合性(couplingcoupling)n 耦合性是对软件程序结构中各个模块之间相互关联程度的一种度量。n 耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置、方式以及通过接口传送数据的多少等。n 在设
10、计软件时应追求尽可能松散耦合松散耦合的系统。因为对这类系统中任一模块的设计、测试和维护相对独立。由于模块间联系较少,错误在模块间传播的可行性也随之变小。模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性。 Page 16内聚性(内聚性(cohesioncohesion)n 内聚是信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度。 n 内聚和耦合是相互关联的。在程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。但这也不是绝对的。n 软件概要设计的目标是力求增加模块的内聚,尽量减少模块间的耦合。但增加内聚比减少耦合更重要,应当把更多的注意力集中到提高
11、模块的内聚程度上来。 Page 171.2.3 1.2.3 抽象抽象n 人类在认识复杂现象的过程中使用的最强有力的思维工具就是抽象抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。n 把这些相似的地方集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说,抽象就是抽出事物的本质特性而暂时不考虑它们的细节。n 一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一些较低级的概念构造和理解,如此进行下去,直至最低层次的具体元素。 n 软件工程过程的每一步都是对较高一级抽象的解作一次较具体化的描述。 Page 18过程抽象与数
12、据抽象过程抽象与数据抽象implemented with a knowledge of the object that is associated with enterPage 19过程抽象与数据抽象过程抽象与数据抽象implemented as a data structurePage 20 “逐步求精”是与“抽象”密切相关的一个概念,它由N.Wirth提出,可视为一种早期的自顶向下设计策自顶向下设计策略略,其主要思想是:针对某个功能的宏观描述,用逐步求精的方法不断地分解,逐步确立过程细节,直至该功能用程序语言描述的算法实现为止。 因为求精的每一步都是用更为详细的描述替代上一层次的抽象描述,
13、所以在整个设计过程中产生的、具有不同详细程度的各种描述,组成了系统的层次结构。层次结构的上一层是下一层的抽象,下一层是上一层的求精。 1.2.1.2.4 4 逐步求精(细化)逐步求精(细化) Page 21openwalk to door;reach for knob;open door;walk through;close door.repeat until door opensturn knob clockwise;if knob doesnt turn, then take key out; find correct key; insert in lock;endifpull/push
14、doormove out of way;end repeat1.2.1.2.4 4 逐步求精(细化)逐步求精(细化) Page 221.3 设计过程活动n 体系结构设计n 抽象描述n 接口设计n 组件设计n 数据结构设计n 算法设计Page 23软件设计过程Page 242. 体系结构设计n 体系结构(architecture,又称架构)设计的任务是要识别出组成系统的子系统并建立子系统的控制和通信框架。n 体系结构设计的输出是软件体系结构的描述。n 体系结构设计是联系需求描述与其他设计活动的桥梁。Page 25进行体系结构设计的好处n 有利于有利于Stakeholders之间进行沟通之间进行沟
15、通nArchitecture may be used as a focus of discussion by system stakeholders.n 有利于系统分析有利于系统分析nMeans that analysis of whether the system can meet its non-functional requirements is possible.n 有利于大规模复用有利于大规模复用nThe architecture may be reusable across a range of systems.Page 26体系结构与系统特性n 性能n Localize crit
16、ical operations and minimise communications. Use large rather than fine-grain components.n 保密性n Use a layered architecture with critical assets in the inner layers.n 安全性n Localize safety-critical features in a small number of sub-systems.n 可用性n Include redundant components and mechanisms for fault t
17、olerance.n 可维护性n Use fine-grain, replaceable components.Page 27体系结构之间的冲突n Using large-grain components improves performance but reduces maintainability.n Introducing redundant data improves availability but makes security more difficult.n Localizing safety-related features usually means more communi
18、cation so degraded performance.Page 282.1 系统构成n 体系结构设计的第一个阶段通常是将一个系统分解成一组相互作用的子系统系统构成。n 通常可以采用方块图来描述系统结构的概况,而用其它的一些特别模型来表示子系统如何分享数据,如何分配功能以及连接方式Page 29例:打包机器人控制系统Page 30方块图的特点n 非常抽象-不显示组件之间的本质关系和子系统的外部特征,只给出系统构成的高层抽象;n 有利于不同层次的系统参与人员进行交流与沟通。Page 31体系结构设计决策n 体系结构设计是一个创造性的过程,所以不同类型的系统的设计过程与设计活动是不尽相同的。
19、n 然而,在体系结构设计过程中的一些问题的研究是适合所有系统设计的,因此从问题决策角度看待体系结构设计比从活动角度看待它更加有效。Page 32n Is there a generic application architecture that can be used?n How will the system be distributed?n What architectural styles are appropriate?n What approach will be used to structure the system?n How will the system be decomp
20、osed into modules?n What control strategy should be used?n How will the architectural design be evaluated?n How should the architecture be documented?体系结构设计要考虑的问题Page 33系统的组成n 系统的组成反映的是系统组织所采用的基本策略。n 三种应用广泛的组成类型:n数据中心体系结构(容器模型);n客户/服务器体系结构;n抽象机或分层体系结构。Page 342.1.1 数据中心体系结构(容器)n 构成系统的子系统之间交换信息通常可以采用以
21、下两种方式:n所有共享数据放到一个中心数据库(容器)中,所有子系统都能从中存取数据;n每一个子系统维持自己的一个数据库,子系统之间的数据交互通过消息传递来实现。n 当系统中存在大量的数据共享时,数据中心(容器)模型是最为常用的体系结构风格。Page 352.1.1 数据中心体系结构(容器)Page 36例:CASE工具集的体系结构Page 37数据中心模型的特点n 优点优点n共享大量数据的有效方式,不同子系统间无需数据转换;n子系统无需去考虑数据如何被集中管理的;n共享数据模型是以容器模式发布的。n 缺点缺点n子系统必须与容器数据模型相一致才能共享数据;n数据进化会比较困难而且代价较高;n将容
22、器分布到多台机器上比较困难。Page 382.1.2 客户/服务器体系结构n 客户/服务器模型是一个分布式系统模型,数据和加工过程在多个处理器之间分配;n 这种模型的主要组成:n一组为其它子系统提供服务的单机服务器;n一组向服务器请求服务的客户机;n连接客户机与服务器的网络。Page 39例:电影图片系统的体系结构Page 40客户-服务器模型的特点n 优点:n 分布式数据处理与共享;n 有效地利用网络,并且可以使用较便宜的硬件设备;n 可以容易地添加或更新服务器,不会影响系统其它部分。n 缺点:n 没有统一的共享数据模型,所以子系统可以以不同的方式组织数据,不利于新增服务器的数据集成;n 每
23、个服务器需要自己负责数据管理;n 缺少对于服务器名称和服务状态的集中管理。Page 412.1.3 分层(抽象机)体系结构n 这种模型把系统组织成一系列的层次(抽象机),每一层提供一组服务;n 这种模型支持增量式的开发,不同层次的服务可以单独交付;n 层与层之间以接口相联系,一个接口发生改变,只有毗邻的层会受到影响;Page 42例:版本管理系统Page 43经典的三层结构数据库数据库销售组件销售组件支付组件支付组件表示层表示层业务逻辑层业务逻辑层数据访问层数据访问层数据库访问组件数据库访问组件Page 442.2 模块化分解n 模块化分解要将子系统分解成模块;n 系统分解与模块分解之间并没有
24、严格的界限。n 子系统与模块主要是功能粒度的区别:n子系统是功能相对独立的一个系统(由模块构成),向其它的子系统提供服务;n模块是一个向系统内其它组件提供服务的系统组件,功能粒度通常不足以作为一个系统考虑。Page 45模块分解策略n 两个重要分解策略:n面向对象架构模型,将系统分解成一组相互通信的对象,对象间以消息的方式进行协作;n面向功能的数据流(流水线)架构模型,将系统分解成一些功能模块(过滤器),这些模块接受输入,进行处理产生输出。 n 可能的话,设计之初要尽量避免并发设计,这样可以在设计、实现、测试等工作相对容易。Page 462.2.1 面向对象架构模型n 这种方法把系统分解成一些
25、具有良好接口的松散耦合的对象。n 面向对象的分解考虑如何识别对象类、对象属性以及对象操作。n 实现时,对象从类中产生,再使用某种控制模型来协调对象间的操作。Page 47例:发票处理系统Page 48对象方法的特点n 优点:n对象间是松耦合,所以对象可以在不影响其他对象的情况下进行修改;n对象可以映射现实世界的实体,易理解,可复用;n面向对象实现语言已经广泛应用;n 问题:n对象通过接口被使用,如果接口发生变更,可能对所有使用该对象的用户都会产生影响;n对复杂实体的映射比较困难。Page 492.2.2 面向功能的数据流模型n 这种方式中,子系统被分解成功能函数,函数处理输入产生输出;n 当转
26、换作为一个单独的过程时,这种模型有时被称为管道与过滤器(Unix术语);n 当对数据的处理顺序进行时,这种模型也被称为批处理模型;n 这种模型在数据处理系统中应用普遍,而对于交互式系统不太适合。Page 50例:发票处理系统Page 51数据流模型的特点n 优点:n支持函数转换的复用;n很直观,易沟通;n比较容易添加新的函数转换;n实现容易。n 问题:n把数据和操作分开考虑,则需要定义一种对所有数据都通用的标准格式,这样做既增加了系统的负担又可能无法集成那些不兼容的数据格式转换;n基于事件的交互式系统很难用数据流模型来表示。Page 522.2.3 结构化架构设计方法n 从系统设计的角度出发,
27、软件设计方法可以分为三大类。第一类是根据系统的数据流进行设计,称为面向数据流的面向数据流的设计设计或者过程驱动的设计,以结构化设计方法结构化设计方法为代表。第二类是根据系统的数据结构进行设计,称为面向数据结构面向数据结构的设计的设计或者数据驱动的设计,以LCP(程序逻辑构造)方法、Jackson系统开发方法和数据结构化系统开发(DSSD)方法为代表。第三类设计方法即面向对象的设计面向对象的设计。Page 53n 结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。该方法实施的要点是: 建立数据流的类型。 指明流的边界。 将数据流图映射到系统结构。 用“因子化
28、”方法定义控制的层次结构。 用设计测量和一些启发式规则对结构进行细化。n 数据流可以分成变换型数据流和事务性数据流,相应得到的系统结构也分为变换型系统结构和事务型系统结构 2.2.3 结构化架构设计方法Page 54在系统结构图(在系统结构图(SCSC)中的模块中的模块 n 在系统结构图中不能再分解的底层模块为原子模原子模块块。如果一个软件系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其它所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。如果系统结构图是完全因子分解的,就是最好的系统。 Page 55n 一般地,在系统结构图中有一般地,在系统结构图中有4
29、 4种类型的模块:种类型的模块: v 传入模块传入模块 :从下属模块取得数据,经过某些处理,再将其传送给上级模块。v 传出模块传出模块 :从上级模块获得数据,进行某些处理,再将其传送给下属模块。v 变换模块变换模块 :即加工模块。它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。大多数计算模块(原子模块)属于这一类。v 协调模块协调模块 :对所有下属模块进行协调和管理的模块。 在系统的输入输出部分或数据加工部分可以找到这样的模块。在一个好的系统结构图中,协调模块应在较高层出现。 在实际系统中,有些模块属于上述某一类型,还有一些模在实际系统中,有些模块属于上述某一类型,还有
30、一些模块是上述各种类型的组合。块是上述各种类型的组合。 在系统结构图(在系统结构图(SCSC)中的模块中的模块 Page 56在系统结构图(在系统结构图(SCSC)中的模块中的模块 Page 572.2.3.12.2.3.1变换型数据流与变换变换型数据流与变换型系统结构型系统结构n 变换型数据处理问题的工作过程大致分为三步,即取得数取得数据,变换数据据,变换数据和给出数据给出数据。n 变换数据是数据处理过程的核心工作,而取得数据只不过是为它做准备,给出数据则是对变换后的数据进行后处理工作。 n 典型的变换型数据流图具有如下结构特点:信息外部表示内部表示时间输入流输出流变换中心Page 58例子
31、:例子:1:输入A2:A-B变换中心4:C-D6:输出E3:B-C5:D-EABC(逻辑输入)ED(逻辑输出)加工1取得系统物理输入数据A ,加工2和3对输入数据进行简单处理,得到系统逻辑输入C。加工4作为系统核心处理构件,进行C-D数据变换,获得系统逻辑输出D。加工5对系统逻辑输出数据进行格式转换等,加工6进行系统数据物理输出。Page 59n 系统的结构图由输入、中心变换和输出等三部分组成。 系统结构图系统结构图Page 60系统结构图系统结构图n 设计时,需要区分输入流、输出流和中心变换部分,即标明流的边标明流的边界界。(不同的设计人员可能选择不同的流边界,这将导致不同的系统结构图。)
32、n 首先设计主模块首先设计主模块,用程序名字为它命名,将它画在与中心变换相对应的位置上。做为系统的顶层,它调用下层模块,完成系统所要做的各项工作。n 在系统结构的第一层,为每一个逻辑输入设计一个输入模块,它为主模块提供数据;为每一个逻辑输出设计一个输出模块,它将主模块提供的数据输出;为中心变换设计一个变换模块,它将逻辑输入转换成逻辑输出。第一层模块与主模块之间传送的数据应与数据流图相对应。(后续)Page 61n 然后自顶向下,逐层细化自顶向下,逐层细化,设计中、下层模块。这一步工作是为每一个输入模块、输出模块、变换模块设计它们的从属模块。n 输入模块要向调用它的上级模块提供数据,因而它必须有
33、两个下属模块:一个是接收接收数据;另一个是把这些数据变换变换成它的上级模块所需的数据。n 输出模块是从调用它的上级模块接收数据用以输出,因而也应当有两个下属模块:一个是将上级模块提供的数据变换变换成输出的形式;另一个是将它们输出输出。n 中心变换模块的下层模块没有通用的设计方法,一般应参照数据流图的中心变换部分和功能分解的原则来考虑如何对中心变换模块进行分解。 系统结构图系统结构图Page 622.2.3.22.2.3.2事务型数据流与事务型系事务型数据流与事务型系统结构统结构n 事务型数据处理问题的工作机理是接受一项事务,根据事务处理的特点和性质,从若干个操作序列从若干个操作序列中选择分派一
34、个中选择分派一个适当的,然后给出结果。n 我们把完成选择分派选择分派任务的部分叫做事务处理中事务处理中心心,或分派部件。Page 632.2.3.22.2.3.2事务型数据流与事务型系事务型数据流与事务型系统结构统结构Page 64事务型分析的映射方式事务型分析的映射方式DGFE接收通路C通路B通路A通路总控E调度DGA-CTLB-CTLC-CTLFPage 65n 事务流应映射为包含一个输入分支一个输入分支和一个分类事务处一个分类事务处理分支理分支的程序结构。n 输入分支结构的开发与变换流的方法类似。n 分类事务处理分支结构包含一个调度模块调度模块,它调度和控制下属的操作模块。n 事务型系统
35、结构图在数据处理中经常遇到,但是更多的是变换型与事务型系统结构图的结合。例如,事务型系统结构中的某个分支本身又具有变换型的特点。 Page 662.3 控制模型n 控制模型考虑子系统之间的控制流,这是分解模型不考虑的问题。n 对控制流建模有两种一般性的方法:n集中式控制集中式控制n One sub-system has overall responsibility for control and starts and stops other sub-systems.n基于事件的控制基于事件的控制n Each sub-system can respond to externally genera
36、ted events from other sub-systems or the systems environment.Page 672.3.1 集中控制n 这种控制方式中有一个子系统被指定为系统控制器来负责管理其他子系统的执行。n 这种控制模型按子系统顺序执行还是并行执行分为两类:n 调用调用- -返回模型返回模型nTop-down subroutine model where control starts at the top of a subroutine hierarchy and moves downwards. Applicable to sequential systems.n
37、 管理者模型管理者模型nApplicable to concurrent systems. One system component controls the stopping, starting and coordination of other system processes. Can be implemented in sequential systems as a case statement.Page 68调用-返回模型Page 69实时系统控制Page 702.3.2 事件驱动系统n 事件驱动的控制模型通过外部产生的事件来驱动系统。n 有两种主要的事件驱动模型:n广播模型广播模型
38、n An event is broadcast to all sub-systems. Any sub-system which can handle the event may do so;n中断驱动模型中断驱动模型n Used in real-time systems where interrupts are detected by an interrupt handler and passed to some other component for processing.Page 71广播模型n 广播模型对于基于网络的分布式系统很有效。n 这种模型中,子系统注册其感兴趣的特别事件,当这些
39、事件发生时,控制就被转移到能处理这些事件的子系统。n 这种模型的控制策略不在事件和消息处理器的内部。由子系统决定需要哪些事件,消息处理器只负责将事件发给它们。n 这种模型易于新系统的集成,缺点是子系统不能知道是否和什么时侯事件将会被处理。Page 72选择性广播Page 73中断驱动系统n 这种模型在需要对外部事件做出迅速处理的实时系统中非常有用。n 每种中断类型对应一种要处理的事件,分别与一个内存地址相连,该内存地址存放的是与中断类型相对应的事件处理器的地址。n 这种控制的优点是能够对事件做出非常迅速的反应,缺点在于它的编程较为复杂且不易验证有效性。Page 74中断驱动控制Page 753
40、 构件级设计建模n 构件级设计是要在接近代码的抽象级上表示内部数据结构和每个构件的处理细节。n 构件级设计定义了数据结构、算法、接口特征和分配给每一个软件构件的通信机制。n 构件级设计是把高层设计模型转化为可运行程序的桥梁。Page 763.1 什么是构件?n Unified Modeling Language Specification OMG01 把构件定义为: n “ 系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列的接口”。n OO 观点: 一个构件包含一组协作类。n 传统观点: 一个构件就是程序的一个功能要素,程序由处理逻辑以及实现处理逻辑所需的内部数据结构以
41、及能够保证构建被调用和实现数据传递的接口构成。传统的构件通常称为模块。Page 77面向对象构件P rin tJo bc o m p u te Jo bin itia te Jo bnum berO fPages num berO fSides paperType paperW eight paperSize paperC olor m agnification colorRequirem ents productionFeatures collationO ptions bindingO ptions coverStock bleed priority totalJobC ost W O n
42、um ber P ri n tJ o bcom putePageC ost() com putePaperC ost () com puteProdC ost () com puteTotalJobC ost() buildW orkO rder() checkPriority () passJobto Production() e l a b o ra te d d e s i g n c l a s s co m p u teJo bcom putePageC ost () com putePaperC ost () com puteProdC ost () com puteTotalJo
43、bC ost () in itiateJo bbuildW orkO rder() checkPriority () passJobto Production()d e sig n c o m p o n e n tn u m b e rO fP a g e s n u m b e rO fS id e s p a p e rT y p e m a g n ific a tio n p ro d u c tio n F e a tu re sP rin tJo bc o m p u te Jo b C o st() p a ssJo b to P rin te r() a n a ly sis
44、 c la ssPage 78传统构件Com putePageCostdesi gn com ponentaccessCostsDBgetJobDatael aborated m odul ePageCosti n: j ob si ze i n: col or =1, 2, 3, 4 i n: pageSi ze = A, B, C, B out: BPC out: SF i n: num ber Pages i n: num ber Docs i n: si des= 1, 2 i n: col or =1, 2, 3, 4 i n: page si ze = A, B, C, B out
45、: page cost j ob si ze (JS) = num ber Pages * num ber Docs;l ookup base page cost (BPC) - - accessCostsDB (JS, col or ); l ookup si ze f actor ( SF) - - accessCostDB (JS, col or , si ze) j ob com pl exi ty f actor (JCF) = 1 + (si des- 1)*si deCost + SFpagecost = BPC * JCF getJobData (num ber Pages,
46、num ber Docs, si des, col or , pageSi ze, pageCost)accessCostsDB ( j obSi ze, col or , pageSi ze, BPC, SF)com putePageCost ()Page 793.2 基本设计原则(OO)n 开关原则 (OCP): “一个模块(构件)应该对外延具有开放性,对修改具有封闭性”。n Liskov Liskov 替换原则 (LSP): “子类可以替换它们的基类”。 n 依赖倒置原则 (DIP): “依赖于抽象,而非具体实现“。 n 接口分离原则 (ISP): “多个用户专用接口比一个通用接口要好”
47、。n 发布复用等价性原则 (REP):“复用的粒度就是发布的粒度”。 n 共同封装原则 (CCP):“一同变更的类应该合在一起 ”。n 共同复用的原则 (CRP): “不能一起复用的类不能被分到一组”。 Page 80基本设计原则(OO)Page 813.3 构件级设计指导方针n构件n 对那些已经确定为体系结构模型一部分的构件应该建立命名约定,并对其做进一步的细化和精化,使其成为构件级模型的一部分。n接口n 接口提供关于通信和协作的重要信息 (也可以帮助我们实现OCP原则)。n依赖与继承n 为了提高可读性,依赖关系是自左向右,继承关系是自下(派生类)向上(基类)。构件间的依赖通过接口表示,而不
48、是构件到构件。Page 823.4 设计传统构件n 设计传统构件的工作主要集中在对模块算法(程序逻辑)的设计上。n 算法设计是最接近编码的设计活动。n 算法设计的步骤:n复查组件的设计描述;n使用逐步求精法来开发算法;n使用结构化程序设计方法来实现算法逻辑;n使用形式化方法来验证算法逻辑。Page 83逐步求精Page 84结构化程序设计方法的特点n 使用限定好的一组逻辑构造:n顺序型n条件型 if-then-else, select-casen循环型 do-while, repeat untiln 能够提高代码的可读性和可测试性;Page 85算法设计模型n 我们需要在一个能够进行质量复查的
49、细节层次上描述算法。n 描述方法通常包括:n 图形法 (e.g. flowchart, box diagram)n 判定表n 伪码 (e.g., PDL)Page 86图形化表示方法流程图ax1x2b3x45cdefgxxadd a condition Z, if true, exit the programPage 87判定表C Co on nd di i t ti i o on ns sregul ar custom er si l ver custom er gol d custom er speci al di scountR Ru ul l e es sno di scount ap
50、pl y 8 percent di scount appl y 15 percent di scount appl y addi ti onal x percent di scountTFTTTTTF13564FTTT2R Ru ul l e es sPage 88程序设计语言 (PDL)if-then-elseif condition x then process a; else process b; endif PDLeasy to combine with source code machine readable, no need for graphics input graphics
51、can be generated from PDL enables declaration of data as well as procedure easier to maintainPage 894 面向对象的设计方法n 面向对象的设计过程同样包括体系结构设计、组件设计、数据库设计和算法设计等活动。n 面向对象的设计建模是在面向对象分析模型的基础上进行进一步的分析扩展,搭建目标系统的解决方案。Page 90面向对象的设计项目干系人Mental Modle需求模型(需求分析)架构模型(架构设计)设计模型(构件设计)解决方案模型编码NFRsFRsn架构设计与构件设计共同构成系统的解决方案。Pa
52、ge 914.1 软件架构设计n 软件架构(Software Architecture)就是关于如何构建软件的一些最重要的设计决策,这些决策往往将围绕将系统分成哪些部分、各部分之间如何交互展开的。Page 92架构的类比-建造房屋Page 93为房屋建立一个模型- - 对早期成就的模仿对早期成就的模仿 - - 从失败中学习从失败中学习 - - 对其他影响因素对其他影响因素的综合的综合 - - 试验试验任何时候要抛弃已经任何时候要抛弃已经具有的习惯时,特别是大的项目中,您最好具有的习惯时,特别是大的项目中,您最好要用多十倍的努力、要用多十倍的努力、多十倍的调查多十倍的调查. - LeMessui
53、erPage 94常见民用建筑的种类n 社区n住宅, 公寓, 花园, 教育, 医院, 宗教设施n 商业n商店和零售店, 饭店, 宾馆, 写字楼, 银行, 机场n 工业n工业建筑, 实验室, 农场建筑n 休闲n运动场馆, 戏剧院和电影院, 博物馆Page 95民用建筑中的受力压缩压缩Load拉伸拉伸LoadPage 96多角度的视图场地场地结构结构服务服务空间计划空间计划 材料材料Page 97软件构架中的受力性能性能容量容量功能性功能性可用性可用性恢复力恢复力失效安全失效安全容错能力容错能力Have an architecture that makes sense before you wri
54、te 3.5 millionlines of code. - Patrick Naugton技术因素技术因素Page 98软件架构视图n 一个架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了与此方面无关的实体。 -Philippe KruchtenPage 99办公室里的争论n 办公室里,关于什么是软件架构,争论正酣:n 程序员说,软件架构就是要决定需要编写哪些类、使用那些现成的框架。n 程序经理笑了,他说,软件架构就是模块的划分和接口的定义。n 系统分析员笑了,他说软件架构就是为业务领域对象的关系建模。n 配置管理员笑了,他说软件架构就是开
55、发出来以及编译后的软件到底是个啥结构。n 数据库工程师笑了,他说软件架构规定了持久化数据的结构。n 部署工程师笑了,他说软件架构规定了软件部署到硬件的策略。n 用户笑了,他说软件架构规定了一个个功能子系统如何划分。n 大家想了想说,这些架构视图好像我们都需要啊!n 软件架构师哭了Page 100软件架构为谁设计客户用户开发人员管理人员软件架构师业务目标约束条件功能和运行期质量开发期质量管理的基础Page 101架构设计的5视图法逻辑架构开发架构运行架构物理架构数据架构功能需求数据需求开发期质量属性安装和部署需求运行期质量属性Page 102例:设备调试系统案例设备调试员数据采集器查看设备状态定
56、时器发送调试命令设备用例图:Page 103逻辑架构n 应用层负责设备状态的显示,并提供模拟控制台供用户发送调试命令;n 通讯层负责在RS323协议之上实现一套专用的应用协议;n 负责对调试设备的具体控制。应用层(from Logical View)通讯层(from Logical View)设备控制层(from Logical View)Page 104物理架构机调试机数采器设备专有连接专有连接桌面部分嵌入部分Page 105逻辑层到物理层的映射桌面部分嵌入部分应用层通讯层设备控制层Page 106架构设计流程1.为系统选择架构类型2.为架构重要用例创造一个详细的部署图3.精炼架构模型来满足
57、NFRs4.创建和测试架构基线5.在Tier和Layer图中记录技术选择6.从最终的、详细的部署图中创建一个架构模板Page 107为架构中重要的用例创建详细的部署图为系统选择一个架构类型 精化架构模型来满足非功能性需求(NFRs) 创建架构体系的基线在Tier 和 Layer图中记录技术选择ArchCode SRSClient Server Client Server client domainBackendCOBRASwing DBMSPC Ultra60 SunFire TcpPage 108选择架构类型 选择可使用的架构依赖于很多因素,包含:系统需求的平台约束用户交互作用模式持续性机制
58、数据和事务的完整性Page 109选择架构类型n 数以百计的成功软件架构。他们之间有一些共同类型:独立应用(Standalone application)客户服务器(层)应用(Client/Server(2-tiers)applications) N层应用(N-tiers applications) Web-centric(N层)应用(Web-centricn-tiers applications) 企业N层应用(Enterprise n-tiers applications)Page 110独立应用n 没有外部数据源(所有的应用数据都在文件服务中)n 没有网络通信(所有的应用组件都在一台机器
59、中)Page 111客户服务器(层)应用n 胖客户端(业务逻辑在客户端)n 数据存储者管理数据的完整性Page 112N-层应用n 瘦客户端(业务逻辑在应用服务端)n 应用服务器管理数据完整性Page 113Web-Centric(N-层)应用n Web浏览器成为瘦客户端n Web服务器提供表示和业务逻辑Page 114企业(N-层)应用类型Page 115企业(N-层)应用类型n 两个瘦客户端 Web浏览器为Internet使用者提供 GUI瘦客户端为Intranet使用者提供n Web应用服务器提供表示逻辑n 应用服务器提供业务逻辑Page 116酒店预定系统架构Page 117创建详细的
60、部署图n 为架构有影响的用例设计组件n 将设计组件置于架构模型中n 将设计和基础结构组件合并后然后在画出详细的部署图Page 118详细的部署图Page 119创建架构模板n 简化详细的部署图让其只剩下设计组件:边界,服务,实体。n 取代具有类型的设计组件名字(for example, ResvSvcImpl_Stub becomesServiceImpl_Stub)Page 120架构模板实例Page 121应用SunTone 架构方法论n SunTone 架构方法论推荐了下列架构维度:用tier层次结构分离应用程序的逻辑关系。用layer层次结构来组织组件及容器关系。系统质量通过tier层
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版智慧城市建设项目委托投标协议书范本3篇
- 2025版新企业股东协议书范本:企业创新发展计划3篇
- 2025版新车销售与二手车置换优惠套餐合同范本2篇
- 2025版学校食堂劳务承包与营养膳食研究开发协议3篇
- 2025年度个人房产买卖合同违约责任约定书
- 2025个人合伙企业股份清算转让协议3篇
- 2025版个人借款担保合同标准化模板4篇
- 2025年全球及中国水平运动输送机行业头部企业市场占有率及排名调研报告
- 2025-2030全球高牌号取向硅钢行业调研及趋势分析报告
- 2025-2030全球牵引型AGV行业调研及趋势分析报告
- 2025年上半年长沙市公安局招考警务辅助人员(500名)易考易错模拟试题(共500题)试卷后附参考答案
- 2025河北邯郸世纪建设投资集团招聘专业技术人才30人高频重点提升(共500题)附带答案详解
- 慈溪高一期末数学试卷
- 天津市武清区2024-2025学年八年级(上)期末物理试卷(含解析)
- 重大事故隐患判定标准与相关事故案例培训课件
- 2024年度节后复工建筑施工安全培训交底
- 中建商务工作指南手册
- 耳鼻咽喉:头颈外科疾病诊断流程与冶疗策略
- 贵州省2023年中考英语真题
- 个人借条电子版模板
- 中国思想史 马工程329P
评论
0/150
提交评论