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