第一次阅读作业
一.问题
1.在什么开发情况下选择敏捷?
我看了构建之法书中第六章中关于敏捷流程的叙述:第一步,找出完成产品需要做的事情(Product Backlog);第二步,决定当前冲刺(Sprint)需要解决的事情——Sprint Backlog;第三步,冲刺(每日例会不停);第四步,得到一个新的增量版本,发布给用户。在此基础上进一步计划增量的新功能和改进。看完这一章,因为之前一直是单人编程,我觉得单人开发的过程和这个没什么区别,不懂为什么要单独强调。对于多人开发来说团队过于庞大的时候,当需求改变,成员间的相互沟通会变的很麻烦,可能会浪费很多时间,敏捷开发是否只适用于小中型团队?
2.软件的质量在敏捷开发处于什么样的地位?
在看到书中描述关于软件的质量尺度问题时,回答到“及时发布能够解决用户问题的软件,并且能及时修改软件中的问题”。这个回答太宽泛了,当然每个公司都想能做到这一点,但这是不可能的。所以在快到交付日期时,我觉得一个软件质量问题很严重,如果处理不好就算勉强赶上交付有可能因为质量问题影响用户体验导致风评变差,可以拖延点时间优先解决质量问题。
3.非功能性需求?
百度百科得到非功能性需求是指依一些条件判断系统运作情形或其特性,而不是针对系统特定行为的需求,包括安全性、可靠性、互操作性、健壮性等。我理解的需求就是为完成用户要求功能的必要指标,无功能和非功能之分。不懂非功能需求是什么。
4.探索式测试
我觉得探索式测试其实在正常测试中就已经处理了,一般多会考虑很多边界测试的,以前肝OO的时候大家就是这样过来的。而在与其他模块结合的时候,完全可以在回归测试一起做完,我觉得没必要单独做探索式测试。
5.AI,嵌入式和敏捷的区别?
了解了敏捷开发的流程,但不明白和AI,以及嵌入式的区别,为🐎要分成不同的开发方式?
二.请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 何时、何地、何人?
软件,最早出现在1958年,Tukey创造“软件”一词。
软件工程,1960,Margaret Heafield Hamilton创造“软件工程”一词
三.上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?(提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rational,Apple XCode)?
- Microsoft TFS
优点:任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用,可以与 VS 无缝接合。
缺点:TFS 定位并不是源代码管理,而是一个团队工具,贯穿需求,开发,测试,发布各个流程提供自动化工具。 - GitHub
优点:基于web,允许你使用Git的源代码管理功能,开源,
缺点:上手难 - Git
优点:适合分布式开发,强调个体,公共服务器压力和数据量都不会太大,任意两个开发者之间可以很容易的解决冲突,离线工作。
缺点:代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码。 - Mercurial
优点:扩展性,append only的存储结构
缺点: - Trac
优点:良好的扩充性,非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。
缺点:不支持多项目,不显示中文名,本地化做得很差,核心功能很少,不安装插件基本上没法用。