软件工程之总体设计

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

可行性研究

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

软件计划书

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

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.mzph.cn/news/86079.shtml

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

相关文章

RabbitMQ的工作模式——WorkQueues

1.工作队列模式 生产者代码 public class Producer_WorkQueues1 {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost("172.16.98.133&qu…

81《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

81《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

ESD门禁闸机的用途及优点

ESD门禁闸机是一种专门用于防止静电干扰的门禁设备,其主要用途包括: 防止静电干扰:ESD门禁闸机可以有效地防止静电干扰,保护电子元器件、电路板等敏感设备不受静电破坏。 控制人员进出:ESD门禁闸机可以通过身份验证等…

AWS入列CNCF基金会

7月27日,IT之家曾经报道,微软加入Linux旗下CNCF基金会,在这之后不到一个月的今天,亚马逊AWS也宣布,以铂金身份加入此基金会。 CNCF,全称Cloud Native Computing Fundation,该基金会旨在使得容器…

Netty简介及简单客户端/服务端示例代码

什么是Netty? Netty是一个NIO客户机-服务器框架,它支持快速而容易地开发网络应用程序,如协议服务器和客户机。它大大简化和简化了网络编程,如TCP和UDP套接字服务器。 “快速简单”并不意味着生成的应用程序将遭受可维护性或性能问…

【再识C进阶3(上)】详细地认识字符串函数、进行模拟字符串函数以及拓展内容

小编在写这篇博客时,经过了九一八,回想起了祖国曾经的伤疤,勿忘国耻,振兴中华!加油,逐梦少年! 前言 💓作者简介: 加油,旭杏,目前大二,…

基于AVR128单片机智能电风扇控制系统

一、系统方案 模拟的电风扇的工作状态有3种:自然风、常风及睡眠风。使用三个按键S1-S3设置自然风、常风及睡眠风。 再使用两个按键S4和S5,S4用于定时电风扇定时时间长短的设置,每按一次S4键,定时时间增加10秒,最长60秒…

mysql优化之索引

索引官方定义:索引是帮助mysql高效获取数据的数据结构。 索引的目的在于提高查询效率,可以类比字典。 可以简单理解为:排好序的快速查找数据结构 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这种数据…

html和css相关操作

html第一个网页 <!DOCTYPE html> <!--html文档声明&#xff0c;声明此文档是一个html5的文档--> <html> <!--html文档开头标签--><head><!--html文档的设置标签&#xff0c;文档的设置及资源的引用都写在这个标签中--><meta charset&q…

如何快速走出网站沙盒期(关于优化百度SEO提升排名)

网站沙盒期是指新建立的网站在百度搜索引擎中无法获得好的排名&#xff0c;甚至被完全忽略的现象。这个现象往往发生在新建立的网站上&#xff0c;因为百度需要时间来评估网站的质量和内容。蘑菇号www.mooogu.cn 为了快速走出网站沙盒期&#xff0c;需要优化百度SEO。以下是5个…

3D成像技术概述

工业4.0时代,三维机器视觉备受关注,目前,三维机器视觉成像方法主要分为光学成像法和非光学成像法,这之中,光学成像法是市场主流。 飞行时间3D成像 飞行时间成像(Time of Flight),简称TOF,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉…

力扣刷题-链表理论基础

什么是链表 什么是链表&#xff0c;链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个节点的指针域指向null&#xff08;空指针的意思&a…

毫米波雷达 TI IWR1443 在 ROS 中进行 octomap 建图

个人实验记录 /mmwave_ti_ros/ros_driver/src/ti_mmwave_rospkg/launch/1443_multi_3d_0.launch <launch><!-- Input arguments --><arg name"device" value"1443" doc"TI mmWave sensor device type [1443, 1642]"/><arg…

minio文件上传

1.代码 大佬仓库&#xff1a;https://gitee.com/Gary2016/minio-upload?_fromgitee_search 关于这个代码的讲解&#xff1a;来自b站 2.准备minio 参考&#xff1a;[1]、[2] 2.1 下载 官网&#xff1a;https://min.io/download#/windows 2.2 启动 ①准备一个data文件夹…

Android开发笔记 :理解Fragment

Android开发笔记&#xff1a;理解Fragment 导言 本篇文章产生的原因很简单&#xff0c;就是我在了解Android Jetpack中的Lifecycle框架时发现Lifecycle具体时间和状态的更新都是由一个名为ReportFragment的Fragment来跟踪的&#xff0c;为了更好的了解Fragment是如何追踪Activ…

以太网协议

以太网 以太网协议格式&#x1f3a8;目的地址,源地址mac地址格式 以太网协议格式&#x1f3a8; 目的地址,源地址 此处的地址,叫做mac地址(物理地址),长度是6个字节 mac地址的作用也是用来区分不同的主机 IP地址的长度是4字节 IP地址负责网络层(整体)转发,mac地址负责数据链路层…

pytest框架运行时的参数,以及多线程分布式运行用例、运行指定模块用例

一、运行时的参数 在上一篇博客中写了pytest最为核心的运行时前后置如何设置&#xff0c;细心的朋友可能也会发现其实我们当时就加过运行时的参数-vs。 pytest.main([‘-s’])&#xff1a;能打印出调试信息&#xff0c;print()或者日志都可以直接打印在控制台上。 pytest.ma…

基于微信小程序的房屋租赁系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信小程序端的主要功能有&#xff1a;户主微信小程序端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文…

CSRF攻击(跨站请求伪造)

1.CSRF原理 程序员开发的时候&#xff0c;未对相关页面进行token和referer判断&#xff0c;造成攻击者可构造自己的URL地址欺骗用户进行点击 漏洞分析&#xff08;低级可绕过&#xff09; 通过这个可以更改密码 改为了password 中级多了referer头可以绕过 源代码 多了一个refer…

MVC设计思想理解和ASP.NET MVC理解

三层模式 三层模式包括:UI层,业务逻辑层,数据访问层,模型层 MVC设计思想和ASP.NET MVC理解 MVC设计思想: MVC的思想就是把我们的程序分为三个核心的模块,这三个模块的详细介绍如下: 模型(Model) :负责封装与引用程序的业务逻辑相关的数据以及对数据的处理方法。模型层有对…