软件工程:读《构建之法》提问

这个作业属于哪个课程 软件工程
这个作业要求在哪里 作业链接
这个作业的目标 通读《构建之法》,提出问题,解决问题
学号 20188437

1.第6章敏捷流程中提到很多次Scrum,Scrum是否等同于敏捷开发?

问:敏捷的方法论有哪些?
答:比较有名的是:
-爱抚弟弟 ( FDD-Feature Driven Design )
-史克朗姆( SCRUM )
-极限编程( XP )

--引用自《构建之法》第6章6.5

所以Scrum不等同于敏捷开发,它是敏捷开发方法之一,那么有哪些敏捷开发方法呢?

1.SCRUM
  SCRUM是一种迭代的增量化过程,用于产品开发或工作管理。它是一种可以集合各种开发实践的经验化过程框架。SCRUM中发布产品的重要性高于一切。
  该方法由Ken Schwaber和 Jeff Sutherland 提出,旨在寻求充分发挥面向对象和构件技术的开发方法,是对迭代式面向对象方法的改进。
2.XP
  XP(极限编程)的思想源自 Kent Beck和Ward Cunningham在软件项目中的合作经历。XP注重的核心是沟通、简明、反馈和勇气。因为知道计划永远赶不上变化,XP无需开发人员在软件开始初期做 出很多的文档。XP提倡测试先行,为了将以后出现bug的几率降到最低。
3.FDD
  FDD (Feature-Driven Development,特性驱动开发)由Peter Coad、Jeff de Luca 、Eric Lefebvre共同开发,是一套针对中小型软件开发项目的开发模式。此外,FDD是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、 易于被开发团队接受,适用于需求经常变动的项目。
4.Crystal Methods
  Crystal Methods(水晶方法族)由Alistair Cockburn在20实际90年代末提出。之所以是个系列,是因为他相信不同类型的项目需要不同的方法。虽然水晶系列不如XP那样的产出效率,但会有更多的人能够接受并遵循它。
5.DSDM
  DSDM(动态系统开发方法)是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效地进行系统开发。实践证明DSDM是成功的敏捷开发方法之一。在英国,由于其在各种规模的软件组织中的成功,它已成为应用最为广泛的快速应用开发方法。
  DSDM不但遵循了敏捷方法的原理,而且也适合那些成熟的传统开发方法有坚实基础的软件组织。
6.ASD
  ASD(Adaptive Software Development,自适应软件开发)由Jim Highsmith在1999年正式提出。ASD强调开发方法的适应性(Adaptive),这一思想来源于复杂系统的混沌理论。ASD不象其他方法那样 有很多具体的实践做法,它更侧重为ASD的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。
7.轻量型RUP
  RUP其实是个过程的框架,它可以包容许多不同类型的过程, Craig Larman 极力主张以敏捷型方式来使用RUP。他的观点是:目前如此众多的努力以推进敏捷型方法,只不过是在接受能被视为RUP 的主流OO开发方法而已。
  最常见的敏捷开发主要是以上这7种,无论是选择哪一种方式都可以提高软件开发的效率,缩短开发需要的时间。现在除了这些敏捷开发方式可以提高应用程序的开发效率之外,低代码平台和零代码平台也是企业开发应用程序可以选择的工具,它们都可以提高应用程序开发的效率降低开发成本。

-- 摘自知乎《敏捷开发方法有哪些

2.Scrum真的好用吗?

如果你的团队很弱,那么强行把敏捷(或者其他高级方法)套在上面也没有用,也许还会适得其反,往往需要经历多次失败/总结/改进的过程才能让Scrum走上正轨。换句话说,如果你的团队已经有这么厉害(自主管理、自我组织、多功能型)的一帮人,那么用不用Scrum都能写好软件!

--引用自《构建之法》第6章6.3最后一段
这段话我理解为团队强弱与否,Scrum都不是一种必要的方法,所以,是否可以得出结论 Scrum 不行?
通过浏览V2EX网站对如今还有人在用 Scrum 方法吗?这一主题的讨论,我有以下心得:
Scrum不是万能的,没必要严格执行,在Scrum的基础上,找到适合自己团队的方法,才是Scrum的作用。

3.《构建之法》4.5.2为什么要结对编程?

书中说了很多结对编程的好处,对于这一个问题,我也有话要说,早在大一,彭琛老师就要求我们结对编程,我们都亲身体验了结对编程,在结对完成编程作业的时候,互相讨论解决问题的方法,总会比一个人闷头冥想灵感来得快,更有可能得到不止一种解决问题的方法。印象深刻的是和室友一起做游戏开发的期末课程设计,一开始只是人抓鹿的简单想法,经过我们两个人的集思广益,游戏内容丰富了许多,不止是鹿,还有很多不一样的野怪,它们有着不一样的属性,人也可以装备很多不同的武器道具。开发过程中遇到过数不胜数的问题,但都在互相讨论中一一得以解决,发挥了1+1>2的效果,独自开发的话,难度一定大得多。

4.怎么才能把创新想法变为现实?

在“现代软件工程”课上,许多同学也提出了不少宏大的创新想法,但是到了课程结束时,什么也没做成,只剩下一个空的构想。

--引用自《构建之法》第16章16.1.1最后一段
我也有过许多创新的想法,但一个也没去实施,直至今日,有一部分想法已经被实现了,但这些构想还只存在于我的想象中。

如果想把自己想要做的事情,真正变成能落地的行动,可以参考一下步骤

用smart原则制定目标
S:目标一 定要明确,不能模糊
M:目标是可衡量的,要有一个衡 量目标的标准
A:目标是可实现的,不要写漫无边际的目标
R:目标要和其它目标有相关性,你的这个目标对其它目标有何帮助
T:目标实现的时间是什么?截止时间要有
目标清晰后,搭建目标框架
要实现自己的这个目标,需要做的步骤有那几块?
可以头脑风暴,用思维导图把想法的想法汇聚起来,可以时间免费的百度脑图或者幕布
设立每个阶段的任务
再把框架搭建好后,可以使用甘特图把每个小框架下需要时间的内容,按照项目进度表列出来,每
次完成一项,进度前进一下
有个小技巧,当你的目标完成还没有超过一半的时候, 可以说自己E经完成了多少进度;当你完成
的进度超过50%时,用距离目标还剩多少来激励自己,表明只剩那么点就可以完成了,干劲满满

--引用自有想法但如果无法落地实施的话,等于零~知乎用户特立独行的周

5.《构建之法》16.1.4创新者都是一马当先?

其实,大部分成功的创新者都不是先行者

创新无处不在,可以是颠覆性的创新,也可以是基于其它创新上的创新,先行者和后起者他们各有各的优势,他们都可以是创新者,所以说,创新者并非都是一马当先。

posted @ 2021-03-12 16:38  hlywww  Views(135)  Comments(0Edit  收藏  举报