1、第 二 章,软件设计基础,软件设计是软件开发的关键步骤,直接影响软件质量。软件设计阶段要解决“如何做”的问题。 一、软件设计阶段的任务与目标设计任务:将需求阶段获得的需求说明(模型)转换为计算机中可实现的系统。 设计阶段主要任务是:,2.1 软件设计概述,软件体系结构的设计 数据结构的设计 用户界面的设计 算法的设计,软件设计任务涉及多方面,可分为总体设计和详细设计。,软件设计 任务,软件设计的目标 就是构造一个高内聚低耦合的软件模型。,2.1.1 软件体系结构设计,软件体系结构确定了系统的组织结构和拓扑结构,显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。,体系结
2、构的设计过程的主要活动: 1.系统分解将系统分解为若干相互作用的子系统。 2.控制建模建立系统各部分间控制关系的一般模型。 3.模块分解 将子系统进一步划分为模块。,注意:往往子系统与模块之间没有明显界限.,体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计,而不关心模块的内部算法。 体系结构的分类:,一、仓库模型(The repository model)也称“容器模型 ”,是一种集中式的模型。各子系统可以直接访问中央数据仓库存储的共享数据。子系统之间紧密耦合。,一、仓库模型(The repository model),各子系统共享中央数据库中的数据共享容器模型 各子系统可以
3、有自己的数据库,子系统之间通过消息传递实现数据交换。,适宜命令控制系统、CAD系统,仓库模型的主要优缺点: 优点:1.共享大数据量的有效方法。2.子系统不必关心其它的子系统如何使用它所产生的数据。3.易于将新子系统集成,若新子系统也采用相同规范 。,缺陷:1.为了共享数据 ,各子系统必须有一致的数据视图 ,不可避免地会影响了整个系统的性能。2.子系统的改变,使产生的数据结构也可能发生改变。3.统一的数据库 结构(备份、安全、访问控制和恢复的策 ),将影响子系统的效率 。,二、 客户机/服务器模型(Client/Server Architectural Model),C/S结构是一种分布式模型,
4、采用发请求、得结果的模式: 客户机 向服务器发出请求(数据请求、网页请求、文件传输请求等等), 服务器 响应请求,进行相应的操作,将结果回传给客户机,客户机再将格式化后的结果呈现给用户。,C/S结构的应用都由三个相对独立的逻辑部分组成:,两层客户机/服务器模型Two Tier Client/Server Architectural Model,C/S的工作模式是一种远程过程调用(RPC,Remote Procedure Call)模式,允许客户端和服务器端有不同的软硬平台。,电影图片库系统的体系结构,例:Two Tier Client/Server Architectural Model,完整
5、的应用包含三个相对独立的逻辑部分,而两层的C/S结构只有两个端应用。应用逻辑应该映射到哪一端上呢? 三种情况:,两层C/S架构将数据表示和处理逻辑分开 ,但应用逻辑和两端之一是紧耦合的 ,不适宜多用户、多数据库,是非安全的网络环境。,2.三级/多级应用模型(Three/Multi Tier Model),第一级是数据库管理结点(database management node)。 第二级或中间级是“商业逻辑结点” (business logic node),是指具体应用中实施的程序逻辑和法则。 第三级是用户界面级,强调高效、方便易用的用户界面。,服务器,客户机,在多层模型中,中间层会用到应用服
6、务,包括事务服务、消息服务等等。常见的事务服务器有Microsoft Transaction Server,消息服务器有Microsoft Message Queue。,三、分布式对象结构(Distributed Objects Architecture),在C/S模型中,客户和服务器在服务/请求上的差别,在一定程度上限制了系统的灵活性和可扩展性。,采用分布式对象结构 :“对象(Object)”提供服务的系统组件(System Component)。每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。提供服务的对象就是服务器,而提出服务请求的对象就是客户。,四、 抽象机模型,又称为分层
7、模型,通常用于建立子系统的接口模型。每层提供一组服务,每层定义一个抽象机。典型的例子:,ISO/OSI 开放系统互连参考模型,优点:支持增量式开发。 缺点:系统构成,性能保证较困难。,五、控制摸型 考虑子系统之间的控制流。控制方式分为:,1.集中式控制,2.事件驱动系统 由外部产生的事件来驱动系统,分为: 广播模型 中断驱动的模型,软件设计分为总体设计和详细设计两个阶段。其工作流程可用下图表示:,1、设计阶段结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档。 2、每个设计步骤完成后,都应进行复审。常用的设计方法有: SD法、Jackson法、OOD法、HIPO法、 Parna
8、s法、 Warnier法等。,2.1.2 软件设计阶段,1.软件结构的准则 2. 模块化准则 3.软件独立性准则,2.2 软件设计准则,软件设计是软件开发过程的重要阶段,对保证软件系统的质量起着关键作用。但是如何保证软件设计的质量呢?有以下经过长期考验的设计准则:,2.3 结构化设计方法,SD(Structured Design)法与SA、SP法前后衔接,是结构化开发方法的核心。,一、SD 法的基本概念,1. SD 法的两个阶段总体设计任务: 解决系统的模块结构,即分解模块,确定模块功能及系统模块的层次结构。文档:模块结构图及其模块功能说明。详细设计对模块图中每个模块的过程进行描述,常用的描述
9、的方式有:伪代码,流程图,N-S图,PAD图等。,二、SD 法的设计步骤,从DFD图导出初始的模块结构图(SC)。中心变换型(transform center) _ 变换分析 事务处理型(transaction) _ 事务分析 按照SD法设计总则,改进模块结构图。,注意:模块结构图不同于“框图”。,2.3 结构化设计方法(续),这类数据流图可看成是对输入数据进行转换而得到输出数据的处理。DFD图可以明显分为“输入处理输出”三部分。,(物理输入),(逻辑输入),(逻辑输出),输 入,主加工,输 出,(物理输出),中心变换型 的 DFD 图,这类数据流图有一个数据处理中心,按加工的结果选择一个输出
10、数据流继续执行的处理。如下图所示:,分类,报名,付款,注销,查询,复审,采用“事务分析”(transaction Analysis)技术,事务处理型 的 DFD 图,实例:银行贷款文件管理 (MFUP),需求分析结果 DFD 图,编辑卡片加工分解,主加工是?,报告,报告,修改信息,顺序记录,新记录,按照“降低块间联系,提高块内联系”的设计总则进行修改,完善系统的模块图,写出模块的功能说明。,三、模块结构图的改进,功能模块的组成:执行某项任务的部分 出错处理部分返回结束标志,具体从以下方面改进: 1)尽可能建立功能模块功能模块具有最强的内聚性,应满足信息屏蔽原则:一个模块内所包含的信息(过程和数
11、据)对不需要这些信息的模块是不能访问的(黑盒)。,一、任务 详细设计阶段的任务是开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程进行设计和描述。二、常用的描述方法工具1、流程图2、结构化流程图(N-S图)3、PAD图问题分析图4、PDL 语言,2.4 详细设计,结构化流程图(N-S图),由顺序、选择、循环三种基本结构组成。,2.5 面向对象的设计方法,OOD(Object-Oriented Design)是面向对象方法在软件设计阶段应用与扩展的结果。是将OOA所创建的分析模型转换为设计模型,解决如何作的问题。分析模型与设计模型的描述方式具有一致性,只是从不同角度来描述系统。分
12、为静态模型和动态模型两类。,1,*,1,*,1,*,01,+LineItem,类 图,顺序图,电梯的状态表示,状态图,Onfirst floor,Go up (floor),Moving up do/moving to floor,Go up (floor),Idle timer=0 do/increase timer,arrived,Moving down do/moving tofloor,Go down (floor),timer= timer-out,Moving tofirst floor,arrived,arrived,随着各种应用软件的面市,作为人机接口的用户界面具有越来越重要的
13、作用,用户界面是否友好直接影响到软件的寿命与竞争力。因此,对用户界面的设计必须予以足够的重视。,2.6 用户界面设计,用户界面设计中的主要问题进行讨论。用户界面应具有的特性 什么是友好的用户界面。用户界面设计的任务 用户界面设计应该完成的工作。用户界面的基本类型 用户界面的工作模式。,总之,用户界面设计要以人为本。,用户界面设计迭代过程,用户界面设计原则: 1.可视性和可支付性(Visibility and Affordance)。 2.保持命令、菜单,颜色等统一(Strive for Consistency)。3.为频繁使用的用户提供快捷方式(Enable Frequent Users to
14、 Use Short Cuts)。 4.提供信息反馈(Offer Information Feedback)。 5.提供简单的错误处理(Offer Simple Error Handling)。 6.方便的操作、回滚(Permit Easy Reversal of Actions)。7.降低短期记忆回忆(Reduce Short-Term Memory Load)。,2.6.1 用户界面的交互性,交互性是用户界面最重要的特性,按照交互形式分为5类:,2.6.2 用户界面的基本类型,1、菜单(menu)按照显示方式分:正文菜单、图标菜单、正文和图标混合菜单,如:开始菜单。,按屏幕位置和操作风格
15、固定位置、浮动位置(弹出)、下拉式、嵌入式,开始菜单,2、图 象在用户界面中,加入丰富多彩的画面,将能够更加形象地为用户提供有用的信息,以达到可视化的目的。主要的处理操作有:图象的隐蔽和再现、屏幕滚动和图案显示、动画等。,图 形,3、对话框对话框是在需要时,显示在屏幕上一个矩形区域内的图形和正文信息。以实现系统和用户之间的通信。其显示方式与弹出式菜单类似,即瞬时弹出。 有三种对话形式:,4、窗口(window)图形学中称为视图区(Viewport),视为虚拟屏幕。一个实用窗口,可包含部件:菜单区(menu bar) 图标区(icon bar)标题区(title bar) 移动区(move bar)大小区(size bar) 退出区(quit bar) 用户工作区(users work bar)横向滚动区(horizontal scroll bar) 纵向滚动区(vertical scroll bar),窗 口,数据I/O界面,是系统的重要组成部分。主要从输入速度和减少出错率考虑。,1、尽量减少输入工作量对相同内容输入设置默认值自动填入列表选择或点击选择,2、输入屏幕与输入格式匹配即屏幕显示按照数据使用频率、重要性、次序等组织。,3、数据输入的一般规则确定输入 交互动作确定删除 提供反馈,2.6.3 数据I/O界面设计,