软件设计的任务,就是把分析阶段产生的需求说明转换为用适当手段表示的软件设计文档。软件设计通常分两个阶段完成。
英国论文代写第一个阶段是概要设计,用来确定软件的结构,即软件的组成,以及各组成成分(子系统或模块)之间的相互关系。第二阶段是详细设计,其任务是确定模块内部的算法和数据结构,产生描述各模块程序过程的详细设计文挡。
在设计阶段,设计人员要完成两种文档:概要设计说明书和详细设计说明书。前者主要规定软件的结构,后者则着重描述程序的过程。
( 1)概要设计说明书包括·以图表形式表示的软件总体结构;·模块的外部设计,包括关于各模块功能、性能与接口的简要描述:
.数据结构设计,包括数据模式、访问方法和存储要求等。
(2)详细设计说明书包括·表示每一模块软件结构的图表,确定每一模块使用的数据结构;·对逐个模块的程序描述,包括算法和逻辑流程,输入/输出项、外部接口等;·为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试。
传统的程序设计方法是结构化程序设计:自顶向下,逐步求精;其程序结构是按功能划分若干个基本模块,这些模块形成一个树状结构,各模块之间的关系尽可能简单,在功能上相对独立,每一模块内部均是由顺序、选择和循环三种基本结构组成,其模块化实现的具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象、自顶向下、分而治之的手段,从而有效地将一个较复杂程序系统的设计任务分成许多易控制和处理的子任务,这些任务都是可独立编程的子程序模块。每一个子程序都有一个清晰的界面,使用起来非常方便。结构化程序设计方法虽然具有很多的优点,但它是一种面向数据/过程的设计方法,它把数据和过程分离为相互独立的实体,程序员在编码时必须时刻考虑所需处理的数据的格式。对于不同的数据格式,即使要做同样的处理或对相同的数据格式要做不同的处理,都需要编写不同的程序,因此结构化程序的可重用性不好。另一方面,当数据和过程相互独立时,总存在着用错误的数据调用正确的程序模块或用正确的数据调用了错误的程序模块的可能性。因此,要使数据与程序保持相容,已经成为程序员的一个沉重负担。上述这些问题,结构化程序设计方法本身是解决不了的,它需要借助面向对象程序设计方法给予解决。
面向对象程序设计既吸取了结构化程序设计的一切优点,又考虑了现实世界与面向对象解空间的映射关系,它所追求的目标是将现实世界的问题求解尽可能简单化。面向对象程序设计将数据及对数据的操作放在一起,作为一个相互依存、不可分割的整体来处理,它采用数据抽象和信息隐藏技术,将对象及对对象的操作抽象成一种新的数据类型一一类,并且考虑不同对象之间的联系和对象类的重用性。面向对象程序设计优于传统的结构化程序设计,其优越性表现在:它有希望解决软件工程的两个主要问题~一软件复杂性控制和软件生产率的提高,此外它还符合人类的思维习惯,能够自然地表现现实世界的实体和问题,它对软件开发过程具有重要意义。面向对象程序设计能支持的软件开发策略有:
①编写可重用代码;
②编写可维护的代码;
③共享代码;
④精化已有的代码。
有了高质量的可重用代码就能有效地降低软件的复杂度和提高开发效率。面向对象方法,尤其是它的继承性,是一种代码重用的有效途径。开发者在设计软件时可以利用一些已经被精心设计好并且经过测试的代码,这些可重用的代码被组织和存放在程序设计环境的类库中。由于类库中这些类的存在,使以后的程序设计过程变得简单,程序的复杂性不断降低,正确性不断加强,也越来越易于理解、修改和扩充。