关于软件开发模型的若干问题的分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于软件开发模型的若干问题的分析

幸林泉

【摘要】经过一个学期的软件工程导论课的学习,我对软件工程这个专业有了更深的认识,这门课让我知道了什么是软件工程专业,这个专业学什么,这个专业以后用来干什么,以及软件工程的现在和未来。本篇课程报告是我在学完这门课以后对这门学科的认识以及对一些软件开发模型的探讨并提出了我心中相应的解决措施。

【关键词】软件工程概述;软件开发模型;导论课心得

20世纪中期,软件产业从零开始起步,在短短50年内迅速发展成为推动人类社会发展的龙头产业。随着信息产业的发展,软件对人类社会越来越重要,但是开发技术却迟迟得不到突破,软件开发的方法基本上仍然沿用早期的个体化软件开发方式,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊的高,一些复杂、大型的软件开发项目被提了出来,但很多最后都得到了一个悲惨的结局。在开发过程中遇到的问题找不到解决的方式,使问题积累起来,形成了尖锐的矛盾,失败的软件开发项目屡见不鲜,最终导致了“软件危机”【1】由于软件危机的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法。从此软件生产进入软件工程(SoftwareEnginering)时代。

1:软件工程概述

1.1:什么是软件工程?

软件工程一直以来都没有一个统一的定义,很多人给出了自己的定义。一种比较认可的定义是:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。【2】另一种比较认可的定义是:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科【3】。

但软件工程定义在我心中没有那么“复杂”,老师在课堂上经常说:“一个好的软件能很好的满足人们的需求。”软件的设计与开发就是为了方便人们的日常生活,它是服务于社会人群的,而软件工程就是我们去改善软件的设计开发的一个重要手段,它是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

1.2:软件工程的地位如何?

随着软件应用日益广泛、软件规模日益扩大,人们开发、使用、维护软件不得不采用工程的方法,以求经济有效地解决软件问题。借助于计算机科学技术、数学、管理科学与工程诸多学科,今天的软件工程己由最初的一个学科方向发展成为以计算机科学技术为基础的一个新兴交叉学科【4】。所以我们可以得知:软件在当今的信息社会中占有重要的地位,实际上,软件产业是信息社会的支柱产业之一。

1.3:软件工程专业人才应具有怎样的技能知识?

软件工程专业面向社会经济发展和国防现代化建设的需求,培养具有基础宽厚,知识、能力、素质协调发展,系统地掌握计算机软件领域的基本理论、

知识和技能,具有较强的国际交流能力,德才兼备、身心健康、求真务实、敢于创新、勇于实践,能在科研院所、教育、企事业和行政管理等单位从事计算机软件开发、科研、教学和应用的高素质研究应用型专门人才【5】

在我看来,除了以上必须技能知识,本专业人才应该还具有如下素质:

●掌握计算机系统的设计、研究、开发及综合应用的知识和技能。

●具备系统软件和应用软件的分析、设计、测试和维护能力。

●具有较好的国际视野,能够适应快速发展的新技术。

●良好的团队合作意识,良好的人际交往能力。

2:软件开发模型

软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。对于不同的软件系统,可以采用不同的开发方法、使用不同的程序设计语言以及各种不同技能的人员参与工作、运用不同的管理方法和手段等,以及允许采用不同的软件工具和不同的软件工程环境。【6】典型的软件开发模型有1. 边做边改模型(Build-and-Fix Model);2. 瀑布模型(Waterfall Model);3. 快速原型模型(Rapid Prototype Model);4. 增量模型(Incremental Model);5.螺旋模型(Spiral Model);

6.演化模型(evolution model);

7.喷泉模型(fountain model);

8.智能模型(四代技术(4GL));

9.混合模型(hybrid model);10.RAD模型。下面我将用我所了解的知识简要分析其中几个模型的优点和其存在的问题,并提出我的解决措施。

2.1:瀑布模型(Waterfall Model)

(1)由来:软件工程早期的方法强调以一个严格的顺序,按照需求分析、设计、实现和测试分阶段进行,因为在大型软件的开发过程中,允许做出随意变更会冒太大的风险。于是软件工程师坚持在设计之前必须先完成整个系统的需求分析;同样,设计完成后再开始实现。结果产生了现在称为的瀑布模型,瀑布模型是最早出现的软件开发模型,它于1970年由温斯顿·罗伊斯(Winston Royce)提出的。它可以由图一体现出来

图一

(2)核心思想与特点:瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件分析、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。【7】它是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。

(3)对于瀑布模型优点的分析:课堂上老师也和我们一起重点探讨了瀑布模型的优劣。综合老师的教学,我认为它有以下几个优点:

●整个项目严格按照顺序来,提供了各个阶段的检查点。

●做完本项目以后,只需关心下一步而不用考虑前面的过程。

●在实际的时候,工作人员可以按流程分工明确,不会混乱。

(4)对于瀑布模型存在问题的分析:瀑布模型存在的问题也不少,综合课上和同学老师们的讨论,我的总结如下:

●由于开发必须一步一步按流程来,导致开发时间过长。

●用户只有在最后才能看到效果,这增大了软件的开发风险。

●最大的问题是太过死板,无法适应用户需求的变化。

(5)解决措施:在我看来,瀑布模型最大的缺点就是无法适应用户需求变化,我认为整个开发过程中如果能够加强一下下一步到上一步的反馈,以及每一步完成后向用户的反馈,这样一方面,有下到上反馈可以确保每一步的正确性,发现错误后及时修改,避免了最后时刻暴露错误而造成的重大损失。另一方面,在向用户反馈时,用户可以随时提出自己的需求,从而在开发时能够及时调整,从而降低软件开发风险同时又适应了用户的需求。

2.2:增量模型(Incremental Model)

(1)由来:近年来,由于瀑布模型规定的高度结构环境与“自由发挥”的“摸石头过河”的开发过程之间的矛盾带来了软件工程技术的变化,而后者通常对创造性的问题求解至关重要。软件开发过程中就诞生了增量模型【8】增量模型是由瀑布模型演化而来的。它引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。增量模型可以用图二体现出来

图二

相关文档
最新文档