说到软件开发这个词,大家都知道是做技术开发的,具体是什么技术开发,做什么?似乎很少有人能说清楚,所以今天我们来看看软件开发在做什么。以下9点将帮助您理解软件开发的所有内容。
一、基本定义
软件开发是根据用户要求构建软件系统或系统软件部分的产品开发过程。软件开发是一个系统项目,包括需求获取、开发规划、需求分析和设计、编程实现、软件测试和版本控制。换句话说,软件开发是一系列最终构建软件产品的活动。
二、阶段划分
1、计划
总体定义要解决的问题,包括了解用户需求和现实环境,从技术、经济和社会因素三个方面研究和论证软件项目的可行性,撰写可行性研究报告,讨论解决问题的方案,估计可用资源(如计算机硬件、系统软件、人力等)的成本,并制定完成开发任务的实施计划。
2、分析
软件需求分析是对开发什么样的软件进行系统分析和假设的过程。它是一个用软件工程开发语言(形式功能规约,即需求规范说明书)来表达用户需求的过程。本阶段的基本任务是与用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规范说明书文档,最终得到用户的认可。需求分析的主要方法包括结构化分析、数据流程图和数据字典。本阶段的工作是根据需求说明书的要求设计和建立相应的软件系统系统结构,将整个系统分解成几个子系统或模块,定义子系统或模块之间的接口关系,对每个子系统进行具体的设计和定义,编写软件概要设计和详细的设计说明书、数据库或数据结构设计说明书、组装测试计划。在任何软件或系统开发的初始阶段,都必须完全掌握后续的功能和性能的描述。在此基础上,系统工程师应优先定义哪些功能和性能。
3、设计
软件设计可分为两个阶段:一般设计和详细设计。事实上,软件设计的主要任务是将软件分解成模块,然后进行模块设计。模块是指能够实现某一功能的数据、程序描述和可执行程序的程序单元。它可以是一个具有程序描述的函数、过程、子程序、独立程序和数据,也可以是一个可组合、可分解和可替换的功能单元。一般设计是结构设计,其主要目标是给出软件的模块结构,用软件结构图表示。详细设计的主要任务是设计模块的程序流程、算法和数据结构,次要任务是设计数据库,常用方法或结构化程序设计方法。
4、编码
软件编码是指将软件设计转换为计算机可接受的程序,即编写具有程序设计语言的源程序列表。充分了解软件开发语言、工具的特点和编程风格,有助于开发工具的选择,确保软件产品的开发质量。
5、测试
软件测试的目的是以较低的成本发现尽可能多的错误。实现这一目标的关键在于设计一套优秀的测试用例(测试数据、功能和预期输出结果构成测试用例)。如何设计一套优秀的测试用例的关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法和黑盒法。白盒法的测试对象是源程序。根据程序内部的逻辑结构,发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。白盒法用例设计的关键是用较少的用例覆盖尽可能多的内部程序逻辑结果。黑盒法是基于软件的功能或软件行为描述,发现软件的接口、功能和结构错误。接口错误包括内部/外部接口、资源管理、集成和系统错误。黑盒法用例设计的关键也是用例较少的输入接口。
6、维护
维护是指软件产品开发(分析、设计、编码和测试)并交付使用后的一些软件工程活动。即根据软件运行情况,适当修改软件,以满足新的要求,纠正运行中发现的错误。编制软件问题报告和软件修改报告。
三、典型的软件开发模型
软件开发模型是指软件开发全部过程、活动和任务的结构框架。它能清晰、直观地表达软件开发全过程,明确规定要完成的主要活动和任务,用来作为软件项目工作的基础。
1、边做边改模型(Build-and-FixModel)
在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员就重新修改代码,直到用户满意为止。
这种开发方式对编写几百行的小程序来说还不错,但对任何规模的开发来说都不能令人满意,主要问题在于:
⑴、缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;
⑵、忽略需求环节,给软件开发带来很大的风险;
⑶、没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。
2、瀑布模型(WaterfallModel)
1970年温斯顿·罗伊斯提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。
瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。
瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:
⑴、各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;
⑵、由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;
⑶、早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
3、快速原型模型(RapidPrototypeModel)
快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。
4、增量模型(IncrementalModel)
与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。
增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模型也存在以下缺陷:
⑴、由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。
⑵、在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。
5、螺旋模型(SpiralModel)
1988年,巴利·玻姆BarryBoehm正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:
⑴、螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。
⑵、如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。
⑶、软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。
6、演化模型(evolutionarymodel)
主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之,完成他们的工作,并提出精化系统、增强系统能力的需求。软件开发人员根据用户的反馈,实施开发的迭代过程。第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。在开发模式上采取分批循环开发的办法,每循环开发一部分的功能,它们成为这个产品的原型的新增功能。于是,设计就不断地演化出新的系统。实际上,这个模型可看作是重复执行的多个“瀑布模型”。
7、喷泉模型(fountainmodel,(面向对象的生存期模型,面向对象(ObjectOriented,OO)模型))
喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。
8、智能模型(四代技术(4GL))
智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的开发。
9、混合模型(hybridmodel)
过程开发模型又叫混合模型(hybridmodel),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。
以上9点便是超拼科技关于“软件开发到底是在做什么”的内容介绍,你get到了吗?
专注APP开发、小程序开发、商城开发、网站建设、物联网开发、软件开发服务。