个人阅读作业与总结

个人阅读作业与总结


Silver Bullet

I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation.

Frederick P. Brooks, Jr.在No Silver Bullet 中指出构建软件的难点在于对结构概念的规范、设计和测试而不是开发和测试所付出的劳动,真正让它难以快速发展的并不是技术的不足,而是管理和设计的不可避免的缺陷。由于它的本质难点——复杂性、一致性、可变性、不可见性,软件的构建没有办法像电子硬件学科那样在可靠性、生产力上实现摩尔定律的增长。高级语言、统一的编程环境解决了一些意外的困难,面向对象编程、自动化变成、人工智能、程序验证给软件工程的突破带来希望。但是现有的进展仍不足以解决软件构建中的本质问题。

在对前景的展望中作者提出了“购买而不构建”的极端可能性,同时也指出,构建软件所需要的是精炼的需求、快速的原型和更好的设计者。人而不是技术的因素起到了更重要的作用。

It is a paradigm shift--a software industrial revolution based on reusable and interchangeable parts that will alter the software universe as surely as the industrial revolution changed manufacturing.

Brad J. Cox 在 There is a Silver Bullet 中从另外的角度阐释了不同的观点,通过哥白尼革命强调认知论转变,不在把程序员放在软件开发的中的神圣地位,而是认为可以借助可复用和通用的组件使软件工程在信息时代的发展达到工业革命时期的工业批量生产的程度。软件只不过是按需选择不同组件组装的产物,人的作用也只不过是组装者。

在团队项目中我们初步的体会到了想法到产品的落差,最初的设计并不明朗,后续的开发的测试也是在不断的修改和填补漏洞中完成的,最终的产品也并不十分让人满意。也许就是因为对结构概念没有明确的认识。另外,我们使用了一些开源组件库,用来搭建界面和实现页面跳转,很多工作不再需要从底层做起,甚至并不需要十分了解这些组件是如何实现的。设计和管理仍然在软件开发中起到至关重要的作用,而大量可复用、通用的组件也确实大大简化了软件开发的工作。也许假以时日,软件的构建也能够达到工业化的程度,人的作用仍然存在,但已经不再是神圣的中心了。

Big Ball of Mud

A BIG BALL OF MUD is a casually, even haphazardly, structured system. Its organization, if one can call it that, is dictated more by expediency than design. Yet, its enduring popularity cannot merely be indicative of a general disregard for architecture.

BIG BALL OF MUD指的是非常随意的结构化的系统,在软件开发过程中迫于时间、预算的压力,人们通常会首先完成功能,而把良好的架构和外观放在次要的位置上,但是实际上,如果一开始没有一个好的架构,后期就很难在原本的随意的构架上形成一个好的构架。但是面对着市场竞争的压力,通常软件开发都面对着时间和预算的压力,因此BIG BALL OF MUD总会一定程度的出现。

在我们项目的开发过程中,开发的默认原则就是先实现可用的功能。并非最开始就没有想过要有一个好的构架,做到高内聚低耦合,但是这会加大我们的学习成本,定义非常多的接口,而有些接口在开发初期是不能确定的,同时也会增加开发人员之间的工作的交叉,增加困难。因此我们做出了部分妥协,在开发过程中把界面和数据处理集中在了一起,开发工作结束后才对他们进行了分离。

Cathedral and the Bazaar

the code is developed over the Internet in view of the public

我们的项目实在github上开源的,就像集市模式中所说的那样,但是并没有团队以外的人来参与过我们的项目。

Lost in CatB

a pile of old festering hacks, endlessly copied and pasted by a clueless generation of IT "professionals" who wouldn‘t recognize sound IT architecture if you hit them over the head with it.

大量代码开源,人们可以方便的复制粘贴,有时候并不了解这部分代码实现的原理,只知道他能够实现需要的功能,其中实际并不需要的代码、依赖也没有好好的了解和删除,这样使得项目中有非常多冗余的人们都不知道是用来干什么的依赖。 一个8人的团队在OOPSLA SPLASH 会议上发表了一篇名为A Map of Code Duplicates on GitHub的研究报告,指出github上重复的代码比例达到七成,github本身就是共享代码的平台,但是GitHub 上 4.28 亿文件中只有 8500 万是唯一的这个数据也相当惊人。

我们的项目在开发过程中没有复制和使用过其他项目的代码,但是引用过一些包装好的组件库,我们对这些组件库的实现细节和依赖并没有仔细研究,但是对他们的实现方式有大致的了解,我们认为这些引用并无不妥,不会出现Lost in Bazaar的情况。

Agile Method

我们的开发过程中主要使用的是敏捷开发的方法。在开发出最小可用功能之后,根据新的建议、需求不断调整开发任务。

总结

时至今日,软件工程的方法仍处于不断发展和完善中,但是我们仍然可以从中获益,在一条已经有了前人经验的道路上行走。在这门课程中了解到许多比编程本身更重要的东西,必须规划和设计,沟通与协作。

原文地址:https://www.cnblogs.com/erischaron/p/8278277.html

时间: 2024-10-13 11:41:46

个人阅读作业与总结的相关文章

软件工程M1/M2总结及阅读作业总结

一.软件工程M1/M2总结 写下这篇总结的时候,我们的软件项目尚未完工.虽然尝试申请了延期答辩,但最终未能成功.这意味着,我们的项目能否正常发布已经处于了一个微妙的状态.可能可以,也可能不可以.只能尽力而为了. 整个一学期的开发下来,我在软件工程方面体会最深的是成本问题以及技术债.以前写的项目往往没有特别严格的deadline,很多是个人的随兴而写的东西,写不动了就不写了.又或者是作业,最多也就那么一千行,怎么都是可以写完的.而软件工程这门课的团队项目,7个人,一个完整的网站,特别是对于我们这个

个人阅读作业 final

前两次阅读作业链接: http://www.cnblogs.com/SteelPillar/p/4027877.html http://www.cnblogs.com/SteelPillar/p/4096145.html 请说明哪些问题现在自己已经清楚了,请阐明一下,是如何通过看书,实践,或者讨论弄清楚的: 在实践过程中,我最终发现写成文档类的沟通是比较有效的.比如说,我和前端的负责人谈论她所需要的接口,如果少的话,在企鹅上一句两句就可以解释明白,但如果需求多的话,可能就要写一份需求的说明,我会

个人阅读作业二

http://www.cnblogs.com/Coolio/p/4027701.html  以前的个人阅读作业,提出了一些问题. 一 如何提高代码开发的效率? 通过这个学期的学习和实验,我觉得要提高代码开发的效率,必须使代码变得流畅有组织,同时,团队合作也能提高代码效率. 二 什么是过程模型? 这是软件开发过程中的一种策略,遵循一定的过程模型路线有助于及时交付高质量的产品. 三 软件神话的害处 会使很多人受到误导,从而产生错误的管理和技术行为.会使人们把软件神话当作事实,开发软件的过程中忽略实际

第二次阅读作业

一开始看到阅读作业的时候我感觉老师给的时间还是很充裕的,但是在阅读的过程中我还是感觉不是很充分,其中一个很重要的原因就是由于自己的英语水平有限,在阅读的过程中需要经常性的去查单词,造成阅读中的一些中断,以至于思维不是很连续.但是还好,由于时间较充分且我开始的较早,这一个问题还是被自己克服了,没有造成太大的影响.首先我先说一说自己对于这些文章的理解吧.第一篇文章是No Silver Bullet: Essence and Accidents of Software Engineering.在这篇文

软工个人阅读作业3

M1/M2阶段总结: 从M1阶段开始到现在已有几个月,不知不觉我参与这个高大上的团队完成app的工作已经有这么久了,从刚开始的手足无措到现在的完美结束,期间有任务压身的紧迫感,也有做出成果的激动和欣慰.下面分享一下这一段时间我的思想与感悟. 对于我自己: 1 这两次的团队作业我收获最大的就是又学会了另一种爬虫方法,相对我之前了解的另一种爬取网页的机制,这次学到的方法更加简洁易懂,学起来也很快,了解了其中的机制之后就觉得这种方法很神奇,很有趣. 2 软工课的团队作业也是我参加过的为数很少的多人合作

个人阅读作业+总结

个人阅读作业+总结 关于银弹 关于银弹我比较认同Frederick P. Brooks, Jr.的观点,软件开发过程中没有银弹.文章中提到 But, as we look to the horizon of a decade hence, we see no silver bullet. There is no single development, in either technology or in management technique, that by itself promises

软件工程网络15个人阅读作业1

软件工程网络15个人阅读作业1 Task1:博客账号 http://www.cnblogs.com/mz201521044152/ Task2:码云账号 https://gitee.com/mxz0/events Task3:完成博客-阅读与思考 ##阅读参考材料,并回答下面几个问题: (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络工程专业的决定的? 你认为过去两年中接触到的课程是否符合你对网络工程专业的期待,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?

软工网络15个人阅读作业1

软工网络15个人阅读作业1 Task1:注册个人博客账号 博客园地址:齐畅 http://www.cnblogs.com/qichang/ Task2:注册码云账号 目的:管理你的项目,记录(源码.文档,历次版本变更,bug发现与修复)等信息. 码云地址:https://gitee.com/hudkahfk/ Task3:完成博客-阅读与思考 阅读参考材料,并回答下面几个问题: (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络工程专业的决定的? 答:听专家意见报的志愿,他

软件工程网络15个人阅读作业1(201521123045 郑子熙)

软工15 个人阅读作业1 1.个人账号信息 (1)学号姓名 201521123045 郑子熙 (2)博客地址 https://home.cnblogs.com/u/zhengizixi/https://home.cnblogs.com/u/zhengizixi/ (3)码云地址 https://gitee.com/zhengzixi/events 2.阅读与思考 阅读参考材料,并回答下面几个问题: (1)回想一下你初入大学时对网络工程专业的畅想 当初你是如何做出选择网络工程专业的决定的? 当初报