软件工程之总体设计

2023-09-18 18:58:37

总体设计是软件工程中的一个重要阶段,它关注整个系统的结构和组织,旨在将系统需求转化为可执行的软件解决方案。总体设计决定了系统的架构、模块划分、功能组织以及数据流和控制流等关键方面。

可行性研究

具体方面:经济可行性、技术可行性、操作可行性、法律可行性、时间可行性

软件计划书

是用管理员,技术人员和用户都能理解的术语来描述的具体内容,包括

1、软件的范围(软件功能规模、软件能力对硬件的要求)

2、环境资源(人力资源、硬件、软件、制定进度表、软件成本)

软件价格估计:参数化算法:C=f(v) c是原件价格 v所选取的应i想软件价格的独立参数

代码行估算 源代码行,不包括注释行

软件需求的指导性原则:

1、在开始建立分析模型前,先理解问题

2、开发原型,使得用户将如何发生人机交互

3、记录每个需求的起源和原因

4、使用多个需求视图

5、给需求赋予优先级

6、努力删除含糊性

软件原型的分类:

探索型、实验型、进化型

软件开发模型

软件开发过程

 总体设计任务

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

2、设计软件结构,即将需求规格转换为体系结构,划分出程序的模块组成、模块间
的相互关系。确定系统的数据结构、文件结构、数据库模式,确定测试方法与策略。
3、 编写总体设计说明书、用户手册、测试计划,用结构图来描述软件结构,选择分
解功能与划分模块的设计原则。
总体设计步骤
1. 设计供选择的方案
2. 推荐最佳实现方案

3. 设计软件结构

4. 数据库设计

5. 制定测试计划

6. 编写总体设计文档

7. 审查与复审总体设计文档

结构设计准则

1、提高模块独立性   2、选择合适的模块规则    3、适当选择模块的深度、宽度、扇入和扇出  4、模块的作用范围应该在控制范围内  5、降低模块接口的复杂程度  6、设计单入口单出口且功能可预测的模块。

软件工程的三要素:

方法:为软件开发提供了”如何做“的技术

工具:为软件工程方法提供了自动的或半自动的软件支撑环境

软件工程项目的基本目标:

付出较低的开发成本、达到要求的软件工程、取得较好的软件性能、开发的软件易于移植、需要较低的维护费用、能按时完成开发工作,及时交付使用

软降工程的原理:

1、用分阶段的生存周期计划严格管理

2、坚持进行阶段评审

3、实行严格的产品控制

4、采用现代程序设计技术

5、结果应能清楚的审查

6、合理安排软件开发小组的人

7、承认不断改进软件工程实践的必要性

结构化设计过程:

总结

  1. 理解需求 在总体设计之前,需要全面理解系统的需求和用户的期望。这包括功能需求、性能需求、安全性要求和可靠性需求等方面。只有充分理解需求,才能确保设计出满足用户需求的系统。

  2. 系统架构设计 系统架构是总体设计的核心部分,它定义了系统的整体结构和组织方式。在架构设计阶段,需要确定系统的层次划分、模块划分和模块间的关系。常见的架构模式包括分层架构、客户端-服务器架构和面向服务架构等。

  3. 模块划分和组织 根据系统需求和架构设计,将系统功能划分为若干个模块,每个模块负责实现特定的功能。模块划分应遵循高内聚、低耦合的原则,使得各个模块之间的依赖关系尽可能简化。同时,需要确定模块间的接口和数据交换方式。

  4. 接口定义和规范 在总体设计中,需要明确定义模块之间的接口和数据交换格式。接口规范应该清晰、简洁,并符合标准化的设计原则。良好定义的接口有助于模块的独立开发和集成,并提升系统的可维护性和可扩展性。

  5. 数据流和控制流设计 总体设计需要考虑系统中的数据流和控制流。数据流描述了信息在系统内部和外部的传递路径,控制流描述了系统中各个模块或组件的执行顺序和条件流转。理解和规划数据流和控制流有助于保证系统的正确性和高效性。

  6. 技术选型和工具选择 总体设计阶段需要选择合适的技术和工具来支持系统的实现和开发过程。这包括选择编程语言、开发框架、数据库系统等。技术选型应该考虑系统需求、开发团队的技术能力以及尽可能利用已有的资源和经验。

  7. 风险评估和管理 在总体设计过程中,需要进行风险评估和管理。识别潜在的风险和问题,并采取相应的措施进行规避或降低风险。这有助于确保系统的稳定性和可靠性。

  8. 文档化 总体设计阶段需要产出详细的设计文档,包括系统架构图、模块划分、接口定义、数据流程图等。这些文档有助于开发团队和其他相关人员理解和实施系统的设计方案。同时,文档也是后续维护和升级的重要依据。

更多推荐

土耳其市场最全开发攻略

2023年6月1日起,亚马逊土耳其站开始正式面向中国卖家试运营。土耳其这个古丝绸之路西域的重要节点,再一次吸引了来自东方众商家的目光。土耳其是一个著名的贸易中心,向世界提供许多出口产品。土耳其总统埃尔多安指出,根据调整后的数据,土耳其经济在今年第一季度增长了3.9%,第二季度增长了3.8%,他说:“因此,土耳其的经济增

机器学习西瓜书+南瓜书吃瓜教程第三章学习笔记

本次学习为周老师的机器学习西瓜书+谢老师南瓜书+Datawhale视频视频地址下面为本人的学习笔记,最近很忙还没学多少,之后补!!!u1s1,边看视频边自己手推一遍真的清楚很多,强烈推荐自己手推虽然花时间,但真的很有用很清晰线性模型1、基本形式2、最小二乘估计&&极大似然估计3、求解w和b4、举例机器学习是想要通过现有

SkyWalking使用讲解

文章目录1SkyWalking1.1简介1.2如何选择1.3Skywalking架构1.4服务端搭建1.4.1下载安装包1.4.2配置修改1.4.2.1config/application.yml1.4.2.2webapp/webapp.yml1.4.3启动服务1.5客户端搭建1.6数据持久化1.6.1修改配置文件1.

C#复习:面向对象基本概念

C#复习:面向对象基本概念前言什么是面向对象类,名称空间的介绍如何导入类库DLL引用(黑盒引用)项目引用(白盒引用)NuGet介绍依赖关系C#的分装(个人理解)前言关于我C#的博客是根据刘铁猛老师的C#入门课程为基础写的,可以配合刘铁猛老师的课程一起观看,会由更好的理解!什么是面向对象所谓面向对象,在我看来,就是把世界

《数字图像处理-OpenCV/Python》连载(1)前言

《数字图像处理-OpenCV/Python》连载(1)前言本书京东优惠购书链接:https://item.jd.com/14098452.html写作背景编写本书的初衷,源自作者学习数字图像处理的经历。在创新实验班开设的专业创新教育课程中,我选择的是数字图像处理方向。老师向我推荐的教材是冈萨雷斯的《数字图像处理》。学习

数据库链接池示实例

数据库连接池为什么使用连接池使用JDBC和数据库建立连接的方式建立连接执行对数据库的操作关闭连接回收资源每次要访问数据库都要先建立连接执行操作然后再断开连接回收资源如果经常对数据库操作则内存开销大使用一次连接一次使用连接池和数据库建立连接创建连接池(只需要执行一次)从连接池获取连接执行对数据库的操作将连接放回连接池Q:

【Mybatis】基础部分

mybatis持久层:可以立即保存在磁盘上,在这里可以理解为与数据库相关操作。持久层技术解决方案有几种?1.JDBC技术–>Connection、PreparedStatement、ResultSet2.Spring的JdbcTemplate–>Spring中对Jdbc的简单封装3.Apache(阿帕奇)的DBUtil

从零实现带RLHF的类ChatGPT:逐行解析微软DeepSpeed Chat

写在最前面本文最早写于2023年4月的这篇文章中《从零实现带RLHF的类ChatGPT:从TRL/ChatLLaMA/ColossalChat到DeepSpeedChat》,后因要在「大模型项目开发线下营」上讲DSC的实现而不断扩写其中的DSC,为避免原文过长,故把该文最后的DSC部分抽取出来成本文前言如此文所述,微软

浅谈基于物联网的医院消防安全管理

安科瑞华楠摘要:医院消防物联网将原本与网络无关的消防设施和网络结合起来,将消防监督管理、防火灭火所需的相关信息进行汇总,可以让医院更加轻松地发现和处理医院的警情信息,降低火灾发生频率。关键词:物联网技术;医院智慧消防;1医院火灾的特点医院是人员密集场所,发生火灾时,容易出现踩踏等问题,进而严重威胁群众的生命财产。医院拥

渗透测试——formatworld(1)

文章目录一、环境二、获取flag11、扫描局域网内存活主机1.1查看kali的IP地址1.2扫描存活主机2、粗略扫描靶机端口(服务)3、寻找ftp服务漏洞4、扫描端口详细信息5、匿名登录ftp一、环境攻击机:kali靶机:formatworld二、获取flag11、扫描局域网内存活主机1.1查看kali的IP地址ifc

Redis面试题(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、什么是Redis?简述它的优缺点?二、Redis与memcached相比有哪些优势?三、Redis支持哪几种数据类型?四、Redis主要消耗什么物理资源?五、Redis有哪几种数据淘汰策略?六、Redis官方为什么不提供Windows版本?

热文推荐