欢迎来到学术参考网

软件设计的基本任务和原则

发布时间:2016-01-12 15:43

  1、前言

 

  软件设计是一个构造多个方案并进行选择的过程。它需要对诸多要素进行考虑后进行折中,是一个在多个目标函数的环境下选择最优组合的过程。也就是说依据需求阶段确定的系统规模和目标,设想实现目标系统的各种可能的方案,然后再综合考虑技术、经济、操作等各种因素,从各种可能的方案中选取若干个合理的方案进行综合分析、对比,从中选出一个最佳方案,最后设计这个最佳方案的详细具体实现计划和细节。因此在设计过程中,一定要明确设计的基本任务与原则。

 

  2、软件设计的基本任务

 

  2.1 总体设计的基本任务

 

  软件总体设计是概要地回答系统应该如何实现。该阶段具体地完成以下几个方面的基本任务:

 

  2.1.1 软件结构设计

 

  当用户接受一个最佳方案后,接着就要为这个方案设计软件结构。通常情况下,这个软件结构要经过反复修改,以便得到更好的体系结构。所谓软件结构设计,就是确定软件系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。它包括:采用某种设计方法,将一个复杂的系统划分成若干模块;确定每个模块的功能,建立与已确定的软件需求的对应关系;确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。

 

  软件结构设计是总体设计的关键,它直接影响软件开发后续阶段的工作。因此,软件结构的设计应由经验丰富的软件人员担任,并采用一定的设计方法设计出高质量的软件结构。

 

  2.1.2 最佳方案的设计

 

  需求分析阶段所形成的结果是软件总体设计的基础。我们要从可供选择的方案中选取合理的方案,对每一个方案给出模型图,列出系统组成的物理元素,并进行效益分析,制定实现方案的进度。然后从合理的方案中选择一个最佳的方案向用户推荐。对于需要使用数据库的那些应用系统还需要进行必要的数据库设计,如为分布式系统还要进行网络设计。此外,还要制定测试计划和确定测试要求。

 

  2.1.3 数据结构及数据库设计

 

  (1)数据结构的设计。根据需求分析阶段对系统数据的组成、操作约束和数据之间的关系的描述,确定数据结构特性。利用逐步细化的方法对数据结构进行深入的设计,但是不考虑具体的实现细节。在该阶段比较适宜使用抽象的数据类型。这些抽象的数据类型到详细设计阶段再用具体的数据结构描述其实现。如在总体设计阶段定义的数据结构概念模型,可在详细设计中用线性表和链表来实现。

 

  (2)数据库设计。数据库的设计指数据存储文件的设计,主要进行概念设计、逻辑设计、物理设计三方面设计。

 

软件设计的基本任务和原则


  2.2 详细设计的基本任务

 

  详细设计是总体设计的进一步的具体化,主要确定每个模块的具体执行过程,故也称为过程设计。其基本任务有:为每个模块进行详细的算法设计;为模块内的数据结构进行设计;对数据库进行物理设计,即确定数据库的物理结构;界面设计;编写文档;评审。对详细设计成果进行审查和复审。

 

  软件设计的最终目标就是要取得未来系统的最佳方案,不管在总体设计还是详细设计过程中为了保证设计阶段成果的正确性,每一阶段都必须经过设计质量的严格评审,以便及时发现和解决设计中存在的问题,防止把问题遗留到开发的后期,造成不必要的风险。

 

  3、软件设计的原则

 

  3.1 模块化与模块独立性

 

  模块化与模块的独立性是软件设计中非常重要的,也是非常关系密切的设计原则。模块是数据说明、可执行语句等程序对象的集合。模块可以被单独命名,而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。

 

  模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。例如,如果一个模块只具有单一的功能,并且与其他的模块没有太多的联系,则称此模块具有模块独立性。模块的独立程度可以由模块间的耦合和模块的内聚两个定性标准度量。一个模块内部各个元素之间的联系越紧密,它的内聚性就越高,对应地它与其他模块之间的耦合性就会减低,模块独立性就越强。相反,模块内聚性越低,模块间耦合性就越强,模块的独立性也就越弱。在软件设计中我们要追求高内聚低耦合的模块,尽量提高模块的独立性,这样可以降低问题的复杂度,对模块测试、维护就容易,错误传播的可能性就减小。

 

  3.2 抽象与细化

 

  抽象就是抽取出事物的本质特性而暂时忽略它们的细节。在进行模块化软件设计时,可以在不同的抽象层次进行设计。在抽象的最高层次使用问题环境的语言,以概括的方式叙述问题的解法;在较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现的术语结合起来叙述问题的解法;最后在最低的抽象层次用可直接实现的方式叙述问题的解法。

 

  细化实际上是一个详细描述的过程,是设计者在原始说明的基础上进行详细说明,随着不断的细化给出更多的细节。

 

  抽象与细化是紧密相关的。实际上,软件工程过程的每一步都是对软件解法的抽象层次的一次细化。在可行性研究阶段,软件作为系统的一个完整部件;在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的,它是最高程度的抽象;当由总体设计向详细设计过渡时,抽象的程度也就随之减少了,相当于在最高程度上进行了一次深入的细化;最后,当源程序写出来以后,也就达到了抽象的最低层,完成了最高程度的细化。

上一篇:“计算机组成原理”课程教学研究

下一篇:目标激励与角色榜样对软件工程项目实训教学的