实验简介
软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率。但是,由于软件的特殊存在形式和研发过程,在近50年软件工程的发展过程中,虽然我们简化了开发,提高了效率,细节了分工,提出标准,实践了各种方法论,但是有一些根本的问题,仍然无法得以解决。
1、掌握软件工程的核心过程。
2、掌握软件研发各角色分工。
3、理解研发过程中的各类问题。
实验流程
1. 何为“没有银弹”?
毫无疑问,没有人会否认“信息技术”是近半个世纪以来对人类日常生活影响最为深远的科学,没有之一。而“信息技术”的发展,是以“大规模集成电路”与“软件工程”这两门工程学科为基础的,而组成信息技术的这两门重点学科却在科学界有两个完全不同的结论:
(1) 集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍 (摩尔定律)。
(2) 没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步 (人月神话)。

“没有银弹”是“人月神话”这本书中的一个很重要的观点,表达的核心思想就是:“由于软件的复杂性本质,而使真正的从根本上解决问题的银弹并不存在”。
2、 为何“没有银弹”?
“没有银弹”似乎已经成为制约“软件工程”的魔咒,至今无法破解。分析其原因,我们不得不谈谈“软件工程”相比于其它工程类学科所独有的一些特性:
(1) 需求易变:
软件工程与建筑工程一样,同属于工程类学科,可人类从未也无法要求建筑师在大楼建设到一半时修改原有设计,重新建造;但人类却可以无休止地要求软件在开发到一半时重新设计,从头构建。其根本原因在于,建筑物属于实体,推倒重来意味着实实在在的经济损失,而软件属于虚拟物品,推倒重来并不能切实地感受到损失,最多是多花点时间,多找些程序员。
(2) 软件不可见:
每个人都明白,软件绝对不是由钢筋水泥组成,软件是由看不见摸不着的一串串的指令构成。我们可以很容易通过科学仪器来检测一个建筑物是否有裂痕,是否漏水,承重及抗震力是否合乎设计要求,但是我们有什么仪器来检测一个软件是否满足条件呢?它看不见也摸不着,只能依靠人类的智慧,还有偏见。如果一只猫跑进一幢建筑物内会发生什么呢?答案是什么也不会发生,但是你能想象如果一只猫踩上你的键盘会发生什么吗?
(3) 逻辑复杂:
我们可以很容易推导出一个建筑物如果能抵御8级地震,那么它一定可以抵御1级地震,但是如果不经验证,我们将无法推导出计算机能正确计算8+8的结果则一定可以正确计算1+1的结果。计算机非常简单,简单到只能处理1和0,正因为它的简单导致了它的复杂和强大。当今的软件代码量均以上万甚至百万行计,有的大型软件如Windows操作系统,代码量以千万行计,如此庞大的代码量可想而知其逻辑判断分支和相互之间的耦合与影响是任何一个测试工具或者方法也没有办法完全覆盖到的。
(4) 不可重用:
所有的建筑物都由钢筋,水泥,玻璃,电缆等组成,一个钢筋制造企业可以制造出适用于大多数建筑物的钢筋来。但是,每一个软件产品都有其不同的特点,我们无法使用现有的构件经过简单的堆砌而制造出一款全新的软件,每个软件产品都针对特定的行业甚至特定的企业解决特定的问题。可以说,任何软件产品的开发都是从0到1的过程。
3、软件研发难题
种种迹象表明,“软件工程”的发展将是极其悲观的,可是人类从未停止探索的脚本,面对如此复杂多变而又不可见的“软件”,我们提出了软件生命周期模型,提出了面向对象的软件开发方法,提出了敏捷开发方法论,并不断改进,以期获得尽可能多的进步,虽然我们无法创造银弹,但我们从未停止创造的脚步,言下之意是:至今仍然“没有银弹”。互联网上流传着这样一则笑话,或许从另一个侧面为我们解释了为何“没有银弹”。

程序员写出自认为没有Bug的代码 软件测试,发现了20个Bug 程序员修改了10个Bug,并告诉测试组另外10个不是Bug 测试组发现其中5个改动根本无法工作,同时又发现了15个新Bug
${comment['nickname']} ${comment['createtime']}
${comment.content}
${reply.nickname} 回复 ${comment.nickname}
${reply.createtime}
回复内容:${reply.content}
|