首页 > 代码库 > 个人阅读作业2

个人阅读作业2

No Silver Bullet - Essence and Accidents of Software Engineering

  这篇文章首先是介绍了软件工程要面临的固有的不可避免的问题,主要是复杂性,软件整合,可变性和不可见性。文章中强调由于软件的复杂性本质,而使真正的银弹并不存在;所谓的没有银弹是指没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。

  之后介绍了过去软件开发解决事故性困难的方法,首先是高级语言带来的方便性,高级语言给软件开发者带来的便捷式显而易见的,软件开发者不用再去关心低层的实现而只要在一个抽象的但更接近人类思维的层面上去设计软件;其次就是分时,只要分时的频率足够大,在人类分辨能力之上,那么就能取到很好的效果;最后是统一的编程环境,统一的编程环境是的软件开发者都使用统一格式,这样便于软件工作者之间的交流。

  最后作者讲了下寻找银弹的前途。主要有买VS重建的讨论,其中成本是主要考虑的因素;要求完善和快速成型是软件设计的基础工作,一开始就要设计好;人是软件开发中最重要的决定因素,拥有强大的设计者将使软件开发效率提高好多,作者给出了培养Great designers的明显的步骤。

  总的来说,文章中提出的问题基本都是我们遇到过,或者听说过的,能够理解,且感觉很有道理。先提出问题,再给出一些答案,引发读者思考。

 

big ball of mud

  什么是大泥球?大泥球是指一个随意化的杂乱的结构化系统,只是代码的堆砌和拼凑,往往会导致很多错误或者缺陷。

  大泥球的出现使得无法使得系统内的信息得到更好的控制和共享,使得信息失去了应有的价值。大泥球般的系统的整体结构没有得到很好的界定,也就使得大泥球越发的复杂和杂乱无章。最终会使得这个系统的代码不被程序员理解,更无法对其修复,无法满足用户的需求变化。

  结合文章中给出的大泥球出现的原因:一次性代码,碎片式增长,缺少前期设计,应对需求和架构变化过晚,程序员的经验,技巧,眼界的限制,我感觉在我们平常的代码过程中基本到处都是大泥球,可以说是深陷泥潭了。在过去的几次作业中,我觉得我写的都是一次性代码,不具备可重复利用性,前期设计不足,多处地方基本是写一步看一步,在经验、技巧、眼界等方面的限制也大大增加了难度和工作量。这也是我在以后的学习工作中需要多多注意并改正的地方。

 

 

 Managing the development of large software systems: concepts and techniques

   这篇文章主要是介绍了“瀑布模型”。瀑布模型主要分为下面三个阶段:

1.定义期:“分析重于设计,设计重于编码”,因为差错产生的越早,后面纠正差错所花的成本越高。

2. 开发期:该阶段实现系统的详细设计和具体应用程序的开发。需要系统设计人员和软件开发人员的大量工作,同时,用户必须有效地参与设计过程。

3.维护期:维护是系统生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。前面各阶段的细致工作,其中一个目的就是为了提高系统的可维护性,降低维护的代价。

 

   在以往的作业中,定义期和维护期所花时间与精力明显不够,大部分花在开发期上了,所以作业的效果都不怎么样。

  

个人阅读作业2