码迷,mamicode.com
首页 > 其他好文 > 详细

软件工程第四次作业

时间:2015-05-18 00:54:44      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

问题:

1、敏捷开发是在什么样的背景下产生的?其主要特点有哪些?什么时候选择敏捷开发更恰当,为什么?

     (1)产生的背景:

           传统开发方法是基于客户能够在需求阶段就给出完整、准确的需求的假设,所以期望于在项目初期获得详细的需求,然后严格控制需求变更,最终完成符合需求的软件。
但我们发现实际上往往需求是“涌现”出来的,也就是说是随着开发的不断进展而不断发现出来的,而无法在项目初期就明确的定义它,也就是说传统开发方法的基本假设是错误的,这一新的假设导致了敏捷方法的一系列实践。另外,传统的软件开发方法认为需求是可以确定,所以采用的是基于工程的开发方法,也就是说期望通过事先的详细策划定义开发的整个过程,而敏捷认为需求是无法在早期完全确定的,所以采用的是基于经验的开发方法,也就是说事先不详细定义整个开发过程,而通过多次迭代来逼近最终目标

    (2)主要特点:

          在书中第六章敏捷流程的一开始有一个表,对比一般做法和敏捷做法有以下四个特点: 1.个体和交互胜过过程和工   2.可以工作的软件胜过面面俱到的文档;  3.客户合作胜过合同谈判;4.响应变化胜过遵循计划;

           在网上我看了一下一个人总结的特点,把这四点总结成两个,我觉得也很好,他总结的如下:

             (1)敏捷开发方法是“适应性”(Adaptive)而非“预设性” (Predictive)这里说的预设性,可以通过一般性工程项目的做法理解,比如土木工程,在这类工程实践中,有比较稳定的需求,同时建设项目的要求也相对固定,所以此类项目通常非常强调施工前的设计规划。只要图纸设计得合理并考虑充分,施工队伍可以完全遵照图纸顺利建造,并且可以很方便地把图纸划分为许多更小的部分交给不同的施工人员分别完成。

  然而,在软件开发的项目中,这些稳定的因素却很难寻求。软件的设计难处在于软件需求的不稳定,从而导致软件过程的不可预测。但是传统的控制项目模式都是试图对一个软件开发项目在很长的时间跨度内做出详细的计划,然后依计划进行开发。所以,这类方法在不可预测的环境下,很难适应变化,甚至是拒绝变化。

与之相反的敏捷方法则是欢迎变化,目的就是成为适应变化的过程,甚至能允许改变自身来适应变化。所以称之为适应性方法。

            2)敏捷开发方法是“面向人” (people oriented)而非“面向过程”(process oriented)。

          在传统的软件开发工作中,项目团队分配工作的重点是明确角色的定义,以个人的能力去适应角色,而角色的定义就是为了保证过程的实施,即个人以资源的方式被分配给角色,同时,资源是可以替代的,而角色不可以替代

然而,传统软件开发的这些方法在敏捷开发方式中被完全颠覆。敏捷开发试图使软件开发工作能够利用人的特点,充分发挥人的创造能力。

     敏捷开发的目的是建立起一个项目团队全员参与到软件开发中,包括设定软件开发流程的管理人员,只有这样软件开发流程才有可接受性。同时敏捷开发要求研发人员独立自主在技术上进行决策,因为他们是最了解什么技术是需要和不需要的。再者,敏捷开发特别重视项目团队中的信息交流,有调查显示:“项目失败的原因最终都可追溯到信息没有及时准确地传递到应该接受它的人。”

       所以结合书上的和他总结的,上面就是敏捷开发的特点了。

2、Code smell 是如何产生的?有哪些典型的 code smell?代码重构(Code refactoring)有哪些优点?有哪些代码重构的方法?

3、使用 Eclipse + Egit 环境,和你的结对编程小伙伴一起 “尝试多人协作项目开发” 练习,具体要求如下:

1)一名队友将自己设计的项目上传到 Github 上,另一名队友下载该项目到自己的本地机器;

2)对项目做一些修改后,进行 commit、push操作;

3)在本地创建自己项目的 branch,对其作某些修改后,合并到master,并push到远程;

小提示:模仿课堂上的案例操作,为了方便操作,需熟悉Eclipse下git视图的使用方法。

软件工程第四次作业

标签:

原文地址:http://www.cnblogs.com/sql0708/p/4510862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!