MindMap Gallery 第五章 总体设计
软件工程结构化设计——总体设计,可以站在全局的角度上,花较少的成本,从比较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和软件结构,以实现以较少的成本开发较高质量的软件系统。
Edited at 2023-10-31 18:37:17Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Projektmanagement ist der Prozess der Anwendung von Fachwissen, Fähigkeiten, Werkzeugen und Methoden auf die Projektaktivitäten, so dass das Projekt die festgelegten Anforderungen und Erwartungen im Rahmen der begrenzten Ressourcen erreichen oder übertreffen kann. Dieses Diagramm bietet einen umfassenden Überblick über die 8 Komponenten des Projektmanagementprozesses und kann als generische Vorlage verwendet werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Projektmanagement ist der Prozess der Anwendung von Fachwissen, Fähigkeiten, Werkzeugen und Methoden auf die Projektaktivitäten, so dass das Projekt die festgelegten Anforderungen und Erwartungen im Rahmen der begrenzten Ressourcen erreichen oder übertreffen kann. Dieses Diagramm bietet einen umfassenden Überblick über die 8 Komponenten des Projektmanagementprozesses und kann als generische Vorlage verwendet werden.
第五章 总体设计
任务:
基本目的是回答“概括的说,如何实现软件系统”
另一重要的任务是设计软件的结构,也就是确定系统中的每个程序由哪些模块组成的,以及这些模块相互间的关系
必要性:
可以站在全局的角度上,花较少的成本,从比较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和软件结构,以实现以较少的成本开发较高质量的软件系统。
5.1 设计过程
系统设计阶段
1、设想供选择的方案 2、选取合理的方案 3、推荐最佳方案
结构设计阶段
1、功能分解 2、设计软件结构 3、设计数据库 4、制定测试文档 5、书写文档 6、审查和复查
5.2 设计原理
5.2.1 模块化
模块:模块是构成程序的基本构件
模块化:就是把程序划分成独立命名并且可以独自访问的模块,每个模块可以完成一个子功能,将模块集合起来构成一个整体,就可以完成指定的功能满足用户的要求。
作用(优点):
1、模块化可以使软件结构清晰,不仅容易设计也容易阅读和理解
2、模块化可以使软件容易测试和调控
3、模块化可以使软件容易修改
4、有助于软件开发工程的组织管理
5.2.2 抽象
抽象:
抽象就是抽象出事物的本质特性而暂时不考虑它们的细节。软件工程过程的每一步都是对软件解法的抽象层次的进一步精化。
抽象的应用:
在可行性研究阶段,软件是作为系统的一个完整部件;在需求分析阶段,软件解法是使用在问题环境内熟悉的方式描述的;从总体设计过渡到详细设计阶段,抽象的层次也逐步降低;最后,当源程序写出来以后,也就达到了抽象的最底层。
抽象的优点:
用自顶向下由抽象到具体的方式分配控制,简化了软件的设计与实现,提高了软件的可理解性和可测试性,并且使软件更容易维护。
5.2.3 逐步求精
定义
为了能集中精力解决主要问题而尽量推迟对问题细节的考虑
抽象与逐步求精的区别:
子主题
[抽象与逐步求精的区别:
抽象:
定义:将复杂问题简化为基本问题或概念的过程
目的:降低问题的复杂性,便于理解和处理
方法:分类、归纳、概括等
逐步求精:
定义:从问题的高层次逐步细化到低层次的过程
目的:将复杂问题分解为可管理的小问题,便于设计和实现
方法:分解、细化、优化等
区别:
抽象是自顶向下的过程,逐步求精是自底向上的过程
抽象关注问题的整体结构,逐步求精关注问题的具体细节
抽象强调分类和归纳,逐步求精强调分解和细化
抽象和逐步求精相辅相成,共同用于解决复杂问题]
5.2.4 信息隐藏和局部化
[信息隐藏和局部化
信息隐藏
定义
隐藏系统内部细节
只暴露必要信息
优点
降低复杂性
提高安全性
提高可维护性
局部化
定义
将相关功能或数据放在一起
减少依赖关系
优点
提高效率
降低耦合度
提高可维护性;]
5.2.5 模块独立
模块独立
模块独立性
模块独立性是指模块内部各部分之间相互依赖程度低,模块之间耦合度低
模块独立性有助于提高系统的可维护性和可扩展性
模块独立性的度量
模块独立性的度量可以通过内聚度和耦合度来衡量
内聚度是指模块内部各部分之间的紧密程度,内聚度越高,模块独立性越好
耦合度是指模块之间相互依赖的程度,耦合度越低,模块独立性越好
提高模块独立性的方法
采用信息隐藏技术,将模块内部的实现细节隐藏起来,只暴露必要的接口
采用模块化设计方法,将系统划分为多个模块,每个模块负责特定的功能
采用接口设计方法,将模块之间的交互接口设计得简洁明了,降低模块之间的耦合度
采用分层设计方法,将系统划分为多个层次,每个层次负责特定的功能,降低模块之间的耦合度
模块独立性的重要性
模块独立性是衡量软件设计质量的重要指标之一
模块独立性有助于提高系统的可维护性和可扩展性,降低系统维护和扩展的成本
模块独立性有助于提高系统的可靠性和稳定性,降低系统出错的概率;
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合
5.3 启发规则
1、改进软件结构提高模块独立性
2、模块规模应该适中
3、深度、宽度、扇出和扇入都应适当
4、模块的作用域应在控制域之内
5、力争降低模块接口的复杂程度
6、设计单入口单出口的模块
7、模块功能应该可以预测
5.4 描绘软件结构的图形工具
5.4.1 层次图和HIPO图
5.4.2 结构图
5.5 面向数据流的设计方法
结构化设计方法
5.5.1 概念
概念
信息流的两种类型
1、交换流
2、事物流
5.5.2 变换分析
5.5.3 事物分析