这个做业属于北航计算机学院软件工程
这个做业的要求位于此连接
我在这个课程的目标是:积累软件项目开发经验,取得大于85分的成绩。
这个做业在以下方面帮助我实现目标:快速浏览全书,掌握课程的总体结构。经过查阅资料,了解软件工程的历史。html
(1)第33页,将代码段linux
for(int i = 0; i < m_wordList.Count; i++)
更改成git
int count = m_wordList.Count; for (int i = 0; i < count; i++)
第34页写道:“你们也要注意避免没有作分析就过早地进行‘效能提升’。”
问:相似上述代码的优化,是否能够视为必然可以提升效能,而无需每次都进行分析呢?程序员
(2)第7章 第137页
“有些团队把开发和测试有意无心地对立起来,好像两者是矛盾的。” “这种对立情绪,也许在短时间内能刺激成员的工做热情,而从长远来看是有害的。”
北航计算机学院的“面向对象设计与构造”课程的每份做业都采用以下的评分标准:修课的同窗代码随机分配至其余人手里,找出别人的BUG会为本身加分,而本身的程序被别人找出BUG会被减分。这种评分规则是否能够看做违反了上述原则,而应被废止或修改呢?编程
(3)第8章 需求分析 之中的内容,有一部分与北航经管教材上的知识重合。例如167页的“用户满意度模型”、177页的“分而治之”思想。
能否认为软件工程在进行需求分析时,较多地借鉴了传统管理学知识?或者认为软件工程是管理学的一个分支?api
(4)11.5.2 每日构建(235~237页)
这一节的写做有些漏洞。阿超与小飞的对话,主要论证的是“构建”的重要性,却忽略了论述“每日”进行构建的必要性。
因此,每一天都进行构建工做是不是有必要的?若是不是,这一名称是否有修改的必要?服务器
(5)第14章 质量保障 第312页
做者设想了第三方的软件质量认证服务将为人们的生活带来的便利。那么,第三方认证软件质量为何尚处于起步阶段,其难点在哪里?网络
根据百度百科“软件工程”词条的描述,软件与软件工程的发展经历了以下阶段:electron
“软件”一词的提出者通常认为是美国数学家John Tukey。他的维基百科中有以下论述:编程语言
In 2000, Fred Shapiro, a librarian at the Yale Law School, published a letter revealing that Tukey's 1958 paper "The Teaching of Concrete Mathematics" contained the earliest known usage of the term "software" found in a search of JSTOR's electronic archives, predating the OED's citation by two years.
而“软件工程”的提出者和实践者通常认为是Margaret Hamilton。她开发了“阿波罗”飞船飞行控制软件。在一次采访中她提到:
软件在这个计划的初期还被看成初初学步的孩子通常对待,彻底不像其余工程学科;例如像硬件工程那样的受到重视,并且在你们的眼光中他就像是艺术、魔术通常,而不是一门科学。我一直以来坚信这项发明流着艺术与科学的血液,虽然当时不多人是这么想。所以,我致力于为软件以及那些发明者争取应有的正统性与尊重,因此我开始使用“软件工程”这样的字眼来将之与硬件还有其余工程学类作出区别。
——引用自《就是她,写出了让阿姆斯壮成功登录月球的代码!》
事实上,尽管Hamilton是半路出家,可是她在软件测试方面贡献了一些卓有成效的思想。
一天,劳伦在摆弄 MIT 控制舱模拟器的显示器键盘一体机 DSKY。当她在键盘上乱按的时候,一条错误信息忽然出现。劳伦不知怎地启动了一个叫作 P01 的预运行程序,本来正在飞行状态的模拟器一会儿崩溃了。
虽然通常来讲宇航员不会犯这样的错,但玛格丽特仍是想加一段代码防止这种情况的发生。这一提议被 NASA 否决,「他们一遍又一遍地跟我说宇航员不会犯任何错误,他们被训练得近乎完美,」玛格丽特说。她转而加了一句程序说明,全部 NASA 工程师和宇航员都能看到:「不要在飞行过程当中按下 P01」。她回忆说,「全部人都说,『那样的事情永远都不会发生』。」
但事情的的确确发生了。时间大约在 1968 年的圣诞节,进入阿波罗 8 号飞船的第五天飞行,宇航员吉姆·洛威尔 (Jim Lovell) 不当心在飞行中启动了 P01 程序。当电话从休斯顿打来的时候,玛格丽特正在仪器实验室的 2 层会议室。启动 P01 程序致使此的导航数据所有清空,阿波罗计算机没法计算出如何返回地球。
玛格丽特和 MIT 的程序员们须要想出一个补救的办法,必须是无错漏的完美办法。在花费 9 小时钻研过面前 8 英寸厚的程序列表后,他们有了一个计划。休斯顿方面须要上传一份新的导航数据,然后一切都会顺利进行。
——引用自《代码传奇 | 明明能够靠颜值 却用代码把人类送上了月球的女人——Margaret Hamilton》
Git是一个开源的分布式版本控制系统,能够有效、高速地处理从很小到很是大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
优势:
缺点:
Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 受权的开源项目。
优势:
缺点:
Trac是一个为软件开发项目须要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。Trac以简单的方式创建了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件。
Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System),它能够管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整个生命周期。
Bugzilla是一开源Bug Tracking System,是专门为Unix定制开发的。