软件工程之总体设计

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

可行性研究

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

软件计划书

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

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、承认不断改进软件工程实践的必要性

结构化设计过程:

总体设计是软件工程开发过程中的关键阶段,它涉及到整个系统的结构、模块划分、接口定义等内容。下面是一个示例代码片段,展示了一个图书管理系统的总体设计模型。

class Book:def __init__(self, title, author, isbn):self.title = titleself.author = authorself.isbn = isbnclass Library:def __init__(self):self.books = []def add_book(self, book):self.books.append(book)def remove_book(self, book):self.books.remove(book)def search_book_by_title(self, title):result = []for book in self.books:if book.title == title:result.append(book)return resultdef search_book_by_author(self, author):result = []for book in self.books:if book.author == author:result.append(book)return result# 示例用法
library = Library()
book1 = Book("Python Crash Course", "Eric Matthes", "978-1593276034")
book2 = Book("Clean Code", "Robert C. Martin", "978-0132350884")
library.add_book(book1)
library.add_book(book2)result = library.search_book_by_author("Eric Matthes")
for book in result:print(book.title)

上述代码中,我们定义了两个类:Book表示一本图书,具有标题、作者和ISBN号等属性;Library表示图书馆,具有添加、删除和搜索图书的功能。在Library类中,我们使用列表来存储所有的图书对象,并提供了根据标题和作者进行搜索的方法。

示例用法展示了如何创建图书对象、将图书添加到图书馆中,并通过作者搜索图书并打印出结果。

这个示例只是一个简单的总体设计示例,实际的总体设计需要更全面地考虑系统的结构、模块划分、接口定义等。总体设计的目标是确保系统具有良好的扩展性、可维护性和可测试性,以便在后续的开发过程中更好地实现需求和功能。

 

总结

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

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

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

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

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

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

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

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

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

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

相关文章

PY32F003F18之DMA串口

PY32F003F18使用DMA串口,官方程序省FLASH,但不省内存。单片机内存够大,节省没意义,故做了修改,少用HAL库中的发送和接收,从里面抠出有用的部分,修修改改就可以了。 一、DMA串口初始化流程&…

Vue页面快速使用阿里巴巴矢量图标库

前面我已经写个一篇文章 阿里巴巴矢量图标如何使用_turbo夏日漱石的博客-CSDN博客 这篇文章非常详细地讲解了在html页面中如何使用阿里巴巴矢量图标库 下面我们讲解在vue页面中引入阿里巴巴矢量图标库icon的几种方法 目录 一、引入在线链接 1、 第九步链接引入在vue中应该是在…

安卓备份基带分区 备份字库 步骤解析 以免误檫除分区或者“格机” 后悔莫及

玩机搞机---安卓机型mtk和高通芯片查看分区 导出分区 备份分区的一些工具分析 修复基带 改串码 基带qcn 改相关参数 格机危害 手机基带的重要性前面几期博文我都有相关的说明。他区别于别的分区。而且目前手机的安全性越来越高。基带分区基本都是专机专用。而不像早期机型一…

【AI语言大模型】文心一言功能使用介绍

一、前言 文心一言是一个知识增强的大语言模型,基于飞桨深度学习平台和文心知识增强大模型,持续从海量数据和大规模知识中融合学习具备知识增强、检索增强和对话增强的技术特色。 最近收到百度旗下产品【文心一言】的产品,抱着试一试的心态体…

java服务内存说明及配置详解

java进程内存 JVM内存分布图: 【java进程内存】【堆外内存】 【jvm堆内存】 【堆外内存】 【Metaspace】 【Direct Memory】【JNI Memory】【code_cache】 … 堆外内存泄漏的排查在于【本地内存(Native Memory)】【Direct Memory】【JNI Memory】 一般…

期刊分类一览

分区情况 jcr分区 中科院分区 EI 理工科 一般是SCI的都是EI 国内的分区

网络安全深入学习第三课——热门框架漏洞(RCE—Struts2远程代码执行)

文章目录 一、Struts2框架介绍二、Struts2远程代码执行漏洞三、Struts2执行代码的原理四、Struts2框架特征五、漏洞手工POC六、漏洞工具复现 一、Struts2框架介绍 ------ Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴、京东等互联网、政府、企业门户网…

2023-09-20 Android CheckBox 让文字显示在选择框的左边

一、CheckBox 让文字在选择框的左边 &#xff0c;在布局文件里面添加下面一行就可以。 android:layoutDirection"rtl" 即可实现 android:paddingStart"10dp" 设置框文间的间距 二、使用的是left to right <attr name"layoutDirection">&…

一文掌握CodiMD安装与使用

简介&#xff1a;CodiMD 是一个基于 Markdown 语言的实时协作文档编辑器&#xff0c;它允许多个用户在同一个文档上进行实时编辑。CodiMD 的前身是 HackMD&#xff0c;但为了满足更开放的开源社区需求&#xff0c;CodiMD 作为其社区版本独立出来。 优势&#xff1a; 1. 开源且…

【Godot】解决游戏中的孤立/孤儿节点及分析器性能问题的分析处理

Godot 4.1 因为我在游戏中发现&#xff0c;越运行游戏变得越来越卡&#xff0c;当你使用 Node 节点中的 print_orphan_nodes() 方法打印信息的时候&#xff0c;会出现如下的孤儿节点信息 孤儿节点信息是以 节点实例ID - Stray Node: 节点名称(Type: 节点类型) 作为格式输出&a…

关于JPA +SpringBoot 遇到的一些问题及解决方法

关于JPA SpringBoot 遇到的一些问题及解决方法&#xff08;可能会有你正在遇到的&#xff09; 一、JpaRepository相关 1.1 org.springframework.dao.InvalidDataAccessResourceUsageException: Named parameter not bound : id; nested exception is org.hibernate.QueryEx…

【从0学习Solidity】33. 发送空投

【从0学习Solidity】 33. 发送空投 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索全栈…

day03_基础语法

今日内容 零、复习昨日 一、Idea安装&#xff0c;配置 二、Idea使用 三、输出语句 四、变量 五、数据类型 附录: 单词 零、 复习昨日 1 装软件(typora,思维导图) 2 gpt(学会让他帮你解决问题) 3 java发展(常识) 4 HelloWorld程序 5 编码规范 6 安装jdk,配置环境变量 电脑常识 任…

vuex如何安装、报错、安装版本注意事项

npm i vuex报错&#xff0c;为什么呢&#xff1f; 在2022.2.7&#xff0c;Vue3就变成了默认版本&#xff0c; Vue2中&#xff0c;必须要用Vuex的3版本 Vue3中&#xff0c;必须要用Vuex的4版本&#xff0c;否则会报错 npm i vuex 安装的就是4版本 如果我们需要安装3版本&…

LaTex打出上大下小的公式

想要在latex中打出如下word公式 首先使用 \atop符号 使用如下语句 d_{H(A,B)} max\{{sup\, inf \atop {a \in A\,b \in B}}\,d(a,b), {sup\, inf\,\atop {b\in B\,a\in\,A}}d(b,a)\}. ![在这里插入图片描述](https://img-blog.csdnimg.cn/0c842594716a4693b1124523d53bfcad…

Unity实现角色受到攻击后屏幕抖动的效果

文章目录 实现效果摄像机抖动脚本 玩家受伤其他文章 实现效果 首先看一下实现效果。 摄像机 我们要使用屏幕抖动&#xff0c;使用的是CinemachineVirtualCamera这个组件&#xff0c;这个组件需要在包管理器中进行导入。 导入这个组件之后&#xff0c;创建一个Chinemachine-…

【Spring】Spring Security学习笔记

基本概念 概念定义认证判断一个用户身份是否合法的过程(登录过程)会话为了避免用户的每次操作都进行认证, 将用户的信息保存在会话中. 常见的会话有基于session的模式和基于token的模式授权校验用户是否有权限访问某个资源 认证是为了验证用户的身份; 授权是为了验证用户是否有…

大范围XSS扫描工具:XSS-Freak,BurpSuite随机用户代理,Hades 静态代码审核系统

大范围XSS扫描工具&#xff1a;XSS-Freak&#xff0c;BurpSuite随机用户代理&#xff0c;Hades 静态代码审核系统。 #################### 免责声明&#xff1a;工具本身并无好坏&#xff0c;希望大家以遵守《网络安全法》相关法律为前提来使用该工具&#xff0c;支持研究学习…

【新版】系统架构设计师 - 案例分析 - 架构设计<Web架构>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 架构设计&#xff1c;Web架构&#xff1e;Web架构知识点单台机器 到 数据库与Web服务器分离应用服务器集群负载均衡负载均衡技术静态与动态算法Session共享机制有状态与无状态 持久化技…

postman几种常见的请求方式

1、get请求直接拼URL形式 对于http接口&#xff0c;有get和post两种请求方式&#xff0c;当接口说明中未明确post中入参必须是json串时&#xff0c;均可用url方式请求 参数既可以写到URL中&#xff0c;也可写到参数列表中&#xff0c;都一样&#xff0c;请求时候都是拼URL 2&am…