软件工程复习笔记——第三章 软件设计基础

第三章 软件设计基础

3.1 软件设计概述

  • 软件设计阶段要解决“如何做”的问题

一、软件设计阶段得到任务与目标

  • 设计任务:将需求阶段获得的需求说明(模型)转换为计算机中可实现的系统。

    软件设计任务涉及多方面,可分为总体设计详细设计

    软件设计的目标就是构造一个高内聚低耦合的软件模型。

    主要任务:

    • 软件体系结构的设计
    • 数据结构的设计
    • 用户界面的设计
    • 算法的设计
3.1.1 软件体系结构设计
  • 软件体系结构确定了系统的组织结构和拓扑结构,显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。

  • 体系结构的设计过程的主要活动:

    • 1.系统分解—将系统分解为若干相互作用的子系统。
    • 2.控制建模—建立系统各部分间控制关系的一般模型。
    • 3.模块分解—将子系统进一步划分为模块。
  • 体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计

  • 体系结构的分类

    • 1.仓库模型—集中式的模型。各子系统可以直接访问中央数据仓库存储的共享数据。子系统之间紧密耦合

      • 优点:
        • 能有效共享大数据量
        • 子系统不关心其余子系统所产生的数据
        • 易于将采用相同规范的新子系统集成
      • 缺陷
        • 各子系统必须有一致的数据视图,会影响系统性能
        • 子系统的改变会使产生的数据结构也改变
        • 统一的数据库结构会影响子系统的效率
    • 2.客户机/服务器模型(C/S)—分布式模型,采用发请求、得结果的模式
      C/S结构的应用都由三个相对独立的逻辑部分组成:在这里插入图片描述
      C/S是一种远程过程调用模式,允许客户端和服务器端有不同的软硬平台。

      • 三级/多级应用模型

        • 第一级:数据库管理结点
        • 第二级或中间级“商业逻辑结点”——具体应用中实施的程序逻辑和法则。
        • 第三级:用户界面级——强调高效、方便易用的用户界面

        中间层会用到应用服务(事务服务——Microsoft Transaction Server、消息服务——Microsoft Message Queue)

    • 3.分布式对象结构

      • 在C/S模型中,客户和服务器在服务/请求上的差别,在一定程度上限制了系统的灵活性和可扩展性
      • 对象——提供服务的系统组件
      • 每个对象在逻辑上是平等的,可互相为对方提供所需的服务。
      • 提供服务的对象就是服务器提出服务请求的对象就是客户
      • 软件总线”的中间件即对象请求代理(ORB)
        • 流行的ORB技术标准:CORBA、DCOM
      • 分布式对象结构具有很好的开放性和透明性,用户可以非常方便地在总线上添加、更新或删除组件对象。
      • 分布式对象结构具有优良特性:
        • 1.可在系统布署完成后,再具体考虑服务的分布和如何提供服务的问题
        • 2.具有开放式结构,提供了极好的灵活性和可伸缩性。
        • 3.系统可进行动态分配
    • 4.抽象机模型(分层模型):通常用于建立子系统的接口模型。每层提供一组服务,每层定义一个抽象机

      • 典型的例子在这里插入图片描述
      • 优点:支持增量式开发
      • 缺点:系统构成,性能保证较困难
    • 5.控制模型
      考虑子系统之间的控制流。控制方式分为:

      • 集中式控制
      • 事件驱动系统——由外部产生的事件来驱动系统
        • 广播模型
        • 中断驱动的模型
3.1.2 软件设计阶段
  • 软件设计分为总体设计详细设计两个阶段。
  • 工作流程
  • 设计阶段结束要交付的文档是设计说明书,根据设计方法不同,有不同的设计文档.
  • 每个设计步骤完成后,都应进行复审。常用的设计方法有:SD法、Jackson法、OOD法、HIPO法、Parnas法、Warnier法等。

3.2 软件设计准则

  • 软件设计是软件开发过程的重要阶段,对保证软件系统的质量起着关键作用。
  • 保证软件设计的质量,须遵循以下设计准则:

一、软件结构的准则

  • 软件结构表示软件的系统结构,它是软件模块间关系的表示,均表示为层次关系
  • 有关指标
    • 深度:表示软件结构中从顶层模块到最底层模块的层数
    • 宽度:表示控制的总分布
    • 扇出数:指一个模块直接控制下属的模块个数
    • 扇入数:指一个模块的直接上属模块个数
  • 一个好的软件结构的形态准则是:顶部宽度小中部宽度最大底部宽度次之;在结构顶部有较高的扇出数在底部有较高的扇入数

二、模块化准则

  • 模块化就是将系统划分成若干模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,以满足所要求的整个系统的功能。
  • 我们利用模块化来降低软件复杂度。注意选择分解的最佳模块数。

三、软件独立性准则

  • 软件独立性的含义是指开发具有功能专一,模块之间无过多相互作用的模块。又称为模块独立性准则

  • 这种类型的模块可以并行开发开发容易能减少错误的影响,使模块容易组合、修改、测试。

  • 软件独立性的度量标准是两个定性指标:

    • 耦合性:用于描述模块之间联系的紧密程度

      • 耦合度:软件结构中模块间关联程度的一种度量
      • 耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过界面传送数据的多少等。
      • 设计软件应追求尽可能松散耦合的系统
      • 松散耦合系统中,任一模块的设计、测试和维护都相对独立
      • 松散耦合系统模块间联系较少,错误在模块间传播的可能性随之变小。
      • 模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性
    • 内聚性: 用于描述模块内部联系的紧密程度

      • 内聚度:模块内部各成分彼此结合的紧密程度
        内聚度按其高低程度分为七级,内聚度越高越好

3.3 结构化设计方法

  • SD法与SA法、SP法前后衔接,是结构化开发方法的核心。

一、SD法的两个阶段

  • 总体设计
    • 任务:解决系统的模块结构,即分解模块,确定模块功能及系统模块的层次结构
    • 文档:模块结构图及其模块功能说明
  • 详细设计:对模块图中的每个模块的过程都进行描述,常用的描述方式:伪代码,流程图,N-S图,PAD图等。

二、SD法的设计步骤

  • (1)从DFD图导出初始的模块结构图(SC)。

    • 中心变换型:变换分析
    • 事务处理型:事务分析
  • (2)按照SD法设计总则,改进模块结构图。(模块结构图不同于“框图”)在这里插入图片描述

    • 中心变换型的DFD图
      • 这类数据流图可看成是对输入数据进行转换而得到输出数据的处理。
      • DFD图可以明显分为“输入-处理-输出”三部分。

      • 事实上所有信息流都可归结为变换流
    • 事务处理型的DFD图
      • 这类数据流图有一个数据处理中心,按加工结果选择一个输出数据流继续执行处理。
      • 当信息流具有明显的“发射中心”时,可归结为事务流

三、模块结构图的改进

  • 按照“降低块间联系提高块内联系”的设计总则进行修改,完善系统的模块图,写出模块的功能说明。
    具体从以下方面进行改进:

    • 1)进可能建立功能模块

      • 功能模块具有最强的内聚性,应满足信息屏蔽原则:一个模块内所包含的信息(过程和数据)对不需要这些信息的模块是不能访问的(黑盒)
      • 功能模块的组成:
        • 执行某项任务的部分
        • 出错处理部分
        • 返回结束标志
    • 2)消除重复功能:若两模块含有重复的部分,应设法将重复的功能消去。

    • 3)模块的作用范围应与控制范围

      • 控制范围——结构方面的特点,包括模块及其下属模块。
      • 作用范围——判断所涉及到的模块,是从功能特点考虑的。
      • SD方法认为:当作用范围为控制范围的子集时,才能获得**较低的块间联系(**低耦合)。
    • 4)模块的大小适当

      • 大小指其篇幅,一般模块大小约50-100行为宜。
    • 5)模块的扇入扇出不宜太多

      • 扇出数一个模块调用其他模块的个数。
      • 扇入数一个模块被其他模块调用的个数
      • 除服务性模块外,模块的扇入扇出数不宜太多。否则块间联系增加(耦合会增加)。

3.4 详细设计

一、任务

  • 详细设计阶段的任务是开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程进行设计和描述

二、常用的描述方法工具

1.流程图
  • 五种基本结构
    • 顺序结构
    • 选择结构
    • 先判定型循环结构
    • 后判定型循环结构
    • 多情况选择
  • 任何复杂的程序流程图都应由以上五种基本结构组合而成
  • ISO认可的规定符号:
  • 优点:容易掌握,使用广泛
  • 缺点:本质上不具备逐步求精的特点,对于提高大型系统的可理解性作用甚微;不易表示数据结构;转移控制太方便。
  • 趋势:停止使用
2.结构化流程图(N-S图)
  • 盒图(Box Diagram):又称为N-S Charts,Chapin charts。由顺序、选择、循环三种基本结构组成。
  • 结构化流程图(N-S图)
  • 特点:
    • 没有箭头,不允许随意转移控制;
    • 每个矩形框都是一个功能框(特定结构的作用域),结构明确;
    • 局部及全程数据的作用域易见;
    • 易表现嵌套关系以及模块的层次结构
3.PAD图—问题分析图
  • 基本控制结构
  • 增量型循环结构
    f o r   i : = n 1   t o   n 2   s t e p   n 3   d o for \ i:=n1 \ to \ n2\ step \ n3 \ do for i:=n1 to n2 step n3 do在PAD中有相应的循环控制结构。
  • 特点:
    • 结构清晰,层次分明,易读;
    • 支持逐步求精的设计思想;
    • 容易将PAD自动转换为高级语言源程序
4.PDL语言

3.5 用户界面设计

  • 用户界面是否友好直接影响到软件的寿命与竞争力

  • 用户界面设计中的主要问题

    • 用户界面应具有的特性什么是友好的用户界面。

    • 用户界面设计的任务—用户界面设计应该完成的工作。

    • 用户界面的基本类型—用户界面的工作模式

  • 用户界面要以人为本

  • 用户界面设计原则

    • 可视性和可支付性
    • 保持命令、菜单、颜色等统一
    • 为频繁使用的用户提供快捷方式
    • 提供信息反馈
    • 提供简单的错误处理
    • 方便的操作、回滚
    • 降低短期记忆回忆

3.5.1 用户界面的交互性

  • 交互性是用户界面最重要的特性,按照交互形式分为5类
交互类型主要优点主要缺点应用实例
直接操纵快速直观,容易学习实现较难,适于对象和任务有视觉隐喻视频游戏
CAD系统
菜单选择避免用户错误只需很少键盘输入对有经验的用户操作较慢,菜单项多时操纵复杂一般用途的系统
表格填写简单的数据人口
易学习
占较多的屏幕空间库存控制
个人贷款处理
命令语言强大灵活较难学习
错误管理差
操作系统,图书馆信息检索系统
自然语言适合偶然用户
容易控制
需要键入的太多,自然语言理解的系统不可靠时刻表系统,www信息检索系统

3.5.2 用户界面的基本类型

  • 1.菜单

    • 按照显示方式分:
      • 正文菜单、图标菜单、正文和图标混合菜单
    • 按屏幕位置和操作风格
      • 固定位置、浮动位置、下拉式、嵌入式
  • 2.图像

    • 更加形象地为用户提供有用的信息,达到可视化目的
  • 3.对话框

    • 对话框是在需要时,显示在屏幕上一个矩形区域内的图形和正文信息。以实现系统和用户之间的通信

    • 其显示方式与弹出式菜单类似,即瞬时弹出。

      有三种对话形式:

      • 必须回答式
      • 无需回答式
      • 警告式
  • 4.窗口

    • 图形学中称为视图区(Viewport),视为虚拟屏幕。一个实用窗口,可包含部件:
      • 菜单区 图标区 标题区 移动区 大小区 退出区 用户工作区 横向滚动区 纵向滚动区

3.5.3 数据I/O界面设计

  • 数据I/O界面,是系统的重要组成部分。主要从输入速度减少出错率考虑。
  • 1.尽量减少输入工作量
    • 相同内容输入设置默认值
    • 自动填入
    • 列表选择或点击选择
  • 2.输入屏幕与输入格式匹配
    • 屏幕显示按照数据使用频率重要性次序等组织
  • 3.数据输入的一般规则
    • 确定输入
    • 确定删除
    • 交互动作
    • 提供反馈

第三章完

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值