软工第一次阅读作业
软工第一次阅读作业
项目 | 内容 |
---|---|
本次作业所属课程 | 2019BUAA软件工程 |
本次作业要求 | 第一次阅读作业 |
我在本课程的目标 | 学会团队合作开发项目,为以后的工作打下基础 |
本次作业的帮助 | 阅读《构建之法》,从宏观上建立起对敏捷开发模式,软件工程要素的理解。 |
一、快速看完整部教材,列出你仍然不懂的5到10个问题
- 第五章 敏捷流程
"只有能自我管理的团队才能创造优秀的架构、需求和设计"
根据我的观察以及实习经验,较大的公司凭借资源丰厚,人、财、理念兼备等,在推进敏捷开发的时候较为容易,但是小的公司往往难以进行传统理念到敏捷开发的转型。
这是否就决定敏捷开发在国内推进的难度?如何调整可以让敏捷开发在国内企业普及开来?
- 第八章 需求分析
"在敏捷开发的项目中,团队一般不过分强调“估计”的价值,因为它就是一个“猜”字。“猜得准”不是团队的目标。
在书中,我们已经了解到惊喜需求的实现可以很大程度上提高顾客的满意度,那么一般在团队中如何平衡惊喜需求和“估计”的需求?
- 9.3 项目经理——PM做开发和测试之外的所有事情
“如果一定要说专业能力的话,PM的专业就是理解和表达,你是否理解不同人的心里,需求和言外之意?”
项目经理是连接需求和开发工作的桥梁,最好的方式应该是可以让双方都更省力,最好的方式就是项目经理不仅仅有作为客户的经验,还应该有完成项目的经验。以我的个人经历来看,只有真正做过某件事情的人才能理解和表达其中的意思。
所以,在企业中,项目经理是否应该是一个精通两样事情的全才,而不只是理解和表达?
- 第九章 项目经理
项目经理在确定软件开放方案的时候遇到团队成员意见相左的情况,例如使用的架构和开发工具不尽相同,这时,PM要如何进行决策?
- 第十三章 软件测试
在之前的软件开发中,许多同学编写脚本来进行所谓的“全覆盖测试”。我看书中甚少提及。全覆盖的这种方式在软件工程测试中到底处于什么样的地位?
二、请问 “软件” 和 “软件工程” 这些词汇是如何出现的(何时、何地、何人)?
“软件”:美国统计学家约翰·图克(John W. Tukey)在1958年1月9日出版的《混合数学教学》(American Mathematical Monthly)中首次公开使用“软件”(software)一词。
“软件工程”:这个概念是在1968年由NATO(北约)科技委员会在前联邦德国的会议中提出,当时定义为“研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科”。
三、知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?
1999年,鲁宾和马特·赫森逊、乔伊·布里特共同创建了一家名为Danger的科技公司。他们成功地为T-Mobile研制出一款名为Sidekick的贴牌手机。和名字中的描述一样,Sidekick是一款侧滑全键盘智能手机,它不但能和PDA一样进行移动办公,还能通过WiFi进行上网。
开发Sidekick的经历为鲁宾积累了丰富的研发经验。然而2004年,Danger公司发生政变,董事会决定引入新CEO来替代鲁宾。尽管表示同意董事会的决定,但当新CEO上任后,失意的鲁宾还是决定离开Danger公司。
离职后的鲁宾在开曼群岛隐居了几个月,这段期间,他一直在编写软件,试图开发一款数码相机。然而沮丧的是,没有人支持他。万般无奈之下,鲁宾回归原点,决定开发智能手机相关的项目。几年前注册的一个网络域名给他了灵感,他决定将新项目命名为安卓(Android),目标是将它打造为完全开放的移动平台。
鲁宾在新项目上倾其所有,很快就破产了。他打电话给好友史蒂夫·佩尔曼(Steve Perlman),寻求资助。佩尔曼在电话里问他何时需要资金,饱受资金困扰的鲁宾在电话里吼道,“现在就要!”
佩尔曼闻言后立刻向鲁宾汇去了1万美元,但杯水车薪,这笔资金很快就被花光。无奈之后,佩尔曼只得继续汇款,前后共注资10万美元,帮助安卓团队完成了最初的商业计划。
但一年之后,安卓团队依旧入不敷出。开发这样一款庞大的产品实在太烧钱了!编写程序、功能测试、想法错位后推倒重建……每一个环节都需要钱。一年之后,寻求资金帮助开始成为鲁宾的主要工作之一。
他们决定在大公司身上碰碰运气,但最初找到的并非谷歌,而是三星。2004年的一天,仅有8名成员的安卓团队全部飞往韩国首尔,在那里,他们见到了商谈收购事宜的三星。
这是双方第一次接触,但印象并不好。鲁宾在介绍产品时极力推荐安卓系统的设计思想,赞美它的前沿功能,但三星团队不为所动。现场的气氛奇怪极了,没有提问和掌声,鲁宾收获的只有沉默。片刻之后,三星的高管说话了:
“你和这支所谓的团队就打算开发这么个玩意儿?你们(开发产品的)只有6个人,你嗑药嗑嗨了吗?”
“这基本就是他们的回应。”鲁宾回忆说。嘲笑声中,他带着沮丧和愤怒离开了三星的会议室。回国后,他们又试着接触了其他公司。两周之后,消息传来——被三星拒绝的安卓团队被谷歌收购了。
对于安卓,谷歌的态度与三星截然相反。2002年,鲁宾在斯坦福大学给硅谷工程师授课时,谷歌创始人拉里·佩奇和谢尔盖·布林曾在台下关注过他的项目。鲁宾研发的Sidekick手机让佩奇印象深刻,这促使他萌生了研发谷歌手机和移动系统的想法。
2005年初期,佩奇与四处找钱的罗宾见了一面。在仔细听完罗宾对安卓的描述后,佩奇打消了向安卓投资的想法——他决定直接收购。三年前在他脑中闪现的想法再次出现,佩奇决定研发谷歌自有移动系统,抢在微软前面完成移动化布局。
交易很快就敲定了。最终,谷歌以5000万美元收购了安卓。2005年,安卓团队的8名成员悉数搬到位于山景城的谷歌总部。在那里,他们开启了一段新的历史……
四、上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
Git:
优点:
- 适合分布式开发,强调个体。
- 公共服务器压力和数据量都不会太大。
- 速度快、灵活。
- 任意两个开发者之间可以很容易的解决冲突。
- 离线工作。
缺点:
- 学习周期相对而言比较长。
- 不符合常规思维。
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
Microsoft TFS:
优点:
- 与Visual Studio无缝结合,方便开发者进行源代码管理。
- 支持代码审阅与讨论,支持邮件通知,支持Web访问与管理,支持工作项以及BUG等管理。
- 不会上传.NET开发时生成的垃圾文件,自带版本合并以及比较工具
- 支持数据库版本管理,自带很多管理工具(测试管理器、反馈客户端、界面设计工具等等)
缺点:
- 用ASP实现,用浏览器访问很慢
- 团队的邮件细节配置很复杂
Mercurial:
优点:
- 命令有双字母简称
- 命令兼容svn
- 命令封装性好
- 服务器部署相对容易
缺点:
- 分支管理不灵活
- 支持社区略差
Github:
使用人数:24m
优点:
- pull request和issue功能方便社区协作
- 个人展示、合作平台
- 有大量优秀的开源项目
缺点:
- wiki 功能太弱
- 学习曲线陡峭
- 可能未来某天被墙
- 企业应用费用太高
Bitbucket:
优点:
- 支持私有免费项目
- 支持git
缺点:
- 受欢迎度不如Github
- 网站功能不如Github丰富
Trac:
优点:
- 作为一个SCM配置管理平台,具有良好的扩充性
- 权限体系设计完备
- 非常灵活
缺点:
- 不支持多项目
- 需求和缺陷没有分离
- wiki 作为文档的学习代价比较高
Bugzilla:
优点:
- 强大的检索功能
- 定制功能强
- 通过跟踪和描述处理Bug
- 强大的后端数据库支持功能
- 免费开源
缺点:
- 界面不友好
- 本地化不够好
Apple XCode:
优点:
- 可以自动创建分类图表。
- 自动提供撤消、重做和保存功能,无需编写任何编码。
缺点:
- 更新版本后,某个插件可能会失效。