`
fangang
  • 浏览: 875602 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
311c4c32-b171-3767-b974-d26acf661fb2
谈谈用例模型的那些事儿
浏览量:38566
767c50c5-189c-3525-a93f-5884d146ee78
一次迭代式开发的研究
浏览量:68732
03a3e133-6080-3bc8-a960-9d915ed9eabc
我们应当怎样做需求分析
浏览量:409611
753f3c56-c831-3add-ba41-b3b70d6d913f
重构,是这样干的
浏览量:91042
社区版块
存档分类
最新评论

一次迭代式开发的研究:软件开发的风险

阅读更多
我们的软件开发存在着巨大的风险,当我们经历了数月的辛苦工作后才发现,我们的软件并不是客户满意的软件。这时候往往出现几种情况:

1.客户开始频繁挑刺,大量的需求变更在很短的时间发生,加班再所难免,团队士气降到最低点;

2.甲乙双方开始相互推诿,谁是谁的责任,争吵不可避免,甚至最终谈判破裂,项目失败,双方不欢而散。

这些都是我们不愿看到的,却不得不面对。到底问题出在哪里呢?就在我们的开发过程中。以往的开发过程被称为瀑布式开发,它要求我们在正式的软件开发之前,在需求分析阶段,就要把客户的所有需求都分析清楚,确定下来。而在正式的软件开发的数月间,我们不再与客户交流,而是按照需求规格说明书自己埋头开发,直到最终交付客户。这样的方式,最终交付客户的风险可想而知。这种开发方式的弊端主要有这几个方面:

1.客户描述不清自己的需求。客户不是专业人士,因此在起初他们描述不清自己的需求,只有一些简单的想法。一句经典的话是这样说的:“When I saw it, I have changed.”只有当他们看见我们制作的一个个demo版界面原型时,甚至操作着原型的模拟操作流程时,他们才开始整理,并使自己的需求逐渐清晰起来。这需要一个过程。

2.我们理解客户的业务领域也需要一个过程。我们是技术专家,我们掌握着丰富的软件知识,但我们不是领域专家,我们不了解客户的业务领域,因而这不能让我们的软件获得成功。我们只有深入理解客户的业务领域之后,才能深刻理解客户的业务需求,才能使我们的软件成功。这需要一个逐渐深入的过程,因此不可能在软件开发的初期那短短的需求分析阶段完成。

一切的一切说明了一点:我们必须改变我们的开发方式。我们需要一个持续的需求分析过程,这个过程应当与我们的设计、开发、测试过程同步;我们需要不断地向客户展示我们的软件成果,听取客户的意见,使我们开发的软件不会偏离正确的轨道。而这就是迭代式开发,另一种软件开发模式。

一次迭代式开发的研究:软件开发的风险
一次迭代式开发的研究:什么是迭代式开发
一次迭代式开发的研究:怎样进行迭代式开发
一次迭代式开发的研究:迭代开发从这里开始
一次迭代式开发的研究:准确的工作量评估
一次迭代式开发的研究:功能的优先级评估
一次迭代式开发的研究:一个迭代式项目计划
一次迭代式开发的研究:开始真正的工作
一次迭代式开发的研究:从容应对需求变更
一次迭代式开发的研究:需求变更的关键步骤
一次迭代式开发的研究:Where you are
(续)
分享到:
评论
1 楼 EnterLee 2012-11-09  
博主 可以叫你一声老师吗? 我看了几乎所有的博文 写的很好 你可以出书了  整理整理
你的见解很独到 再次感谢 受益匪浅

相关推荐

    软件需求分析课件:Chap 3-Inception.ppt

    适应UP的关键在于保持其基本原则,如迭代式和进化式开发、风险管理、以客户为中心以及持续的质量验证,同时根据项目的具体情况进行实践和文档的选择。例如,在Inception阶段,可能会编写发展案例文档,详细说明项目...

    软件工程需求开发方法综述

    迭代式开发允许团队分阶段完成项目,每个阶段都会产生可用的产品版本,并根据用户的反馈进行调整。这种方法有助于保持项目的灵活性,同时确保开发工作始终围绕用户的真实需求展开。 ### 总结 软件需求开发是确保...

    关键演讲:敏捷的本质 The Essence of Agile (Henrik Kniberg)

    - **RUP(统一过程)**:一种迭代式的、基于组件的软件开发过程模型。 - **结对编程**:两名程序员共用一台电脑进行编程的一种实践。 - **重构**:在不改变外部行为的前提下,改进代码结构的过程。 2. **传统...

    广工 软件工程 考试范围

    - 特点:迭代式开发,包括四个象限:确定目标、识别风险、评估选项、实施工程。 - 应用场景:适合大型复杂系统或高风险项目。 #### 三、软件工程概念及其作用 - **定义**: 软件工程是一门研究如何高效地开发、...

    第1章软件工程学概述.pptx

    2. 坚持增量式开发:通过逐步构建软件,每次增加一部分功能,降低一次性开发的复杂性。 3. 强调需求获取和确认:确保充分理解用户需求,避免在开发后期才发现需求不符。 4. 使用形式化方法:借助数学工具验证软件...

    广东海洋大学软件工程试题.docx

    - **螺旋模型**:软件开发模型,强调风险评估和迭代开发。 - **软件需求阐明书**:详述软件需求的文档,是软件开发的基础。 - **基本途径测试,覆盖**:确保程序的主要执行路径被测试。 - **构件**:可重用的...

    软件工程复习笔记思维导图

    - 其他分类:通用软件/定制软件、一次性/频繁使用、高可靠性/一般可靠性。 - **软件危机**: - 在软件开发和维护过程中遇到的一系列问题。 - 表现包括计划不准确、用户满意度低、质量不可靠、系统难以维护、文档...

    UML和模式应用(架构师必备).part01.rar

    第40章 迭代式开发和敏捷项目管理的进一步讨论 40.1 如何计划一次迭代 40.2 适应性计划与预测性计划 40.3 阶段计划和迭代计划 40.4 如何使用用例和场景来计划迭代 40.5 早期预算的有效性(无效性) 40.6 将...

    软件工程习题200题

    - **软件工程**则涉及软件开发的全过程,包括但不限于软件结构的设计。 #### 十八、模块化及其特征 - **模块化**意味着将软件划分为独立的功能单元。 - **特征**: - 深度:表示层次结构的层数。 - 宽度:表示某...

    UML和模式应用(架构师必备).part07.rar

    第40章 迭代式开发和敏捷项目管理的进一步讨论 40.1 如何计划一次迭代 40.2 适应性计划与预测性计划 40.3 阶段计划和迭代计划 40.4 如何使用用例和场景来计划迭代 40.5 早期预算的有效性(无效性) 40.6 将...

    UML和模式应用(架构师必备).part02.rar

    第40章 迭代式开发和敏捷项目管理的进一步讨论 40.1 如何计划一次迭代 40.2 适应性计划与预测性计划 40.3 阶段计划和迭代计划 40.4 如何使用用例和场景来计划迭代 40.5 早期预算的有效性(无效性) 40.6 将...

Global site tag (gtag.js) - Google Analytics