软件工程开发文档写作教程(12)—概要设计书的编制目标

news2024/11/24 13:52:53

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl
  • 本文参考资料:电子工业出版社《软件文档写作教程》 马平,黄冬梅编著

概要设计书概述

在这里插入图片描述

《概要设计说明书》又称为《系统设计说明书》,编制的目的是说明对软件系统的设计考虑,包括软件系统的基本处理流程、组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。

概要设计书编制目标

在软件需求分析阶段,已经搞清楚了软件“做什么”的问题,并把这些需求通过规格说明书描述了出来,这也是目标系统的逻辑模型。进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件概要设计或结构设计。

概要设计的基本任务包含如下几方面。

设计软件系统结构

为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据库(文件),对于程序,则首先进行结构设计,具体为:
(a)采用某种设计方法,将一个复杂的系统按功能划分成模块。
(b)确定每个模块的功能。
©确定模块之间的调用关系。
(d)确定模块之间的接口,即模块之间传递的信息。
(e)评价模块结构的质量。
根据以上内容,软件结构的设计是以模块为基础的,在需求分析阶段,已经把系统分成层次结构。设计阶段,以需求分析的结果为依据,从实现的角度进一步划分为模块,并组成模块的层次结构。软件结构的设计是概要设计关键的一步,直接影响到下一阶段详细设计与编码的工作,软件系统的质量及一些整体特性都在软件结构的设计中决定。

数据结构及数据库设计

对于大型数据处理的软件系统,除了控制结构的模块设计外,数据结构与数据库设计也是很重要的。
(a)数据结构的设计
逐步细化的方法也适用于数据结构的设计。在需求分析阶段,已通过数据字典对数据的组成、操作约束、数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。在概要设计阶段,宜使用抽象的数据类型。
(b)数据库的设计
数据库的设计指数据存储文件的设计,主要进行以下几方面设计:
①概念设计
在数据分析的基础上,采用自底向上的方法从用户角度进行视图设计,一般用E-R模型来表示数据模型,这是一个概念模型。
②逻辑设计
E-R模型或IDEFlx模型是独立于数据库管理系统(DBMS)的,要结合具体的DBMS特征来建立数据库的逻辑结构,对于关系型的DBMS来说将概念结构转换为数据模式、子模式并进行规范,要给出数据结构的定义,即定义所含的数据项、类型、长度及它们之间的层次或相互关系的表格等。
③物理设计
对于不同的DBMS,物理环境不同,提供的存储结构与存取方法各不相同。物理设计就是设计数据模式的一些物理细节,如数据项存储要求、存取方式、索引的建立。

编写概要设计文档

文档主要有:
(a)概要设计说明书。
(b)数据库设计说明书,主要给出所使用的DBMS简介、数据库的概念模型、逻辑设计、结果。
©用户手册,对需求分析阶段编写的用户手册进行补充。
(d)修订测试计划,对测试策略、方法、步骤提出明确要求。

评审

对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等都一一进行评审。

概要设计是软件开发中承上启下的一个重要环节,它决定了软件开发的方向和过程。因为软件开发是个复杂过程,需要考虑方方面面的内容,如果没有一个纲领性的文档来组织管理,那么软件开发必然是一团糟。因此,概要设计书挑起了这个重任。

总结

我们写出来概要设计书应该达到以下4个目标。

1 .确定开发方案

如果让十个人拿着需求分析书直接进行软件开发,最后结果很可能是开发出十个风格迥异功能相同的系统。这些系统虽然功能相同,但是实现方法各有千秋,通过互相比较即可知道孰优孰劣。但是对于软件的开发来说,我们不可能同时开发出十个软件然后让客户择一而用,这是时间和金钱的浪费。所以必须在软件开发的概要设计阶段,深入调查、全盘考虑和细致比较之后确定开发方案。

2 .刻画软件的全貌

既然概要设计是在宏观层面对软件进行设计,决定系统的体系结构,系统模块划分和采用的技术路线,并指出实现该系统的关键技术难点等。所以在概要设计书中,着重记录软件的运行环境、功能模块划分和相互关系,而不涉及功能的实现细节。

3 .实现客户到软件开发者的转移

在软件系统的开发前期,一般只有少数几个资深的系统分析师与客户接触,了解需求,形成需求分析文档之后回到软件公司接着做概要设计。概要设计以及其后的阶段都是由软件从业人员着手进行,这些软件从业人员具有相同的领域知识,相互之间用专业术语来分析说明问题有时候会比用自然语言更容易表达和理解,并且不容易产生歧义。概要设计书担当起了客户与软件从业人员之间的桥梁作用,把客户用自然语言描述的需求转化为软件从业人员容易理解的系统功能说明书。

4 .为详细设计阶段提供可加工的素材

所有的详细设计都是基于概要设计中划分出的模块、组件,并且要遵守概要设计中的各项原则。所以,概要设计是详细设计的素材、依据、标准,是开展详细设计工作的起点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cracking C++(10): 基本的输入输出流

文章目录 1. 目的2. I/O Streams 输入/输出流3. Stream Operators 流操作符4. 禁止使用 std::endl5. 缓冲区:直观理解6. References 1. 目的 查看 hackingcpp 上的 Input & Output (Basics) 教程后的笔记和拓展内容。 2. I/O Streams 输入/输出流 使用 C 的标…

chatgpt赋能python:合并多个文件——Python的终极解决方案

合并多个文件——Python的终极解决方案 Python是一种高级编程语言,其简单明了的语法和丰富的库使其成为开发者的首选语言之一。在日常编码中,我们有时候需要将多个文件合并成一个文件以便于处理。这篇文章将详细介绍Python如何进行多个文件的合并。 什…

高数下——查漏补缺

期末复习 一、向量与空间几何 二、多元函数与重极限 2.1定义域 2.2 二元函数重极限

【实战】体验SadTalker

论文http://openaccess.thecvf.com//content/CVPR2023/papers/Zhang_SadTalker_Learning_Realistic_3D_Motion_Coefficients_for_Stylized_Audio-Driven_Single_CVPR_2023_paper.pdf github GitHub - OpenTalker/SadTalker: [CVPR 2023] SadTalker:Learning Realist…

chatgpt赋能python:Python如何合并单元格-实用技巧教程

Python如何合并单元格 - 实用技巧教程 单元格合并是Excel文件和Word文档等办公软件中很常见的功能,而使用Python对数据进行处理时,也可能需要实现合并单元格的操作。本文将为大家介绍Python中实现合并单元格的方法,并给出代码示例。 什么是…

HTML段落标签

HTML段落标签 段落标签 显示特点: 代码: 显示效果: 总结: 答案:

Java性能权威指南-总结10

Java性能权威指南-总结10 垃圾收集算法理解G1垃圾收集器 垃圾收集算法 理解G1垃圾收集器 G1垃圾收集器是一种工作在堆内不同分区上的并发收集器。分区(region)既可以归属于老年代,也可以归属于新生代(默认情况下,一个堆被划分成2048个分区),同一个代的…

chatgpt赋能python:如何取消Python中的科学计数法

如何取消Python中的科学计数法 Python是一种面向对象、解释型的高级编程语言。由于它在数值计算、科学计算以及数据分析等领域的强大功能,Python语言已经成为科学计算和机器学习领域中最常用的语言之一。 然而,当我们进行大量运算时,Python…

[SpringBoot]Spring Security框架

目录 关于Spring Security框架 Spring Security框架的依赖项 Spring Security框架的典型特征 关于Spring Security的配置 关于默认的登录页 关于请求的授权访问(访问控制) 使用自定义的账号登录 使用数据库中的账号登录 关于密码编码器 使用BCry…

chatgpt赋能python:Python和Java:如何结合使用以提高开发效率

Python和Java:如何结合使用以提高开发效率 Python和Java是两种非常流行的编程语言,它们各自有自己的优势和用途。但有时候,我们需要将它们结合起来使用,以便更好地完成某些任务。在本文中,我们将介绍如何通过使用Java…

2.17 内存映射(1) 2.18内存映射(2)

2.17 内存映射(1) 内存映射 内存映射相关系统调用 void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);- 功能:将一个文件或者设备的数据映射到内存中- 参数:- void *addr: NULL, 由内核指定- le…

SpringSecurity学习 -- 1 springSecurity

目录 简介: token和jwt的区别 1.快速入门 1.自定义用户名和密码。 自定义重定向。 2.设置权限管理 3.从路径中获取用户信息 2.SpringSecurity核心组件 SecurityContext : authentication对象的容器。 SecurityContextHolder : Authentication: ​编辑 U…

Scala概述及变量和常量的重点

1.什么是scala Scala是一种多范式的编程语言(多范式:多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法),其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Jav…

python语法-面向对象数据分析案例(每日销售额柱状图数据可视化)

面向对象数据分析案例(每日销售额柱状图数据可视化) 使用工具: Pycharm、面向对象、json模块、pyecharts模块等 实现步骤: 读取数据–封装数据对象–计算数据对象–pyechars绘图 (项目数据见文章末参考内容&#xff09…

UDS关于0x36数据传输学习笔记

1.服务说明 客户端使用TransferData服务将数据从客户端传输到服务器(下载)或从服务器传输到客户端(上传)。 数据传输方向由前面的RequestDownload或RequestUpload服务定义。如果客户端发起了RequestDownload,则要下载的…

HTML注释

注释 注释的写法: 注释快捷键: 代码: 效果: 总结 答案:

usb 的拓扑结构

usb 驱动开发 usb 的基本概念 这个忽略, 基本上usb 是啥都知道 usb 的拓扑结构 usb 是一种主从结构的系统 usb主机由usb主控之器(Host Controller)和根集线器(Root Hub) 构成 usb 主控制器: 主要负责数据处理(就…

chatgpt赋能python:Python数据合并入门指南

Python数据合并入门指南 数据合并是数据分析和处理中的一个重要步骤。使用Python可以轻松地将多个数据集合并成一个,以实现更综合和完整的数据分析。在本篇关于Python数据合并的入门指南中,我们将介绍两个主要的数据合并方法:concat和merge。…

PolarDB MySQL 联邦查询优化特征(条件下推、按需返回列、LIMIT OFFSET下推)

背景 社区版 MySQL 支持的联邦引擎可以将位于远程数据库实例的表像本地表一样访问,大大方便了用户管理多个数据库实例的数据做聚合查询和分析。但是在性能方面存在着可以优化的地方: 只有在可以使用索引 RANGE/REF 方式扫描时,可以将索引上…

2.21 alarm函数 2.22setitimer定时器函数

2.21 alarm函数 #include <unistd.h> unsigned int alarm(unsigned int seconds);功能&#xff1a;设置定时器&#xff08;闹钟&#xff09;。函数调用&#xff0c;开始倒计时&#xff0c;当倒计时为0的时候&#xff0c; 函数会给当前的进程发送一个信号&#xff1a;SIG…