Homework

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Homework相关的知识,希望对你有一定的参考价值。

问题一:

什么是RUP?

RUP(英文:Rational Unified Process,中文:统一软件开发过程或统一软件过程)

RUP是一个面向对象且基于网络的程序开发方法论。根据Rational(Rational Rose和统一建模语言的开发者)的说法,好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。

RUP和类似的产品--例如面向对象的软件过程(OOSP),以及OPEN Process都是理解性的软件工程工具--把开发中面向过程的方面(例如定义的阶段,技术和实践)和其他开发的组件(例如文档,模型,手册以及代码等等)整合在一个统一的框架内。

软件工程领域,与RUP齐名的软件方法还有:

净室软件工程、CMMI;

极限编程(extreme programming,简称 XP)和其他敏捷软件开发(agile methodology)方法学。

RUP最重要的它有三大特点:

  • 软件开发是一个迭代过程
  • 软件开发是由Use Case驱动的
  • 软件开发是以架构设计(Architectural Design)为中心的

RUP开发复用,减少工作人员的工作量,对需求进行有效化管理,可视化建模,贯穿真个开发周期的质量核查。

问题二:

什么是XP?

    XP就是极限编程(Extreme Programming,XP)是一门针对业务和软件开发的规则,它的作用在于将两者的力量集中在共同的、可以达到的目标上。它是以符合客户需要的软件为目标而产生的一种方法论,XP使开发者能够更有效的响应客户的需求变化,哪怕是在软件生命周期的后期。它强调,软件开发是人与人合作进行的过程,因此成功的软件开发过程应该充分利用人的优势,而弱化人的缺点,突出了人在软件开发过程中的作用。极端编程属于轻量级的方法,认为文档、架构不如直接编程来的直接。 

    极限编程的特点:

核心活动体现为:需求→测试→编码→设计过程中,因此对工作环境、需求分析、设计、编程、测试、发布等提出了新的思路和要求。

1、工作环境:XP要求每个参加项目开发的人都担任一个角色(项目经理、项目监督人等),并履行相应的权利和义务。所有的人都在一个开放式的开发环境中工作,最好是在同一个大房间中工作,随时讨论问题,强调每周40小时工作制,不加班。

2、需求分析:客户被纳入开发队伍。由于客户不具备计算机专业知识,无法用专业语言明确描述需求,所以开发人员和客户一起,用讲故事的方式把需求表达出来,这种故事被称为user story,即用user story表示需求。开发人员根据经验将许多user story 组合起来,或将其进行分解,最终记录在story card的小卡片上,这些user story将陆续被程序员在各个小的周期内,按照商业价值、开发风险的优先顺序逐个开发。

3、设计:XP强调简单设计(simple design),即用最简单的办法实现每个小需求。在XP中,没有那种传统开发模式中一次性的、针对所有需求的总体设计,这些设计只要能够满足系统客户在当前的需求就可以了,不需要考虑将来可能的变化,整个设计过程包括在整个螺旋式发展的项目中。

4、编程:成对编程(pair programming)是极限编程的一大特色,即两个人一起使用同一个屏幕,同一个键盘,共同完成一段程序的编码。成对编程的好处是,可以提高纪律性,更容易写出优质的代码,同时保证编程的流畅进行,更重要的是,能够使得整个团队更方便地分享编程经验,有利于新手的快速成长。

5、测试:在极限编程中,测试是非常重要的一个环节,它首先要求在开始写程序之前先写好测试,其目的是为了提高软件的可测试性。XP要求开发人员经常把开发好的模块整合到一起,每次整合后都要运行单元测试;做任何的代码复核和修改,都要运行单元测试;发现了漏洞,就要增加相应的测试。除了单元测试之外,还要进行整合测试、功能测试、负荷测试和系统测试等。所有这些测试是极限编程开发过程中最重要的文档之一,也是最终交付给用户的内容之一。

6、发布:XP要求按照开发计划,每经过一个开发周期,软件就发布一次,而不是像传统的开发方法那样,整个软件开发完成后才发布。在一个开发周期内,开发人员要求客户选择最有价值的user story作为未来一两个星期的开发内容,一个开发周期完成后,提交给客户的系统虽然不是最终的产品,但它已经实现了几个客户认为是最重要的story,开发人员将逐步在其基础上增加新的模块,而且在发布前软件都经过单元测试和集成测试,因此,虽然软件并不完备,但是,发布的软件客户还是可以真正使用的。

 

 极限编程的优点

  • 重视客户的参与;
  • 重视团队合作和沟通;
  • 制定计划前做出合理预测;
  • 让编程人员参与软件功能的管理;
  • 重视质量;
  • 简单设计;
  • 高频率的重新设计和重构;
  • 高频率及全面的测试;
  • 递增开发;
  • 连续的过程评估;
  • 对过去的工作持续不断的检查。

 极限编程的缺点

  • 以代码为中心,忽略了设计;
  • 缺乏设计文档,局限于小规模项目;
  • 对已完成工作的检查步骤缺乏清晰的结构;
  • 质量保证依赖于测试;
  • 缺乏质量规划;
  • 没有提供数据的收集和使用的指导;
  • 开发过程不详细;
  • 全新的管理手法带来的认同度问题;
  • 缺乏过渡时的必要支持。

问题三:

什么是敏捷过程?

敏捷是一种理念,采用基于人员、协作和共同价值观的组织模型。敏捷方法采用波浪式规划(rollingwave);迭代递增式交付;对变化做出快速而灵活的反应;在团队、干系人和客户之间进行开放式交流。许多敏捷策略都遵守这些原则,如Scrum、极限编程(XP)、精益(Lean)、看板(Kanban)和测试驱动型开发(TDD)。敏捷原则来源于软件和IT业,但敏捷方法正在多个行业得到快速发展与扩展,包括医疗卫生、市场营销和制造业。

敏捷原则与实践包括:

·通过既定迭代模式交付产品增量,尽早实现可测投资回报

·提高项目进度的可见性,以尽早确认、解决或监督问题

·客户持续介入整个产品研发周期

·为企业所有者提供支持,帮助其做出决策以实现目标

·适应不断变化的业务需求,对需求变化施加更多影响

·减少产品与流程浪费

以上是关于Homework的主要内容,如果未能解决你的问题,请参考以下文章