zoukankan      html  css  js  c++  java
  • 阅读文献(期中作业)

    《没有银弹》

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

    《可能有银弹》

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

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

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

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

    《大泥球》

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

    《catB》

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

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

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

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

    《方法的好与坏》

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

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

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

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

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

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

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

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

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

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

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

    《瀑布模型》

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

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

    阅读材料2

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

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

  • 相关阅读:
    Python开发环境Spyder介绍
    Python干货整理之数据结构篇
    通过Python爬虫按关键词抓取相关的新闻
    疫情后来场说走就走的旅行,Python制作一份可视化的旅行攻略
    详细介绍去一年在 PyPI 上下载次数最多的 Python 包
    Python错误与异常
    python爬虫爬取2020年中国大学排名
    微信史上最短的一行功能代码:拍一拍
    Python爬取某宝商品数据案例:100页的价格、购买人数等数据
    我的SAS菜鸟之路7
  • 原文地址:https://www.cnblogs.com/xyyimian/p/10211314.html
Copyright © 2011-2022 走看看