软件工程导论——4系统设计

系统设计

重点是面向数据流的设计方法、面向对象的设计方法、过程设计的常用工具。掌握软件设计的主要技术、主要内容和主要方法,能根据具体项目进行模块划分和软件架构设计;理解软件设计和需求分析之间的相互关系。主要知识点:

1、系统设计分为概要设计和详细设计

1、概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型.

2、详细设计是软件工程中软件开发的一个步骤,就是对概要设计的一个细化,就是详细设计每个模块实现算法,所需的局部结构。在详细设计阶段,主要是通过需求分析的结果,设计出满足用户需求的嵌入式系统产品。

3、概要设计阶段通常得到软件结构图 , 详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等 。

4、详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。

2、与设计相关的8个概念:抽象、体系结构、设计模式、模块化、信息隐藏、功能独立、细化、重构。其中,着重考察体系结构、模块化、信息隐藏、功能独立。

抽象:

当考虑某一问题的模块化解决方案时,可以给出许多抽象级。在最高 的抽象级上,使用问题所处环境的语言以概括性的术语描述解决方案。在 较低的抽象级上,将提供更详细的解决方案说明。当力图陈述一种解决方 案时,面向问题的术语和面向实现的术语会同时使用。最后,在最低的抽 象级上,以一种能直接实现的方式陈述解决方案。在开发不同层次的抽象时,软件设计师力图创建过程抽象和数据抽 象。过程抽象是指具有明确和有限功能的指令序列。数据抽象是描述数据对象的具名数据集合。

体系结构:

软件体系结构意指“软件的整体结构和这种结构为系统提供概念完 整性的方式” [Sha95a]。从最简单的形式来看,体系结构是程序构件(模 块)的结构或组织、这些构件交互的方式以及这些构件所用数据的结构。 然而在更广泛的意义上,构件可以概括为主要的系统元素及其交互方式的 表示。Shaw和Garlan[Sha95a]描述了一组属性,这组属性应该作为体系结 构设计的一部分进行描述。结构特性定义了 “系统的构件(如模块、对象、 过滤器)、构件被封装的方式以及构件之间相互作用的方式”。外部功能特性指出“设计体系结构如何满足需求,这些需求包括性能需求、能力需求、可靠性需求、安全性需求、可适应性需求以及其他系统特征需求”。相关系统族“抽取出相似系统设计中常遇到的重复性模式”。
一旦给出了这些特性的规格说明,就可以用一种或多种不同的模型来表示体系结构设计 [Gar95]。结构模型将体系结构表示为程序构件的有组织的集合。框架模型可以通过确定相似 应用中遇到的可复用体系结构设计框架(模式)来提高设计抽象的级别。动态模型强调程序体 系结构的行为方面,指明结构或系统配置如何随着外部事件的变化而产生变化。过程模型强调 系统必须提供的业务或技术流程的设计。最后,功能模型可用于表示系统的功能层次结构。

设计模式:
设计模式描述了解决某个特定设计问题的设计结构,该设
计问题处在一个特定环境中,该环境会影响到模式的应用和使用方式。

模块化:

模块化是关注点分离最常见的表现。软件被划分为独立命名的、可处理的构件,有时被称为模块,把这些构件集成到一起可以满足问题的需求。

信息隐藏

模块应该被特别说明并设计,使信息(算法和数据) 都包含在模块内,其他模块无需对这些信息进行访问。
隐蔽的含义是,通过定义一系列独立的模块得到有效的模块化,独立 模块之间只交流实现软件功能所必需的信息。抽象有助于定义构成软件的过程(或信息)实体。隐蔽定义并加强了对模块内过程细节的访问约束以及对模块所使用的任何局部数据结构的访问约束

功能独立:

通过开发具有“专一”功能和“避免”与其他模块过多交互的模块,可以实现功能独立。 换句话说,软件设计时应使每个模块仅涉及需求的某个特定子集,并且当从程序结构的其他 部分观察时,每个模块只有一个简单的接口。独立性可以通过两条定性的标准进行评估:内聚性和耦合性。内聚性 显示了某个模块相关功能的强度;耦合性显示了模块间的相互依赖性。

细化:

抽象和细化是互补的概念。抽象能够明确说明内部过程和数据,但对 “外部使用者”隐藏了低层细节;细化有助于在设计过程中揭示低层细节。 这两个概念均有助于设计人员在设计演化中构建出完整的设计模型。

重构:

重构 是一种重新组织的技术,可以简化构件的设计(或代码)而无需改变其功 能或行为。Fowler这样定义重构:“重构是使用这样一种方式改变 软件系统的过程:不改变代码(设计)的外部行为而是改进其内部结构。”

3、系统设计从体系结构、数据、接口和组件四方面进行设计。面向过程和面向对象的系统设计,各自包含哪些设计内容?

数据设计元素:

和其他软件工程活动一样,数据设计(有时也称为数据体系结构)创建了在高抽象级上 (以客户或用户的数据观点)表示的数据模型和信息模型。之后,数据模型被逐步求精为特 定实现的表示,亦即计算机系统能够处理的表示。在很多软件应用中,数据体系结构对于必 须处理该数据的软件的体系结构将产生深远的影响。

体系设计元素

软件的体系结构设计等效于房屋的平面图。体系结构设计元素通常被描述为一组相互联系的子系统,且常常从需求模型中的分析包中派生出来。体系结构模型[Sha96]从以下三个来源导出:
(1 )关于将要构建的软 件的应用域信息;
(2)特定的需求模型元素,如数据流图或分析类、现有 问题中它们的关系和协作;
(3 )可获得的体系结构风格(第12章)和模式。
每个子系统有其自己的体系结构(如图形用户界面可能根据 之前存在的用户接口体系结构进行了结构化)。

接口设计元素

软件的接口设计相当于一组房屋的门、窗和外部设施的详细绘图(以 及规格说明)。软件接口设计元素描述了信息如何流人和流出系 统,以及被定义为体系结构一部分的构件之间是如何通信的。接口设计有三个重要的元素:
(1)用户界面(User Interface, UI);
(2)和其他系统、设备、网络、信息生成者或使用者的外部接口;
(3)各 种设计构件之间的内部接口。这些接口设计元素能够使软件进行外部通 信,还能使软件体系结构中的构件之间进行内部通信和协作。

构建设计元素

软件的构件级设计相当于一个房屋中每个房间的一组详图。软件的构件级设计完整地描述了每个软件构件的内部细节。为此,构件级设计为所有局 部数据对象定义数据结构,为所有在构件内发生的处理定义算法细节,并定义允许访问所有 构件操作(行为)的接口。

部署级设计元素

部署级设计元素指明软件功能和子系统将如何在支持软件的物理计算环境内进行分布。

4、掌握流程图和顺序图作法。

发布了23 篇原创文章 · 获赞 2 · 访问量 476

猜你喜欢

转载自blog.csdn.net/weixin_42385782/article/details/103130465
今日推荐