软件工程-第1章第2节_第1页
软件工程-第1章第2节_第2页
软件工程-第1章第2节_第3页
软件工程-第1章第2节_第4页
软件工程-第1章第2节_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.2软件工程的过程和软件生存周期1.2.1软件工程的过程

软件工程的过程规定了获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务。其目的是为各种人员提供一个公共的框架,以便用相同的语言进行交流。

这个框架由几个重要过程组成,这些主要过程含有用来获取、供应、开发、操作和维护软件所用的基本的、一致的要求。该框架还用来控制和管理软件的过程。各种组织和开发机构可以根据具体情况进行选择和剪裁,可在一个机构的内部或外部实施。1.2.1软件工程的过程

软件工程的过程没有规定一个特定的生存周期模型或软件开发方法,各软件开发机构可为其开发项目选择一种生存周期模型,并将软件工程的过程所含的过程、活动和任务映射到该模型中,也可以选择和使用软件开发方法来执行适合于其软件项目的活动和任务。

软件工程过程包含以下七个过程.1.2.1软件工程的过程获取过程。获取过程是需方按合同获取一个系统、软件产品或服务的活动。(2)供应过程。供应过程是供方向需方提供合同中的系统、软件产品或服务所需的活动。(3)开发过程。开发过程是开发者和机构为了定义和开发软件或服务所需的活动。此过程包括需求分析、设计、编码、集成、测试、软件安装和验收等活动。(4)操作过程。操作过程是操作者和机构为了在规定的运行环境中为其用户运行一个计算机系统所需要的活动。(5)维护过程。维护过程是维护者和机构为了管理软件的修改,使它处于良好运行状态所需要的活动。(6)管理过程。管理过程是软件工程过程中的各项管理活动,包括项目开始和范围定义,项目管理计划、实施和控制、评审和评价、项目完成。(7)支持过程。支持过程对项目的生存周期过程给予支持。它有助于项目的成功并能提高项目的质量。

软件生存周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。把整个生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理。

软件生存周期的各阶段有不同的划分。软件规模、种类、开发方式、开发环境以及开发使用的方法都影响软件生存周期的划分。在划分软件生存周期的阶段时,应遵循的基本原则是各阶段的任务应尽可能相对独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系,有利于软件项目开发的组织管理。1.2.1软件工程的过程1.2.2软件生存周期1.可行性分析和项目开发计划

可行性分析和项目开发计划阶段必须要回答的问题是“要解决的问题是什么”(what)。该问题有行得通的解决办法吗?若有解决问题的办法,则需要多少费用?需要多少资源?需要多少时间?要回答这些问题,就要进行问题定义、可行性分析,制定项目开发计划。

用户提出一个软件的开发要求后,系统分析员首先要解决该软件项目的性质是什么,是数据处理问题还是实时控制问题,是科学计算问题还是人工智能问题等。还要明确该项目的目标是什么,该项目的规模如何等。1.2.2软件生存周期

通过系统分析员对用户和使用部门负责人的访问和调查、开会讨论,就可解决这些问题。

在清楚了问题的性质、目标、规模后,还要确定该问题有没有行得通的解决办法。系统分析员要进行压缩和简化的需求分析和设计,也就是在高层次上进行分析和设计,探索这个问题是否值得去解决,是否有可行的解决办法。最后要提交可行性研究报告。

经过可行性分析后,确定该问题值得去解决,然后制定项目开发计划。根据开发项目的目标、功能、性能及规模,估计项目需要的资源,即需要的计算机硬件资源,需要的软件开发工具和应用软件包,需要的开发人员数目及层次。还要对软件开发费用做出估算,对开发进度做出估计,制定完成开发任务的实施计划。最后,将项目开发计划和可行性分析报告一起提交管理部门审查。

2.需求分析

需求分析阶段的任务不是具体地解决问题,而是准确地确定“软件系统必须做什么?”(what)确定软件系统必须具备哪些功能。

用户了解他们所面对的问题,知道必须做什么,但是通常不能完整、准确地表达出来,也不知道怎样用计算机解决他们的问题。而软件开发人员虽然知道怎样用软件完成人们提出的各种功能要求,但是,对用户的具体业务和需求不完全清楚,这是需求分析阶段的困难所在。

系统分析员要和用户密切配合,充分交流各自的想法,理解用户的业务流程,完整、全面地收集、分析用户业务中的信息和处理,从中分析出用户要求的功能和性能,然后完整、准确地将它们表达出来。这一阶段要给出软件需求说明书。1.2.2软件生存周期1.2.2软件生存周期3.概要设计

概要设计属于模块级设计,主要回答“软件系统如何做”(what)的问题。

在概要设计阶段,开发人员要把确定的各项功能需求转换成相应的体系结构,在该体系结构中,每个成分都是意义明确的模块,即每个模块都和某些功能需求相对应。因此,概要设计就是设计软件的结构,该结构由哪些模块组成,这些模块的层次结构是怎样的,这些模块的调用关系是怎样的,每个模块的功能是什么。同时还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。1.2.2软件生存周期4.详细设计

详细设计属于模块的内部结构级设计。

详细设计阶段就是为每个模块完整的功能进行具体描述,把功能描述转变为精确的、结构化的过程描述。即该模块的控制结构是怎样的,先做什么,后做什么,有什么样的条件判定,有些什么重复处理等,并用相应的表示工具把这些控制结构表示出来。5.编码

编码阶段就是把每个模块的控制结构转换成计算机可接受的程序代码,即写成以某特定程序设计语言表示的“源程序清单”。当然,写出的程序应结构好,清晰易读,并且与设计相一致。1.2.2软件生存周期6.测试

测试是保证软件质量的重要手段,其主要方式是在设计测试用例的基础上检验软件的各个组成部分。测试分为模块测试、组装测试、确认测试。模块测试是查找各模块在功能和结构上存在的问题。组装测试是将各模块按一定顺序组装起来进行的测试,主要是查找各模块之间接口上存在的问题。确认测试是按软件需求说明书上的功能逐项进行的,发现不满足用户需求的问题,决定开发的软件是否合格、能否交付用户使用等。1.2.2软件生存周期7.维护

软件维护是软件生存周期中时间最长的阶段。已交付的软件投入正式使用后,便进入软件维护阶段,它可以持续几年甚至几十年。软件运行过程中可能由于各方面的原因,需要对它进行修改。其原因可能是运行中发现了软件隐含的错误而需要修改;也可能是为了适应变化了的软件工作环境而需要做适当变更;也可能是因为用户业务发生变化而需要扩充和增强软件的功能等。1.2.3软件工程模型

模型是为了理解事物而对事物做出的一种抽象,它忽略了不必要的细节,是事物的一种抽象形式、一个规划、一个程式。

软件工程模型是描述软件开发过程中各种活动任务的结构框架,也叫软件开发模型。

一个强有力的软件工程模型对软件开发提供了强有力的支持,为软件开发过程中所有活动提供了统一的政策保证,为参与软件开发的所有成员提供帮助和指导。它揭示了如何演绎软件过程的思想,是软件工程模型化技术的基础,也是建立软件开发环境的核心。1.2.3软件工程模型

软件工程模型确立了软件开发和演绎中各阶段的次序限制以及各阶段活动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调以及各种人员的有效沟通,有利于活动重用和活动管理。

软件生存周期模型能表示各种活动的实际工作方式,各种活动间的同步和制约关系,以及活动的动态特性。生存周期模型应该被软件开发过程中的各类人员所理解,它应该适应不同的软件项目,具有较强的灵活性,以及支持软件开发环境的建立。

目前有若干种软件生存周期模型,如瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型、基于知识的模型和统一过程模型等。1.2.3软件工程模型

瀑布模型是将软件生存周期各活动规定为依线性顺序连接的若干阶段的模型。它包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护,它确定了由前至后、相互衔接的固定次序,如同瀑布流水,逐级下落。瀑布模型为软件开发提供了一种有效的管理模型。

根据这一模式制定开发计划,进行成本预算,组织开发力量,以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,因此,它是以文档作为驱动,适合于需求很明确的软件项目开发的模型。1.2.3软件工程模型

快速模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品所能完成的功能的一个子集。和瀑布模型一样,软件产品的开发基本上是线性顺序进行的。和瀑布模型不同的是,快速原型模型是不带反馈环的。快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。

增量模型同瀑布模型或快速原型模型相反,它分批地逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发人员一个构件接一个构件地向用户提交产品。在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。1.2.3软件工程模型1988年,BarryBoehm正式发表了软件系统开发的“螺旋模型”,螺旋模型将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。螺旋模型将软件的开发过程分为多个阶段,每个阶段首先要确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成上述工作。

如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。1.2.3软件工程模型

喷泉模型认为软件开发过程自下而上的周期的各阶段是相互迭代和无间隙的。软件的某个部分常常需要重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间无明显的边界,如分析和设计活动之间没有明显的界限,由于对象概念的引入,表达、分析、设计、实现等活动只使用对象类和关系,从而可以较为容易地实现活动的迭代和无间隙,使其开发自然地包括复用。1.2.3软件工程模型

变换模型是一种形式化开发方法。形式化方法的本质是基于数学的方法来描述目标软件系统属性的一种技术。不同的形式化方法的数学基础是不同的,有的以集合论和一阶谓词演算为基础,有的则以时态逻辑为基础。形式化方法需要形式化规约说明语言的支持。形式化方法模型的主要活动是生成计算机软件形式化的数学规格说明。1.2.3软件工程模型

基于知识的模型也叫智能模型,它与专家系统结合在一起。该模型应用在基于规则的系统,采用归纳和推理机制,帮助软件人员完成开发工作,并使维护在系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论