第5章 软件工程(二)

news/2025/2/25 5:45:16

5.3 软件设计

需求阶段解决“做什么”的问题,而软件设计阶段解决“怎么做”的问题。软件设计分为结构化设计与面向对象设计。

5.3.1 结构化设计

结构化设计(SD)是一种面向数据流的方法,其目的在于确定软件结构。它以SRS和SA阶段所产生的DFD和数据字典等文档为基础,是一个自顶向下、逐层分解、逐步求精和模块化的过程

从管理角度讲,其分为概要设计和详细设计两个阶段。

·概要设计又称为总体结构设计,它是开发过程中很关键的一步,其主要任务是确定软件系统的结构,将系统的功能需求进行模块划分,确定每个模块的功能、接口和模块之间的调用关系,形成软件的模块结构图,即系统结构图

·详细设计主要任务是为每个模块设计实现的细节,根据任务的不同,详细设计又可分为多种,例如,输入/输出 设计、处理流程设计、数据存储设计、用户界面设计、安全性和可靠性设计等。

1.模块结构

在SD中,这种功能分解就是将系统划分为模块,模块是组成系统的基本单位,它的特点是可以自由组合、分解和变换,系统中任何一个处理功能都可以看成一个模块。

(1)信息隐藏与抽象

信息隐藏原则要求采用封装技术,将程序模块的实现细节(过程或数据等)

隐藏起来,对于不需要这些信息的其他模块来说是不能访问的,使模块接口尽量简单。按照信息隐藏的原则,系统中的模块应设计成“黑盒”,模块外部只能使用模块接口说明中给出的信息,如操作和数据类型等。

(2)模块化

在SD方法中,模块是实现功能的基本单位,它一般具有功能、逻辑和状态3个基本属性。其中,功能是指该模块“做什么”逻辑是描述模块内部“怎么做”状态该模块使用时的环境和条件。在描述一个模块时,必须按模块的外部特性与内部特性分别描述。软件设计阶段,通常是先确定模块的外部特性,然后再确定它的内部特性。

(3)耦合。耦合表示模块之间联系的程度。紧密耦合表示模块之间联系非常强,松散耦合表示模块之间联系比较弱,非直接耦合则表示模块之间无任何直接联系。模块的耦合类型通常分为7种,根据耦合度从低到高排序如表所示:

(4)内聚。内聚表示模块内部各代码成分之联系的紧密程度,是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做目标单一的一件事情。模块的内聚类型通常也可以分为7种,根据内聚度从高到低排序如表5.2所示。在模块的分解中应尽量减少模块的耦合,力求增加模块的内聚,遵循”低耦合、高内聚”的设计原则。

2.系统结构图

系统结构图 (SC),又称为模块结构图,它是软件概要设计阶段的工具,反映系统的功能实现和模块之间的联系与通信,包括各模块之间的层次结构,即反映了系统的总体结构

详细设计的主要任务设计每个模块的实现算法、所需的局部数据结构

详细设计的目标有两个:实现模块功能的算法要逻辑上正确,算法描述要简明易懂

详细设计必须遵循概要设计来进行。详细设计方案的更改,不得影响到概要设计方案;如果需要更改概要设计,必须经过项目经理的同意。详细设计应该完成详细设计文档,主要是模块的详细设计方案说明

详细设计的表示工具图形工具、表格工具和语言工具

(1)图形工具。利用图形工具可以把过程的细节用图形描述出来。具体的图形有业务流程图、程序流程图、问题分析图 (PAD)、NS流程图等。

(2)表格工具。可以用一张表来描述过程的细节,在这张表中列出了各种可能的操作和相应的条件。

(3)语言工具。用某种高级语言来描述过程的细节,例如伪码或PDL (程设计语言)等。

·PDL的优点可以作为注释直接插在源程序中;可以使用普通的文本编辑工具或文字处理工具产生和管理,已经有自动处理程序存在,而且可以自动由PDL生成程序代码。

·PDL的不足:不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时不如判定树清晰简单。

5.3.2 面向对象设计

面向对象设计OOD其基本思想包括抽象、封装、可扩展性,其中可扩展性主要是通过继承和多态来实现。

OOD的主要任务是对类和对象进行设计,这是OOD中最重要的组成部分也是最复杂和最耗时的部分。其主要包括类的属性、方法,以及类与类之间的关系。

常用的面向对象设计原则包括:

在OOD中,类可以分为3种类型实体类、控制类和边界类

5.3.3 统一建模语言

统一建模语言(UML)是一种定义良好,易于表达、功能强大且普遍适用的建模语言。(不是编程语言)

UML的结构包括构造块、规则和公共机制3个部分。

1.UML中的事物

UML中的事物也称为建模元素,包括结构事物、行为事物、分组事物和注释事物。

2.UML中的关系

UML用关系把事物结合在一起,主要有4种关系:依赖、关联、泛化和实现。

3.UML2.0-14种图

4.UML视图

5.3.4 设计模式

设计模式是前人经验的总结,它使人们可以方便地复用成功的软件设计。

根据处理范围不同,设计模式可分为类模式和对象模式

根据目的和用途不同,设计模式可分为创建型模式、结构型模式和行为型模式三种。

创建型模式主要用于创建对象。

结构型模式主要用于处理类或对象的组合。

行为型模式主要用于描述类或对象的交互以及职责的分配。


http://www.niftyadmin.cn/n/5865041.html

相关文章

Gin从入门到精通(八)身份验证与授权(JWT)

身份验证与授权(JWT) Gin 支持通过 JWT(JSON Web Token)来实现用户的身份验证。通过中间件验证用户的身份后,可以控制资源的访问权限。 JWT 认证流程 : 1. 用户登录 → 服务端验证 → 生成 JWT → 返回 Token 2. 客户端存储 Token → 后…

大模型架构与训练方向

一、核心知识领域 ‌模型架构设计‌ 掌握Transformer、MoE(Mixture-of-Experts)、RetNet等主流架构的原理与实现细节,需深入理解注意力机制、位置编码、稀疏激活等技术‌13。学习多模态融合架构(如CLIP、Flamingo)&…

Unity3D实现编辑器截屏Preview窗口,并生成图片PNG

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、Preview窗口👉二、手动选择预制体截屏👉二、自动选择预制体截屏👉壁纸分享👉总结👉前言 想要在Unity编辑器中截取Preview窗口的截图,并生成图片的代码。 有时候可能会需要此模型的图片,又不想P图,…

AI(14)-prompt

1.BaseLLM 和Tuned LLM之间的区别 基本模型 指令微调模型 人类反强化学习 2.指南 下载包 导入包设置key 2个基本原则 写明确特定的指令 给模型时间思考 2.1.使用分割符清楚地指示输入的不同部分 示例:对这个段落进行总结,将用3个单引号…

企业财务数据分析-投资回报指标ROA

上一篇文章主要介绍了关于投资回报的核心指标ROE,其实还有一个比较关键的指标资产回报率指标(ROA),资产收益率是用来衡量企业盈利能力的重要财务分析指标。资产收益率越高,说明企业资产的利用效率越高,利用…

自定义SpringBoot Starter

✅自定义SpringBoot Starter SpringBoot 的 starter 可以帮我们简化配置,非常的方便,定义起来其实也不复杂,我的项目中定义了很多 starter,比如business-job就是一个 stater,以他为例,介绍下如何定义 star…

[Web 安全] Web 安全攻防 - 学习手册

0x01:Web 安全攻防 —— 信息收集篇 Web 信息收集 — 手动收集域名信息Web 信息收集 — 手动收集 IP 信息Web 信息收集 — 端口服务信息收集 Web 信息收集 — 自动化信息收集 — ShuiZe 水泽Web 信息收集 — 自动化信息收集 — ARL 灯塔 0x02:Web 安全…

设计模式教程:状态模式(State Pattern)

一、概述 状态模式(State Pattern)是一种行为型设计模式,允许对象在内部状态发生变化时改变其行为。换句话说,状态模式让对象的行为随其状态变化而变化。它的主要目的是将状态相关的行为封装到状态类中,从而避免在类中…