信息系统项目管理师自学笔记(八)——软件设计

2.4 软件设计

从工程管理角度来看,软件设计可分为概要设计和详细设计两个阶段。

  • 概要设计也称为高层设计,即将软件需求转化为数据结构和软件的系统结构。概要设计主要包括设计软件的结构、确定系统由哪些模块组成,以及每个模块之间的关系。
  • 详细设计也称为低层设计,即对结构图进行细化,得到详细的数据结构与算法。同样如果采用结构化设计,则详细设计的任务就是为每个模块进行设计。

总的来说,在整个软件设计过程中,需完成以下工作任务。

  • 制定规范,作为设计的共同标准。
  • 完成软件系统结构的总体设计,将复杂系统按功能划分为模块的层次结构,然后确定模块的功能,以及模块间的调用关系和组成关系。
  • 设计处理方式,包括算法、性能、周转时间、响应时间、吞吐量和精度等。
  • 设计数据结构。
  • 可靠性设计。
  • 编写设计文档,包括概要设计说明书、详细设计说明书、数据库设计说明书、用户手册和初步的测试计划等。
  • 设计评审,主要是对设计文档进行评审。

2.4.1 软件设计活动

软件设计包括4个既独立又相互联系的活动,即数据设计、体系结构设计、接口设计(界面设计)和过程设计。

  • 数据设计是实施软件工程中的4个设计活动中的第一个。由于数据结构对程序结构和过程复杂性都有影响,因此数据结构对软件质量的影响是很深远的。好的数据设计将改善程序结构和模块划分,降低过程复杂性。数据设计将分析时创建的信息域模型变换成实现软件所需的数据结构。在E-R图中定义的数据对象和关系,以及数据字典中描述的详细数据内容为数据设计活动奠定了基础。
  • 体系结构设计的主要目标是开发一个模块化的程序结构,并表示出模块间的控制关系。此外,体系结构设计将程序结构和数据结构相结合,为数据在程序中的流动定义了接口。
  • 接口设计描述了软件内部、软件和协作系统之间,以及软件与人(用户)之间如何通信。一个接口意味着信息流(如数据和/或控制流),因此,数据和控制流图提供了接口设计所需的信息。接口设计要实现的内容包括一般交互、信息显示和数据输入。

接口设计主要包括以下3个方面。

  1. 设计软件模块间的接口。
  2. 设计模块和其他非人的信息生产者和消费者(比如外部实体)之间的接口。
  3. 设计人(用户)和计算机间的接口(通常简称为“人机接口”或“人机界面”)。

过程设计应该在数据设计、体系结构设计和接口设计完成之后进行。

2.4.2 结构化设计

  • 结构化设计包括体系结构设计、接口设计、数据设计和过程设计等任务。它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模块化的过程。
  • 在结构化方法中,模块化是一个很重要的概念,它是指将一个待开发的软件分解成为若干个小的简单部分——模块。每个模块可以独立地开发、测试。这是一种复杂问题的“分而治之”原则,其目的是使程序的结构清晰、易于测试与修改。
  • 模块是指执行某一特定任务的数据结构和程序代码。通常将模块的接口和功能定义为其外部特性,将模块的局部数据和实现该模块的程序代码称为内部特性。在模块设计时,最重要的原则就是实现信息隐蔽和模块独立。模块通常具有连续性,也就意味着作用于系统的小变动将导致行为上的小变化,同时规模说明的小变动也将影响到一小部分模块。
1.抽象化

抽象化包括对过程的抽象、对数据的抽象和对控制的抽象。

  1. 过程抽象。在软件工程过程中,从系统定义到实现,每进展一步都可以看做是对软件解决方案的抽象化过程的一次细化。在从概要设计到详细设计的过程中,抽象化的层次逐渐降低,当产生源程序时到达最低的抽象层次。
  2. 数据抽象。数据抽象与过程抽象一样,允许设计人员在不同层次上描述数据对象的细节。
  3. 控制抽象。控制抽象可以包含一个程序控制机制而无须规定其内部细节。
2.自顶向下,逐步细化

将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个体系结构。设计人员对初始说明仔细推敲,进行功能细化或信息细化,给出实现的细节,划分出若干成分。然后再对这些成分,施行同样的细化工作。随着细化工作的逐步展开,设计人员就能得到越来越多的细节。

3.信息隐蔽

信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,并且尽可能少地暴露其内部的处理过程。通常会将困难的决策、可能修改的决策、数据结构的内部连接,以及对它们所做的操作细节、内部特征码、与计算机硬件有关的细节等隐蔽起来。
通过信息隐蔽可以提高软件的可修改性、可测试性和可移植性,它也是现代软件设计的一个关键性原则。

4.模块独立

模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系最简单。保持模块的高度独立性,也是在设计时的一个很重要的原则。通常用耦合(模块之间联系的紧密程度)和内聚(模块内部各元素之间联系的紧密程度)两个标准来衡量,我们的目标是“高内聚、低耦合”。
信息系统项目管理师自学笔记(八)——软件设计_第1张图片
信息系统项目管理师自学笔记(八)——软件设计_第2张图片
除了满足以上两大基本原则之外,通常在模块分解时还需要注意:保持模块的大小适中;尽可能减少调用的深度;直接调用该模块的次数应该尽量多,但调用其他模块的次数则不宜过多;保证模块是单入口、单出口的;模块的作用域应该在模块之内;功能应该是可预测的。

你可能感兴趣的:(信息系统项目管理师,软件框架,信息安全)