【愚公系列】软考中级-软件设计师 037-软件工程基础(系统设计)
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
🚀前言
软件工程中的系统设计是指在需求分析的基础上,对软件系统进行整体架构和各个模块的设计。系统设计的目标是将需求转化为具体的实现方案,明确软件的结构和功能,并考虑系统的可维护性、可扩展性、可重用性等方面的要求。
系统设计包括以下几个主要阶段:
阶段 | 描述 | 常用方法 |
---|---|---|
系统结构设计 | 确定软件系统的整体结构,包括模块之间的关系、数据的流动等。 | 层次结构设计、模块划分 |
模块设计 | 对每个模块进行详细设计,包括模块的功能、接口、数据结构等。 | 模块图、数据流图 |
数据设计 | 对系统中涉及到的数据进行设计,包括数据的存储结构、数据库设计等。 | 数据流图、实体关系图 |
接口设计 | 设计模块之间的接口,明确各模块之间的通信方式和数据传递方式。 | - |
安全性设计 | 考虑系统的安全性需求,包括用户认证、数据加密等。 | - |
可维护性设计 | 考虑系统的可维护性需求,包括代码的可读性、可测试性等。 | - |
性能设计 | 考虑系统的性能要求,包括响应时间、吞吐量等。 | - |
系统设计需要综合考虑多个因素,包括功能需求、可行性、技术可行性、资源约束等。在设计过程中,需要与需求分析、系统测试、实施等其他阶段进行紧密的沟通和协作,确保设计的准确性和可行性。
🚀一、系统设计
🔎1.概述
🦋1.1 主要目的
系统设计的主要目的就是为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理地使用各种资源,最终勾画出新系统的详细设计方案。
🦋1.2 主要内容
系统设计的主要内容包括新系统总体结构设计、代码设计、输出设计、输入设计、处理过程设计、数据存储设计、用户界面设计和安全控制设计等。
设计内容 | 描述 |
---|---|
新系统总体结构设计 | 确定系统的整体结构,包括模块之间的关系、数据流程、功能划分等,以确保系统的合理性和可扩展性。 |
代码设计 | 设计系统的具体实现方式,包括选择适当的编程语言和技术框架,定义类、函数、方法等的结构和功能,以实现系统的各项功能和业务需求。 |
输出设计 | 设计系统生成的各种输出,如报表、文件、图像等,以满足用户的需求和展示信息的可读性和易用性。 |
输入设计 | 设计系统接受的各种输入方式,如用户界面输入、文件导入等,以确保用户能够方便地输入所需的数据和信息。 |
处理过程设计 | 设计系统的处理逻辑和流程,包括数据处理、计算、判断、决策等,以实现系统的各项功能和业务逻辑。 |
数据存储设计 | 设计系统的数据存储方式和结构,包括数据库设计、文件存储等,以确保数据的安全性、完整性和可访问性。 |
用户界面设计 | 设计系统的用户界面,包括界面的布局、颜色、字体、图标等,以提供良好的用户体验和易用性。 |
安全控制设计 | 设计系统的安全机制和控制策略,包括用户认证、权限管理、数据加密等,以保护系统和用户的数据安全。 |
🦋1.3 设计方法
系统设计方法 | 描述 |
---|---|
面向数据流的结构化设计方法 (SD) | 该方法侧重于系统的数据流动和转换过程,通过分析系统的输入、处理和输出,将系统划分为不同的模块,以实现功能的分解和模块的协作。这种方法注重系统的逻辑结构和数据流程,以达到系统可维护、可测试和可扩展的设计目标。 |
面向对象的设计方法 (OOD) | 该方法以对象为中心,将系统的功能和数据封装成对象,并定义对象之间的关系和交互方式。通过面向对象的思维方式,可以更好地实现系统的模块化和重用性,提高系统的灵活性和可维护性。这种方法注重系统的结构和行为,以达到系统的可重用、可扩展和易于理解的设计目标。 |
🦋1.4 基本原理
系统设计基本原理是指在设计系统时应该遵循的一些基本原则和准则,以确保系统具有良好的可扩展性、可维护性和可重用性。
基本原理 | 内容 |
---|---|
抽象化 | 将系统分解为多个层次或模块,每个层次或模块负责不同的功能。通过抽象化,可以降低系统的复杂度,提高系统的可理解性和可重用性。 |
自顶而下,逐步求精 | 系统设计应该从整体上考虑,从高层次抽象开始,逐步细化系统的设计。这样可以确保系统的各个部分符合整体设计思路,便于系统的管理和维护。 |
信息隐蔽 | 模块间应该通过接口进行通信,而不直接访问对方的内部实现细节。这样可以隐藏模块的内部实现,提高模块的独立性和可重用性。 |
模块独立(高内聚、低耦合) | 每个模块应该负责一个明确的功能,模块的功能应该尽可能独立。模块之间应该松散耦合,即模块之间的依赖关系应该尽量减少,使得系统的修改和扩展更加灵活和容易。 |
🦋1.5 原则
系统设计原则 | 内容 |
---|---|
保持模块的大小适中 | 模块的大小应该适中,既不过于庞大也不过于微小。庞大的模块难以理解和维护,微小的模块难以复用和管理。 |
尽可能减少调用的深度 | 模块之间的调用应该尽可能减少深度,即减少调用链的层次。这样可以提高系统的执行效率和代码的可维护性。 |
多扇入、少扇出 | 模块应该有多个调用者,即多扇入。但是模块本身调用其他模块的数量应该尽量减少,即少扇出。这样可以降低模块之间的耦合度,提高模块的独立性和复用性。 |
单入口、单出口 | 模块应该只有一个入口和一个出口。这样可以提高模块的可读性和可维护性,减少模块之间的依赖关系。 |
模块的作用域应该在模块之内 | 模块的作用域应该尽量限制在模块之内,不影响其他模块的状态和数据。这样可以降低模块之间的耦合度,提高模块的独立性和可维护性。 |
功能应该是可预测的 | 模块的功能应该是可预测的,即根据输入产生确定的输出。这样可以提高系统的可靠性和可测试性,减少错误和异常情况的发生。 |
🔎2.概要设计
🦋2.1 设计软件系统总体结构
① 概要设计的基本任务就是软件系统总体结构,是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。
② 其基本任务是采用某种设计方法,将一个复杂的系统按功能划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。
③ 软件系统总体结构的设计是概要设计关键的一步,直接影响到下一个阶段详细设计与编码的工作。软件系统的质量及一些整体特性都在软件系统总体结构的设计中决定。
🦋2.2 数据结构及数据库设计
1、数据结构的设计
逐步细化的方法也适用于数据结构的设计。在需求分析阶段,已经通过数据字典对数据的组成、操作约束和数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。在概要设计阶段,宜使用抽象的数据类型。
2、数据库的设计
数据库的设计是指数据存储文件的设计,主要进行以下几方面设计。
- 概念设计。在数据分析的基础上,采用自底向上的方法从用户角度进行视图设计, 一般用E-R 模型来表述数据模型。 E-R 模型既是设计数据库的基础,也是设计数据结构的基础。
- 逻辑设计。E-R 模型是独立于数据库管理系统 ( D BMS) 的,要结合具体的 D BMS 特征来建立数据库的逻辑结构。
- 物理设计。对于不同的 D BMS, 物理环境不同,提供的存储结构与存取方法各不相同。物理设计就是设计数据模式的一些物理细节,如数据项存储要求、存取方法和索引的建立等。
🦋2.3 编写概要设计文档
文档主要有概要设计说明书、数据库设计说明书、用户手册以及修订测试计划。
概要设计说明书:
概要设计说明书是在需求分析阶段的基础上,对系统的整体架构和模块进行设计的文档。其中会包括系统的结构、模块的功能和相互关系、所使用的技术和工具等。
数据库设计说明书:
数据库设计说明书是对系统中所使用的数据库进行设计的文档。其中会包括数据库的结构、表的设计、字段的定义、索引的创建等。
用户手册:
用户手册是面向系统的最终用户,用于指导用户如何正确使用系统的文档。其中会包括系统的安装步骤、系统的功能介绍、操作指南等。
修订测试计划:
修订测试计划是在系统开发过程中,对已经实施的测试计划进行修订和更新的文档。其中会包括修订的原因、修订的内容、修订后的测试方法和测试步骤等。
🦋2.4 评审
对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方法的可行性,关键的处理及内外部接口定义的正确性、有效性、各部分之间的一致性等都一一进行评审。
详细设计的基本任务:
- 对每个模块进行详细的算法设计,使用图形、表格和语言等工具描述每个模块处理过程的详细算法。
- 设计模块内的数据结构。
- 进行数据库的物理设计,确定数据库的物理结构。
- 进行其他设计,根据软件系统的类型,可能还需要进行以下设计:
a) 代码设计:优化数据的输入、分类、存储和检索等操作,节约内存空间,对数据库中某些数据项的值进行代码设计。
b) 输入/输出格式设计。
c) 用户界面设计。 - 编写详细设计说明书。
- 进行评审,对处理过程的算法和数据库的物理结构进行评审。
系统设计的结果是一系列的系统设计文件,这些文件是实现一个信息系统(包括硬件设备和编制软件程序)的重要基础。
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
- 点赞
- 收藏
- 关注作者
评论(0)