软件工程(总体设计①设计过程)

经过需求分析(https://blog.csdn.net/weixin_45626468/article/details/115324885)阶段的工作,系统必选“做什么”已经清楚了,现在是决定“怎样做”的时候了。

总体设计的基本目的就是回答“概况地说,系统应该如何实现”这个1问题,因此,总体设计又称为概要设计或初步设计。

通过这个阶段的工作将划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等

但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。

总体设计阶段的另一项主要任务是设计软件的结构,也就是确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。

总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图(https://blog.csdn.net/weixin_45626468/article/details/115117900)是设想各种可能方案的基础。

然后分析员从这些供选择的方案中选取若干个合理的方案,为每个合理的方案准备一份系统流程图,列出组成系统的所有物理元素,进行成本/效益分析(https://blog.csdn.net/weixin_45626468/article/details/115227014),并且制定实现这个方案的进度计划。

分析员应该综合分析比较这些合理的方案,从中选出最佳方案向用户和使用部门负责人推荐。

如果用户和使用部门负责人接受了推荐的方案,分析员应该进一步为这个最佳方案设计软件结构,通常,设计出初步软件结构后还要多方改进,从而得到更合理的结构,进行必要的数据库设计,确定测试要求并且制定测试计划。

从上面的叙述当中不难看出,在详细设计之前先进行总体设计的必要性;

可以站在全局高度上,花较少的成本,从较抽象的层次分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。

设计过程

总体设计过程通常由两个主要阶段组成:

系统设计阶段,确定系统的具体实现方案

结构设计阶段,确定软件结构

典型的总体设计过程包括:

1.设想供选择的方案

如何实现要求的系统呢?在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。在总体设计阶段开始时只有系统的逻辑模型,分析员有充分的自由分析比较不同的物理实现方案,一且选出了最佳的方案,将能大大提高系统的性能/价格比。

需求分析阶段得出的数据流图是总体设计的极好的出发点。设想供选择的方案的一种常用的方法是,设想把数据流图中的处理分组的各种可能的方法,拋弃在技术上行不通的分组方法(例如,组内不同处理的执行时间不相容),余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统。

2.选取合理的方案

应该从前一步得到的一 系列供选择的方案中选取若干个合理的方案,通常至少选取低成本、中等成本和高成本的3种方案。在判断哪些方案合理时应该考虑在问题定义和可行性研究阶段确定的工程规模和目标,有时可能还需要进一步征求用户的意见。

对每个合理的方案,分析员都应该准备下列4份资料。
(1)系统流程图。
(2)组成系统的物理元素清单。个
(3)成本/效益分析。
(4)实现这个系统的进度计划。

3.推荐最佳方案

分析员应该综合分析对比各种合理方案的利弊,推荐一个最佳的方案,并且为推荐的方案制定详细的实现计划。
用户和有关的技术专家应该认真审查分析员所推荐的最佳系统,如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批。在使用部门的负责人也接受了分析员所推荐的方案之后,将进人总体设计过程的下一个重要阶段一结构设计。

4.功能分解

为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库)。对程序(特别是复杂的大型程序)的设计,通常分为两个阶段完成:首先进行结构设计,然后进行过程设计。结构设计确定程序由哪些模块组成,以及这些模块之间的关系;过程设计确定每个模块的处理过程。结构设计是总体设计阶段的任务,过程设计是详细设计阶段的任务。
为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。 分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。一般说来,经过分解之后应该使每个功能对大多数程序员而言都是明显易懂的。功能分解导致数据流图的进一步细化,同时还应该用IPO图或其他适当的工具简要描述细化后每个处理的算法。

5.设计软件结构

通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良好的层次系统顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。软件结构(即由模块组成的层次系统)可以用层次图或结构图来描绘。如果数据流图已经细化到适当的层次,则可以直接从数据流图映射出软件结构

6.设计数据库

对于需要使用数据库的那些应用系统,软件工程师应该在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库。在数据库课中已经详细讲述了设计数据库的方法,本书不再赘述。

7.制定测试计划

在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。本书第7章将仔细讨论软件测试的目的和设计测试方案的各种技术方法。

8.书写文档

应该用正式的文档记录总体设计的结果,在这个阶段应该完成的文档通常有下述几种。
(1)系统说明主要内容包括用系 统流程图描绘的系统构成方案,组成系统的物理元素清单,成本/效益分析;对最佳方案的概括描述,精化的数据流图,用层次图或结构图描绘的软件结构,用IPO图或其他工具(例如,PDL语言)简要描述的各个模块的算法,模块间的接口关系,以及需求、功能和模块三者之间的交叉参照关系等。
(2)用户手册根据总体设计阶段的结果 ,修改更正在需求分析阶段产生的初步的用户手册。
(3)测试计划包括测试策略,测试方案,预期的测试结果,测试进度计划等。
(4)详细的实现计划
(5)数据库设计结果

9.审查和复审

最后应该对总体设计的结果进行严格的技术审查,在技术审查通过之后再由客户从管理角度进行复审。

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

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

相关文章

ygo游戏王卡组_ACG大科普(7)游戏王

大家是否在小时候接触过一种卡片类似这种的 这就是今天的主角游戏王。 背景 1996年,《游戏王》漫画开始在集英社《周刊少年Jump》连载。 1998年,Bandai推出以《游戏王》原作中登场的集换卡牌游戏“M&W”为题材的集换卡牌。 采用Bandai的卡片自动贩卖…

Qt图形界面编程入门(基本窗口及控件)

基本窗口类QWidget QWidget是所有窗体部件的基类,例如对话框类,主窗体类,以及其他诸如按钮,编辑框,标签等等都是由QWidget派生得到,QWidget拥有的方法往往都可以在其他子类中使用。 窗体的几何尺寸分为包…

背景se_盘点那些RPG手游中主角的背景故事,越悲情越强大

RPG游戏一直以代入感超强的游戏方式来吸引玩家,用超越现实的艺术手段把玩家带入到虚拟的游戏世界,让玩家担任不同的社会角色来去经历不同的虚拟故事,体验多种人生经历,想要扮演任何角色都是有可能的。当然在RPG游戏中也有好坏之分…

TensorFlow构建二维数据拟合模型(2)

变量的定义和使用 变量的定义与初始化 TensorFlow中,变量是一种特殊的张量,其值可以是一个任意类型的形状的张量。 与其他张量不同,变量存在于单个回话调用的上下文之外,主要作用是保存和更新模型中的参数。 声明变量通常使用…

c++用牛顿法开多次根_望远镜的历史之三:大神出世,改变望远镜历史的竟然是牛顿...

上次我们说到格里高利望远镜有点画蛇添足,那么格里高利望远镜添了什么呢?格里高利望远镜格里高利望远镜观测的图像都是正立的,这就意味着要采用多个凹面反射镜,而当时凹面反射镜磨制不易,无论是多大的科学家都要亲自动…

python浮点型精度损失问题_解决float型数据精度损失问题

问题:浮点型数据存储方式会导致数据精度损失,增大计算误差。float fval 0.45;  // 单步调试发现其真实值为:0.449999988double dval 0.45; // 单步调试发现其真实值为:0.45000000000000001当很多个这样的单精度浮点型数据进行…

Linux配置本地yum源(RHEL8)

https://www.cnblogs.com/itwangqiang/p/13391401.html

如何把照片正面变成反面_各国签证照片要求大全 (含模板)

对于不是很熟悉签证的小伙伴来说,面对全球那么多国家的签证而且每张签证照片的规格不同为此我们为您整理了各国签证照片要求大全 东南亚国家的签证照要求基本相同,就以泰国为例,告诉大家签证照的注意事项。“泰国,新加坡&#xff…

TensorFlow实验(3)

模型的保存与恢复 我们来简单实现一下模型的保存与恢复 训练完TensorFlow模型后,可将其保存为文件,以便于预测新数据时直接加载使用。 TensorFlow模型主要包含网络的设计或者图以及已经训练好的网络参数的值。 TensorFlow提供的tf.train.Saver()函数…

ad域 禁用账号_IST-AD域信息同步平台来袭

IST的AD域信息同步系统是能帮助域管理员简化日常的一些管理工作,可以让AD域系统与其他的业务系统进行用户信息同步,实现自动的新旧用户帐户信息的同步修改、组织架构同步调整,并有简单易操作的配置页面系统与操作日志查询等。通过ODBC、Web S…

Linux基础(firewalld防火墙配置管理工具的图形用户界面)

firewall-config的界面如图所示 我们先将当前区域中请求http服务的流量设置为允许,但仅限当前生效。具体配置如图 尝试添加一条防火墙策略规则,使其放行访问8080-8088端口(TCP协议)的流量,并将其设置为永久生效&#x…

ios 请求失败封装_vue_axios请求封装、异常拦截统一处理

1、前端网络请求封装、异常统一处理vue中采用axios处理网络请求,避免请求接口重复代码,以及各种网络情况造成的异常情况的判断,采用axios请求封装和异常拦截操作;axios 请求封装// 引入axios文件包import axios from axios// POST…

Linux基础(使用ssh服务管理远程主机1)

配置网络参数 使用nmtui命令配置网络参数,以及通过nmcli命令查看网络信息并管理网络会话服务。 执行nmtui命令运行网络配置工具 进入主界面 选中编辑连接并按下回车键 选中要编辑的网卡名称,然后按下Edit(编辑)按钮 把网络IPv4 …

联想g510升级方案_联想智慧中国行,聚焦第一古城,助力企业智能升级

12月29日,联想智慧中国行“一起联想 生态绽放”One Lenovo融合品鉴会邢台站盛大启幕,现场近70位河北合作伙伴到场参会,共同探讨智能时代带来的多重挑战和迎战机遇。“联想智慧中国行”是联想致力于推动中国行业智能化升级举办的系列活动&…

软件工程(总体设计②设计原理)

设计原理 模块化 模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。 按照模块的定义,过程、函数、子程序和宏,都可作为模块。 面向对象方法学中的对象是模块,对象内的方法也是模块。模块是构成程序的基…

TensorFlow构建二维数据拟合模型(3)

占位符与数据喂入机制 placeholder是TensorFlow提供的占位符节点,由tf.placeholder()函数创建,其实质上也是一种变量。占位符没有初始值,只会分配必要的内存,其值由会话中用户调用的run()函数传递。 占位符声明的方法如表 函数…

合作开发过程产生的专利_被起诉专利侵权怎么办?专利律师给你出招!

随着国内企业专利申请量的增加及专利保护意识的逐步提升,专利侵权诉讼作为常用的商业竞争手段和策略,其数量也随之呈逐年递增之势。考虑到目前国内专利数量较多,且很多专利技术互有交叉,因此在进行产品研发时即使未借鉴他人产品&a…

idea怎么设置代码提示不区分大小写_IntelliJ IDEA 这样设置动图,棒极了!

转自:IntelliJ-IDEA-Tutorial/Judas.n链接:http://suo.im/6sHdelIntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让我们这些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它。推荐设置IntelliJ IDEA 的代码…

linux课堂笔记(1)

一、linux特点 1.源代码开发: *.c *.h 可二次开发 2.安全:可检测安全性 3.稳定:共享内存 内存冲突(Windows,内存冲突,蓝屏死机) 4.网络服务:server(WWW&#xf…

表字段顺序有何影响_「品味保定」炸烹虾段乾隆赞 百年保定柔雅香

【引文】上溯先贤尧帝,保定传承已逾千载。燕赵之地、畿辅之疆、北控三关、南通九省、翅卫京师说的就是古城保定。千百年来,古城保定形成了独具特色的饮食文化,精致气派的直隶官府菜就是这种文化的结晶。品百年保定酒,尝直隶官府菜…