4.1 软件设计概要

软件设计定义为软件系统或组件的架构、构件、接口和其他特征的定义过程及该过程的结果。

在这里插入图片描述
软件设计是软件生命周期中的一个活动,是进行软件编码的基础,将软件需求分析转化为软件的内部结构,是连接用户需求和软件技术的桥梁。
在这里插入图片描述

1、 软件设计的概念和设计质量

1.1 软件设计基本任务

  • 软件架构设计(有时称为顶层设计):描述软件的顶层架构和组织,划分不同的组件。包括设计软件系统总体结构、数据结构及数据库设计(概念设计、逻辑设计和物理设计)、编写概要设计文档和评审。
  • 软件详细设计:详细描述各组件以便能够编码实现。算法设计、数据结构设计、数据库设计和其他设计(代码设计、输入输出设计和用户界面设计)、编写详细设计说明书和评审。
  • 注意:
    1. 软件设计主要为分解设计D-design(Decomposition design).分解设计:将软件映射为各组件
    2. 可以包括系列模式设计FP.deslgn(Family Pattern design):

1.2 设计模型

模型输入:软件需求的数据模型、功能模型和行为模型。
分类:数据设计、架构设计、接口设计、组件设计
在这里插入图片描述

1.3 软件设计特点

  1. 设计必须实现在分析模型中包含的所有明确要求,必须满足客户所期望的所有隐含要求;
  2. 设计必须对编码人员、测试人员及后续的维护人员是可读可理解的;
  3. 设计应提供该软件的完整视图,从实现的角度解决数据、功能及行为等各领域方面的问题。

1.4 设计质量属性

  • 功能性
  • 易用性
  • 可靠性
  • 性能
  • 可支持性:扩展性、适应性和可维护性

1.5 设计指导原则

  1. 设计应该是一种架构;
  2. 设计应该是模块化的;
  3. 设计应该包含数据、体系结构、接口和组件各个方面:应该设计出系统所用的数据结构;应该设计出展现独立功能特性的各组件;应该设计出各组件与外部环境连接的各接口。
  4. 设计由软件需求分析过程中获得信息驱动、采用可重复使用的方法导出;
  5. 设计应该采用正确清晰的表示法。

2、 设计相关八大概念

抽象

  • 抽象是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同特性而暂不考虑它的细节。
  • 抽象机制:参数化和规范化
  • 规范化抽象:数据抽象(描述数据对象的冠名数据集合)和过程抽象(具有明确和有限功能的指令序列)。
    如门包含属性:门的类型、转动方向、开门机关、重量和尺寸等;开 一系列过程:走到门前,伸出手并抓住把手,转动把手并拉门,离开打开的门等。

体系结构

  • 定义:软件的整体结构和这种结构为系统提供概念上完整性的方式
  • 体系结构设计可以使用大量的一种或多种模型来表达:结构模型、框架模型、动态模型、过程模型、功能模型

设计模式

  • 定义:在给定上下文环境中一类共同问题的共同解决方案
  • 微观结构:实体模式、结构模式、行为模式
    抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

模块化

  • 模块:程序中数据说明、可执行语句等程序对象的集合。
  • 模块化:解决一个复杂问题时自顶而下逐层把软件系统划分成若干模块的过程。
  • 软件的模块性:程序可被智能管理的单一属性。
  • 模块化的理论依据:基于人类解决问题的观测数据。模块的个数与集成成本、总成本、工作量有约束关系,不能过多或过少。
  • 模块化设计标准
    1. 模块化的分解性:可分解为子问题
    2. 模块化的组合性:组装可重用的组件
    3. 模块化的可理解性:可作为独立单元理解
    4. 模块化的连续性:需求小变化只影响单个模块
    5. 模块化的保护:模块内异常只影响自身。高内聚、低耦合
  • 模块化基本问题:如何分解软件系统以达到最佳的模块划分

信息隐藏

信息隐蔽是指在设计和确定模块时,使得一个模块内包含的信息对于不需要这些信息的其他模块来说,是不能访问的。通过抽象,可以确定组成软件的过程实体;通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。

  • 信息隐藏原则:
    1. 模块应该具有彼此相互隐藏的特性;
    2. 模块定义和设计时应当保证模块内的信息(过程和数据)不可以被不需要这些信息的其他模块访问
  • 特点:
    1. 抽象有助于定义构成软件的过程(或信息)实体;
    2. 信息隐藏原则定义和隐藏了模块内的过程细节和模块内的本地数据结构

功能独立

  • 含义:·每个模块只负责需求中特定的子功能,并且从程序结构的其他部分看,该模块具有简单的接口
  • 好处
    1. 易于开发:功能被划分,接口被简化
    2. 易于维护(和测试):次生影响有限,错误传递减少,模块重用
  • 定性衡量标佳
    1. 内聚性:模块的功能相对强度
    2. 耦合性:模块之间的相互依赖程度
    3. 模块独立性强=高内聚低耦合
      在这里插入图片描述
      在这里插入图片描述

精化

  • 含义:逐步求精的过程
  • 与抽象的关系
    1. 抽象使设计师确定过程和数据,但不局限于底层细节;
    2. 精化有助于设计者在设计过程中揭示底层细节。

重构

  • 含义:不改变组件功能和行为条件下,简化组件设计(或代码)的一种重组技术
  • 方法:检查现有设计的冗余情况、未使用的设计元素、无效或不必要的算法、较差的构建方式或不恰当的数据结构,或任何其他可被更改从而优化设计的问题

3、 四类设计技术概要

3.1 数据设计

数据设计(数据架构)构建高层抽象(客户/用户的数据视图)的数据模型、信息模型。
在这里插入图片描述

  • 设计原则

    1. 应用于功能和行为系统分析的原则也应适用于数据设计
    2. 所有的数据结构及其对应的操作都应该确定
    3. 建立数据字典并在数据定义和程序设计中应用
    4. 低层次的数据设计应该推迟到设计的后期过程
    5. 数据结构的表示应该只对直接使用数据结构中数据的模块可见
    6. 开发有用的数据结构及其对应操作的程序库
    7. 软件设计和编程语言应该支持抽象数据类型的定义与实现
  • 组件级别的数据设计
    在这里插入图片描述

3.2 体系架构设计

系统需要执行的函数功能组件集(如数据库、计算模块);
组件之间通信、协同和合作的连接器;
组件集成构成系统的约束;
设计人员通过分析系统组成部分的已知特性,理解其整体特性的语义模型分析。

  • 数据中心架构
    在这里插入图片描述

  • 数据流体系架构
    在这里插入图片描述

  • 调用和返回架构
    在这里插入图片描述

  • 层次架构
    在这里插入图片描述

  • 面对对象架构
    在这里插入图片描述

体系结构组织和细化

两个基本问题:

  1. 控制结构:在架构内部如何实现管理控制?是否有不同的控制架构存在?
  2. 数据传递:组件之间如何进行数据传递?数据流是否连续,或者传递给系统的数据对象是否零散?

部署设计

以部署环境创建开始,在整个生命周期阶段中处于逻辑设计和技术需求阶段;
部署环境包含整个解决方案的逻辑架构和服务质量( Q o S Q_oS QoS)需求;
部署架构设计是一个反复达代的过程,通常需要多次查看 Q o S Q_oS QoS要求和多次检查先前的设计,需要考虑了服务质量 Q o S Q_oS QoS需求的相互关系,平衡取舍相关问题成本以实现最佳解决方案,最终满足项目的业务目标。

  • 部署设计输出
    在这里插入图片描述

  • 部署设计方法
    在这里插入图片描述

3.3 接口设计

高效的用户界面设计由三条重要原则:

  1. 允许用户操作控制(用户为中心)
  2. 减少用户记忆负担
  3. 保持界面一致

环境分析确定了用户接口操作对的物理结构和社会结构。

3.4 组件设计

  • 面对过程的组件设计:函数与模块的设计
  • 面对对象的组件设计:类与操作的设计
目录 1引言 2 1.1     编写目的 2 1.2    背景 2 A. 待开发软件系统名称; 2 B. 该系统基本概念,如该系统的类型、从属地位等; 2 C. 开发项目组名称。 2 1.3    参考资料 2 1.4   术语定义及说明 3 2  设计概述 3 2.1   任务和目标 3 2.1.1      需求概述 3 2.1.2      运行环境概述 3 2.1.3      条件与限制 3 2.1.4      详细设计方法和工具 3 3  系统详细需求分析 4 3.1     详细需求分析 4 3.2         详细系统运行环境及限制条件分析接口需求分析 4 4   总体方案确认 4 4.1  系统总体结构确认 4 4.2        系统详细界面划分 5 4.2.1      应用系统与支撑系统的详细界面划分 5 4.2.2      系统内部详细界面划分 5 5   系统详细设计 5 5.1    系统结构设计及子系统划分 5 5.2    系统功能模块详细设计 5 5.3          系统界面详细设计 6 5.3.1      外部界面设计 6 5.3.2      内部界面设计 6 5.3.3      用户界面设计 7 6、数据库系统设计 7 6.1设计要求 7 6.2 信息模型设计 7 6.3    数据库设计 7 7    信息编码设计 8 7.3     代码结构设计 8 7.4     代码编制 8 1引言 1.1     编写目的 说明编写详细设计方案的主要目的。 说明书编制的目的是说明一个软件系统各个层次中的每个程序(每个模块或子程序)和数据库系统的设计考虑,为程序员编码提供依据。 如果一个软件系统比较简单,层次很少,本文件可以不单独编写,和概要设计说明书中不重复部分合并编写。 方案重点是模块的执行流程和数据库系统详细设计的描述。 1.2    背景 应包含以下几个方面的内容: A. 待开发软件系统名称; B. 该系统基本概念,如该系统的类型、从属地位等; C. 开发项目组名称。 1.3    参考资料 列出详细设计报告引用的文献或资料,资料的作者、标题、出版单位和出版日期等信息,必要时说明如何得到这些资料。 1.4   术语定义及说明 列出本文档中用到的可能会引起混淆的专门术语、定义和缩写词的原文。 2  设计概述 2.1   任务和目标 说明详细设计的任务及详细设计所要达到的目标。 2.1.1      需求概述 对所开发软件的概要描述, 包括主要的业务需求、输入、输出、主要功能、性能等,尤其需要描述系统性能需求。 2.1.2      运行环境概述 对本系统所依赖于运行的硬件,包括操作系统、数据库系统、中间件、接口软件、可能的性能监控与分析等软件环境的描述,及配置要求。 2.1.3      条件与限制 详细描述系统所受的内部和外部条件的约束和限制说明。包括业务和技术方面的条件与限制以及进度、管理等方面的限制。 2.1.4      详细设计方法和工具 简要说明详细设计所采用的方法和使用的工具。如HIPO图方法、IDEF(I2DEF)方法、E-R图,数据流程图、业务流程图、选用的CASE工具等,尽量采用标准规范和辅助工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值