软件工程——总体设计与详细设计

简介: 软件工程——总体设计与详细设计

一、总体设计

(一)总体设计的任务

在总体设计中有3个主要任务。


(1)将系统划分成物理元素,即程序、文件、数据库和文档等。


(2)设计软件结构,即将需求规格转换为体系结构,划分出程序的模块组成、模块间的相互关系。确定系统的数据结构、文件结构、数据库模式,确定测试方法与策略。


(3)编写总体设计说明书、用户手册、测试计划,用结构图来描述软件结构,选择分解功能与划分模块的设计原则。


(二)总体设计的概念

模块:又称构件,是指能够单独命名并独立完成一定功能的程序语句的集合。


抽象:即 抽出事物的本质特性而暂时不考虑它们的细节


信息隐蔽:每一个模块的实现细节对于其他模块来说是隐蔽的,也就是说 模块中所包含的信息不允许其他不需要这些信息的模块调用。


模块的独立性:模块独立性的概念是模块化、抽象和信息隐蔽的直接结果。


模块的独立性可以用两个定性标准度量:耦合和内聚。


image.png

(三)结构设计的准则

1.提高设计准则


2.选择合适的模块规模


3.适当选择模块的深度、宽度、扇入和扇出


4. 模块的作用范围应在控制范围之内


5. 降低模块接口的复杂程度


6. 设计单入口单出口且功能可预测的模块


二、详细设计

根据“由外向里”的思想方法,概要 设计完成之后,就要进行详细设计。详细设计确定每个模块的内部特征,即每个模块内部 的执行过程


(一)详细设计的原则

(1) 由于详细设计的蓝图是给其他人看的,所以模块的逻辑描述要清晰易读、正确可靠,这样别人才能读懂。这也是常说的清晰第一的设计风格。


(2) 采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可 读性、可测试性、可维护性。其基本内容归纳为如下几点:


① 程序语言中应尽量少用GOTO语句,以确保程序结构的独立性。


② 使用单入口单出口的控制结构,确保程序的静态结构与动态执行情况相一致,保证 程序易理解。


③ 程序的控制结构一般采用顺序、选择、循环三种结构,确保结构简单。


④ 用自顶向下逐步求精方法完成程序设计。


⑤ 经典的控制结构有顺序、IF THEN ELSE分支、DO-WHILE循环。扩展的还有多分支CASE、DO-UNTIL循环结构、固定次数循环DO-WHILE。


(二)详细设计的工具

1.传统程序流程图

image.png



2.N-S图

image.png



3.PAD图

image.png



三、总体设计、详细设计文档的重要性

    在总体设计阶段设计人员完成的主要文档是总体设计说明书,详细设计阶段的文档就是详细设计说明书。


    在设计软件的过程中,可能涉及到很多相关人员,建立设计文档的目的是为了把设计的思想告诉其他的相关人员。只有先让别人知道你设计的思想后别人才能做相应的工作, 可读性高同样有利于维护。


     

相关文章
软件工程——软件开发阶段(概要设计、详细设计)
需求分析确定了系统的开发目标,下一步工作就是软件设计。软件设计可以进一步地 分为两个阶段:总体设计和详细设计。确定系统的具体 实现方案、给出软件的模块结构、编写各个文档
|
存储 消息中间件 算法
软件体系结构 - 系统分析与设计(1.结构化方法)
【4月更文挑战第5天】软件体系结构 - 系统分析与设计(1)
563 0
|
算法 程序员 Go
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
|
SQL 数据库
达梦(DM) SQL查询及联合查询
继续讲解达梦(DM)数据库SQL查询操作
|
算法 数据挖掘 数据库
[软件工程导论(第六版)]第5章 总体设计(复习笔记)
[软件工程导论(第六版)]第5章 总体设计(复习笔记)
|
存储 Web App开发 运维
发布、部署,傻傻分不清楚?从概念到实际场景,再到工具应用,一篇文章让你彻底搞清楚
部署和发布是软件工程中经常互换使用的两个术语,甚至感觉是等价的。然而,它们是不同的! • 部署是将软件从一个受控环境转移到另一个受控环境,它的目的是将软件从开发状态转化为生产状态,使得软件可以为用户提供服务。 • 发布是将软件推向用户的过程,应用程序需要多次更新、安全补丁和代码更改,跨平台和环境部署需要对版本进行适当的管理,有一定的计划性和管控因素。
4768 1
什么是 CAS(自旋锁)? 它的优缺点? 如何使用CAS实现一把锁?
该博客文章解释了什么是CAS(自旋锁),包括CAS的基本概念、实现原理、优缺点,以及如何使用CAS实现锁的逻辑,并提供了使用CAS实现锁的Java完整代码示例和测试结果。
什么是 CAS(自旋锁)? 它的优缺点? 如何使用CAS实现一把锁?
|
机器学习/深度学习 PyTorch 算法框架/工具
ResNet代码复现+超详细注释(PyTorch)
ResNet代码复现+超详细注释(PyTorch)
5253 1
|
存储 设计模式 测试技术
了解三层架构:表示层、业务逻辑层、数据访问层
了解三层架构:表示层、业务逻辑层、数据访问层
7612 0
|
存储 前端开发 JavaScript
软件设计文档编写指南
软件设计文档编写指南