阅读文献(期中作业)

《没有银弹》

当把软件工程这些年的进展和硬件开发相比,会发现软件开发相比硬件要缓慢地多。即使我们弄清楚了主要任务是——打造有抽象软件实体构成的复杂概念结构——我们也无法找到一种降低软件成本的银弹。进一步分析这个问题,我们会发现,没有银弹的本质原因来源于现代软件系统的内在特性:复杂性,一致性,可变性和不可见性。复杂性主要体现在没有太多重复的部分。一致性体现在为了保持接口的一致性带来了相应的复杂性;可变性来源于需求的易变性,不可见性体现在无法可视化软件,无法通过人的直观简化问题。

《可能有银弹》

作者觉得上一文作者对银弹的理解可能不一定正确。在本文作者看来,银弹应该是一种凡是转变和可重复使用的革命。作者列举了下列可能成为银弹的技术。

面向对象技术可以使软件变得有形,是可重用类和客户代码得以出现。

哥白尼革命论证了需求的升级最终会引导软件范式革命的到来。

工业革命在一定程度上说明了软件的工业革命并无可能。我们完全可以将工具的生产和消费和软件的生产和消费相类比。

《大泥球》

大泥球的定义是一种软件系统缺乏可感知的架构。并且这种架构是普遍存在的。在我们的项目中的确存在大泥球。我们的项目中的的功能是紧耦合的,其中包括线程,调试信息,启动程序和消息传递机制。从更好的角度来说,我们应该将架构更加清晰一些。

《catB》

这篇essay对比了两种不同的自由软件开发模型。

教堂模型:每个release的代码都是开源的,但是各个release之间的代码严格受限。比如GNU Emacs和GCC。

Bazaar模型,代码的开发过程完全公开。这个过程的创始人就是Linus。这篇文章的中心思想就是“被越多双眼球关注,出现重大bug的可能性就越小”。

在我们的项目中,由于code review只在两个人中进行,所以这个效应体现得并不明显。

《方法的好与坏》

方法的好与坏对四种普遍观念提出了质疑。

简化:接口和实现都必须简化。

无误:设计必须在任何可观测方面都是无误的

一致:设计可以稍微让步于一致,甚至可能带来复杂和不完整。一致性和正确性一样重要

完整性:设计必须包含和实际中几乎一样的情形。所有合理的期望都必须被考虑

作者觉得应该进行如下更改

简化:和接口比起来实现应当更简单。并且简化性是整个设计中最重要的要素

正确性:重要性稍次简化性

一致性:不能过分不一致。一致性有时可以牺牲

完整性:完整性可以让步于其他性质。

(后面没看,但是讲道理不是很赞同。光从C++, 来看,想写出高质量的可复用代码,减少用户代码出错的各种可能性,就意味着几乎不可能做到简洁。并且我个人觉得接口简单比实现简单更重要。接口一致能避免很多bug的出现)

《瀑布模型》

特点是开发过程按设计的一系列阶段顺序展开。每个阶段都会产生循环反馈,是一种比较流行的模型。缺点是缺少迭代过程,不可逆。

我们团队中用了里程碑,结对编程和scrum的敏捷思想。

阅读材料2

软件工程和计算机科学区别太大了。软件工程注重方法论,注重利用现有的工具写出高效可复用稳定的代码,非常的工程和实际。而计算机科学非常偏理论,注重知识而不是方法。

本校的计算机教育:计算机系的大作业太水,考试靠突击拿高分,整个三年学生连超过千行的大项目都没几个,都是练笔小程序。

猜你喜欢

转载自www.cnblogs.com/xyyimian/p/10211314.html