软件设计究竟是在做甚么

一、基本上表述

应用软件结构设计是依照使用者明确要求修建出应用软件控制系统或者控制系统中应用软件部分的两个产品合作开发的操作过程。应用软件结构设计是一项主要包括市场需求以获取、合作开发规划、市场需求预测和结构设计、程式设计实现、应用软件开发、管理工具的控制研究课题。换言之,应用软件结构设计是一系列最后构筑出应用软件系统的活动。

二、期划分

1、方案

对首先需要化解的难题展开总体表述,主要包括了解使用者的明确要求及现实环境,从技术、经济和社会因素等3个方面研究并深入研究本应用软件项目的可行性研究,撰写初步设计报告,深入探讨化解难题的方案,并对讷伊县的资源(如计算机软件、控制系统应用软件、物力等)成本,可取得的经济效益和合作工程进度做出估计,制定顺利完成合作开发各项任务的实施方案。

2、预测

应用软件市场需求预测是对合作开发怎样的应用软件的两个控制系统的预测与构想。它是两个对使用者的市场需求展开丫蕊、正本清源、正确认识,然后把它用应用计算机科学合作开发语言(形式机能法律条文,即市场需求技术标准附件)唱出来的操作过程。本期的基本上各项任务是和使用者一起确定要化解的难题,建立应用软件的方法论数学模型,撰写市场需求技术标准附件文件格式并最后得到使用者的普遍认可。市场需求预测的主要方式有CYK方式、统计数据时序和统计数据词典等方式。本期的工作是依照市场需求附件的明确要求,结构设计自行制定的应用软件控制系统的统计资料库系统,并将整个控制系统还原成二个组件或组件,表述组件或组件间的USB关系,对各组件展开具体结构设计表述,撰写应用软件概述结构设计和详细结构设计附件,统计资料库或计算机程序结构设计附件,装配ESA。在任何应用软件或控制系统合作开发的如上所述期必须先完全掌握使用者市场需求,以求能将紧随其后的控制系统合作开发操作过程中怎样机能应该全面落实、采取哪种技术标准以及预设怎样管制优先选择加以定位。控制研究课题师最后将依此顺利完成结构设计图,在此基础上对随后的程序合作开发、控制系统机能和性能的描述及管制做出表述。

3、结构设计

应用软件结构设计可以分为概述结构设计和详细结构设计两个期。实际上应用软件结构设计的主要各项任务是将应用软件还原成组件,然后展开组件结构设计。组件是指能实现某个机能的统计数据和程序说明、可执行程序的程序单元。可以是两个函数、操作过程、子程序、一段带有程序说明的独立的程序和统计数据,也可以是可组合、可分解和可更换的机能单元。概述结构设计是结构结构设计,其主要目标是给出应用软件的组件结构,用应用软件结构图表示。详细结构设计的首要各项任务是结构设计组件的程序流程、算法和计算机程序,次要各项任务是结构设计统计资料库,常用方式还是结构化程序结构设计方式。

4、编码

应用软件编码是指把应用软件结构设计转换成计算机可以接受的程序,即写成以某一程序结构设计语言表示的源程序清单。充分了解应用软件结构设计语言、工具的特性和程式设计风格,有助于合作开发工具的选择以及保证应用软件系统的合作开发质量。

5、测试

应用软件开发的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于结构设计一套出色的测试用例(测试统计数据与机能和预期的输出结果组成了测试用例)。如何才能结构设计出一套出色的测试用例,关键在于理解测试方式。不同的测试方式有不同的测试用例结构设计方式。两种常用的测试方式分别是白盒法和黑盒法,白盒法测试对象是源程序,依据的是程序内部的方法论结构来发现应用软件的程式设计错误、结构错误和统计数据错误。结构错误主要包括方法论、统计数据流、如上所述化等错误。白盒法用例结构设计的关键是以较少的用例覆盖尽可能多的内部程序方法论结果。黑盒法依据的是应用软件的机能或应用软件行为描述,发现应用软件的USB、机能和结构错误。其中USB错误主要包括内部/外部USB、资源管理、集成化以及控制系统错误。黑盒法用例结构设计的关键同样也是以较少的用例覆盖组件输出和输入USB。

6、维护

维护是指在已顺利完成对应用软件的研制(预测、结构设计、编码和测试)工作并交付使用以后,对应用软件系统所展开的一些应用计算机科学的活动。即依照应用软件运行的情况,对应用软件展开适当修改,以适应新的明确要求,以及纠正运行中发现的错误。撰写应用软件难题报告、应用软件修改报告。

三、典型的应用软件结构设计数学模型

应用软件结构设计数学模型是指应用软件结构设计全部操作过程、活动和各项任务的结构框架。它能清晰、直观地表达应用软件结构设计全操作过程,明确规定要顺利完成的主要活动和各项任务,用来作为应用软件项目工作的基础。

1、边做边改数学模型(Build-and-Fix Model)

在这个数学模型中,合作开发人员拿到项目立即依照市场需求撰写程序,调试通过后生成应用软件的第两个版本。在提供给使用者使用后,如果程序出现错误,或者使用者提出新的明确要求,合作开发人员就重新修改代码,直到使用者满意为止。

这种合作开发方式对撰写几百行的小程序来说还不错,但对任何规模的合作开发来说都不能令人满意,主要难题在于:

⑴、缺少规划和结构设计环节,应用软件的结构随着不断的修改越来越糟,导致无法继续修改;

⑵、忽略市场需求环节,给应用软件结构设计带来很大的风险;

⑶、没有考虑测试和程序的可维护性,也没有任何文件格式,应用软件的维护十分困难。

2、瀑布数学模型(Waterfall Model)

1970年温斯顿·罗伊斯提出了著名的瀑布数学模型,直到80年代早期,它一直是唯一被广泛采用的应用软件结构设计数学模型。

瀑布数学模型将应用软件生命周期划分为制定方案、市场需求预测、应用软件结构设计、程序撰写、应用软件开发和运行维护等六个基本上活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

在瀑布数学模型中,应用软件结构设计的各项活动严格按照线性方式展开,当前活动接受上一项活动的工作结果,实施顺利完成所需的工作内容。当前活动的工作结果需要展开验证,如果验证通过,则该结果作为下一项活动的输入,继续展开下一项活动,否则返回修改。

瀑布数学模型强调文件格式的作用,并明确要求每个期都要仔细验证。但是,这种数学模型的线性操作过程太理想化,已不再适合现代的应用软件结构设计模式,几乎被业界抛弃,其主要难题在于:

⑴、各个期的划分完全固定,期之间产生大量的文件格式,极大地增加了工作量;

⑵、由于合作开发数学模型是线性的,使用者只有等到整个操作过程的末期才能见到合作开发成果,从而增加了合作开发的风险;

⑶、早期的错误可能要等到合作开发后期的测试期才能发现,进而带来严重的后果。

3、快速原型数学模型(Rapid Prototype Model)

快速原型数学模型的第一步是修建两个快速原型,实现客户或未来的使用者与控制系统的交互,使用者或客户对原型展开评价,进一步细化待合作开发应用软件的市场需求。通过逐步调整原型使其满足客户的明确要求,合作开发人员可以确定客户的真正市场需求是什么;第二步则在第一步的基础上合作开发客户满意的应用软件系统。 显然,快速原型方式可以克服瀑布数学模型的缺点,减少由于应用软件市场需求不明确带来的合作开发风险,具有显著的效果。 快速原型的关键在于尽可能快速地修建出应用软件原型,一旦确定了客户的真正市场需求,所修建的原型将被丢弃。因此,原型控制系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的市场需求。

4、增量数学模型(Incremental Model)

与修建大厦相同,应用软件也是一步一步修建起来的。在增量数学模型中,应用软件被作为一系列的增量构件来结构设计、实现、集成和测试,每两个构件是由多种相互作用的组件所形成的提供特定机能的代码片段构成。

增量数学模型在各个期并不交付两个可运行的完整产品,而是交付满足客户市场需求的两个子集的可运行产品。整个产品被还原成二个构件,合作开发人员逐个构件地交付产品,这样做的好处是应用软件结构设计可以较好地适应变化,客户可以不断地看到所合作开发的应用软件,从而降低合作开发风险。但是,增量数学模型也存在以下缺陷:

⑴、由于各个构件是逐渐并入已有的应用软件统计资料库系统中的,所以加入构件必须不破坏已构造好的控制系统部分,这需要应用软件具备开放式的统计资料库系统。

⑵、在合作开发操作过程中,市场需求的变化是不可避免的。增量数学模型的灵活性可以使其适应这种变化的能力大大优于瀑布数学模型和快速原型数学模型,但也很容易退化为边做边改数学模型,从而使应用软件操作过程的控制失去整体性。

5、螺旋数学模型(Spiral Model)

1988年,巴利·玻姆Barry Boehm正式发表了应用软件控制系统合作开发的螺旋数学模型,它将瀑布数学模型和快速原型数学模型结合起来,强调了其他数学模型所忽视的风险预测,特别适合于大型复杂的控制系统。

螺旋数学模型由风险驱动,强调可选方案和约束条件从而支持应用软件的重用,有助于将应用软件质量作为特殊目标融入产品合作开发之中。但是,螺旋数学模型也有一定的管制条件,具体如下:

⑴、螺旋数学模型强调风险预测,但明确要求许多客户接受和相信这种预测,并做出相关反应是不容易的,因此,这种数学模型往往适应于内部的大规模应用软件结构设计。

⑵、如果执行风险预测将大大影响项目的利润,那么展开风险预测毫无意义,因此,螺旋数学模型只适合于大规模应用软件项目。

⑶、应用软件结构设计人员应该擅长寻找可能的风险,准确地预测风险,否则将会带来更大的风险。

6、演化数学模型(evolutionary model)

主要针对事先不能完整表述市场需求的应用软件结构设计。使用者可以给出待合作开发控制系统的核心市场需求,并且当看到核心市场需求实现后,能够有效地提出反馈,以支持控制系统的最后结构设计和实现。应用软件结构设计人员依照使用者的市场需求,首先合作开发核心控制系统。当该核心控制系统投入运行后,使用者试用之,顺利完成他们的工作,并提出精化控制系统、增强控制系统能力的市场需求。应用软件结构设计人员依照使用者的反馈,实施合作开发的迭代操作过程。第一迭代操作过程均由市场需求、结构设计、编码、测试、集成等期组成,为整个控制系统增加两个可表述的、可管理的子集。 在合作开发模式上采取分批循环合作开发的办法,每循环合作开发一部分的机能,它们成为这个产品的原型的新增机能。于是,结构设计就不断地演化出新的控制系统。 实际上,这个数学模型可看作是重复执行的多个瀑布数学模型。

7、喷泉数学模型(fountain model, (面向对象的生存期数学模型, 面向对象(Object Oriented,OO)数学模型))

喷泉数学模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个期可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

8、智能数学模型(四代技术(4GL))

智能数学模型拥有一组工具(如统计数据查询、报表生成、统计数据处理、屏幕表述、代码生成、高层图形机能及电子表格等),每个工具都能使合作开发人员在高层次上表述应用软件的某些特性,并把合作开发人员表述的这些应用软件自动地生成为源代码。这种方式需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是使用者界面极端友好,即使没有受过训练的非专业程序员,也能用它撰写程序;它是一种声明式、交互式和非操作过程性程式设计语言。4GL还具有高效的程序代码、智能缺省假设、完备的统计资料库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息控制系统的中、小型应用程序的合作开发。

9、混合数学模型(hybrid model)

操作过程合作开发数学模型又叫混合数学模型(hybrid model),或元数学模型(meta-model),把几种不同数学模型组合成一种混合数学模型,它允许两个项目能沿着最有效的路径发展,这是操作过程合作开发数学模型(或混合数学模型)。实际上,一些应用软件结构设计单位都是使用几种不同的合作开发方式组成他们自己的混合数学模型。