软件工程之设计工程

大耗子 2020年03月20日 310次浏览

文章链接:https://codemouse.online/archives/2020-03-20165407

设计工程概述

  • 体系结构设计:计算任务的处理对象和处理规则的描述

  • 部件级设计:便于了解程序所需的阐明性资料,不一定装入计算机

  • 软件设计的任务

    1. 数据/类设计
    2. 体系结构设计
    3. 接口设计
    4. 部件级设计
  • 软件设计的目标

    1. 满足需求:实现所有显式需求,满足用户希望所有隐式需求
    2. 可读可理解:易于编程、易于测试、易于维护
    3. 从实现出发:给出与数据、功能、行为相关软件全貌
  • 软件设计的过程

    把软件需求变换成软件表示的过程

    1. 制定规范
    2. 体系结构和接口设计
    3. 数据/类设计
    4. 部件级(过程)设计
    5. 编写设计文档
    6. 设计评审

软件设计原则

  1. 抽象:上层概念是下层概念的抽象,下层概念是上层概念的细化。

  2. 逐步求精:把问题求解过程分解成若干步骤,每步都比上步更精化。

  3. 模块化:把软件划分为较小的,相互独立的但又相互关联的部件。

    图片3

  4. 信息隐藏:每个模块的实现细节对于其它模块来说应该是隐蔽的 。

  5. 模块独立:模块完成独立的功能并且与其他模块的接口简单。

    耦合度:模块之间的相对独立性(互相连接的紧密程度)的度量 。

    图片1

    内聚度:一个模块内部各个元素彼此结合紧密程度度量

    图片2

软件体系结构设计

  • 概念:软件体系结构关注系统的一个或多个结构,包含软件构件、这些构件的对外可见的性质以及它们之间的关系。

  • 理由:

    1. 方便利益相关人员的交流
    2. 有利于系统设计前期决策
    3. 可传递的系统级抽象

体系结构发展过程

  1. 单主机结构
  2. C/S(Client/Server)结构
  3. B/S(Browser/Server)结构

软件体系结构风格

  • 数据为中心体系结构

    图片4

  • 数据流风格的体系结构

    图片5

  • 调用和返回风格的体系结构

    图片6

  • 层次式风格的体系结构

    图片7

软件体系结构设计

  • 规则

    (1) 改进软件结构提高模块独立性

    (2) 模块适当的深度、宽度、扇出和扇入

    (3) 模块判断作用范围应在其控制作用范围内

    (4) 力争降低模块接口的复杂度

    (5) 设计单入口单出口的模块

    (6) 模块功能应该是可以预测的模块大小适中

    (7) 一般一个模块包含的语句30~50条左右较好。

    (8) 一个设计好的软件结构,通常顶层扇出比较高,中层扇出比较少,底层有高扇入。

部件级设计技术

  • 步骤:

    1. 为每个部件确定采用的算法,选择某种适当工具表达算法过程,编写部件的详细过程性描述。
    2. 确定每一部件内部使用的数据结构。
    3. 将结果写入部件级设计说明书,通过复审形成正式文档,作为编码阶段的工作依据

图形表示法

程序流程图

  • 程序流程图独立于任何一种程序设计语言,比较直观、清晰、易于学习掌握。

  • 注意:打印输出要用平行四边形框,判断框一进二出,长方形框只能一进一出。

    图片8

N-S图

  • 一种符合结构化程序设计原则的图形描述工具,叫做盒图,也叫做N-S图

  • 五种基本控制结构

    图片9

PAD

  • PAD是Problem Analysis Diagram的缩写 ,由程序流程图演化而来

  • 五种基本控制结构

    图片10

示例:

题目要求如下:首先输入客户信息y和货物重量x,根据x的不同取值用不同的公式1-4计算货物运费money值,
计算后将money值记账输出三次。画出此题目的流程图、NS图和PAD图。

题目.

  • 程序流程图

    程序流程图

  • N-S图

    N-S

  • PAD图

    PAD

设计性语言PDL

  • PDL(Program Design Language)是一种用于描述功能部件的算法设计和处理细节的语言,称为设计性语言。

  • 它是一种伪码。一般地,伪码的语法规则分为“外语法”和“内语法”

    • 外语法应当符合一般程序设计语言常用语句的语法规则;

    • 内语法可以用英语中一些简单的句子、短语和通用的数学符号,来描述程序应执行的功能

  • PDL的使用实例

PROCEDURE spellcheck IS 查找错拼的单词
BEGIN
split document into single words

	把整个文档分离成单词
    look up words in dictionary     

	在字典中查这些单词
    display words which are not in dictionary 
 显示字典中查不到的单词
 create a new dictionary 造一新字典
END spellcheck


设计规约与设计评审

设计规约

设计规约

设计评审

  • “最佳”是指在所有候选方案中,就节省开发费用,降低资源消耗,缩短开发时间的条件,选择能够赢得较高的生产率、较高的可靠性和可维护性的方案

  • 内容

    1. 可追溯性:即分析该软件的每一成分是否可追溯到某一项需求。

    2. 接口:即分析软件各部分之间的联系。

    3. 风险:即确认该软件设计在现有技术条件下和预算范围内是否能按时实现。

    4. 实用性:即确认该软件设计对于需求的解决方案是否实用。

    5.技术清晰度:是否易于翻译成代码。

    6.可维护性:是否考虑了方便未来的维护。

    7.质量

    8.各种选择方案:是否考虑和比较过过其它方案。

    9. 限制:评估对该软件的限制是否与需求一致。

    10. 其它具体问题:对于文档、可测试性、设计过程等等进行评估。