个人阅读作业2
1.没有银弹
在电子产品飞速发展的当代,《没有银弹》文章提出在软件工程领域进十年之内,没有办法使软件生产率有数量级的提高。虽然在电子硬件方面,计算机飞速发展,但在软件方面存在固有的困难。在许多产业的发展过程中,会有新技术的产生,带来生产效率的质变,但在软件开发行业,许多影响开发效率的负面因素都被克服,如机器语言落后,机器质量限制等。如今阻碍软件开发的最大原因就是软件本身的复杂性。对于先进技术对软件开发的影响,文章也有分析,但文章指出,编程软件和编程思想的进展,无法改变设计本身的复杂性。对于人工智能和自动编程,文章指出其不具有普适性,至少目前为止,其应用并不会对软件开发的复杂性本身产生影响。
《没有银弹》中的核心思想便是软件开发效率在短期(10年)内是不会有质变的,对此我表示赞同,因为曾经影响软件开发的次要因素已不存在,软件开发的复杂性日益归结于软件本身,正如任何其他领域的生产,起初的发展往往是迅速的,新的生产工具引入,或者是新的技术引入,会使产品的生产效率大幅提高,但当这些次要因素都已被解决,最终就要考虑产品本身的复杂性。软件的独特性在于它归结了人类的思想,具有特殊的复杂性,于人的思维相关联,若要使提高软件开发效率有质变,首先要克服的便是软件复杂性本身,即人的智能本身,这在短期显然是很难提升的。
2.大泥球
大泥球的定义是指一堆混杂的代码不断的拼接,复用,使得整个程序显得混乱不堪,难以阅读调试,毫无规范性可言。首先,这和我所了解到的软件工程规范就不相符,现在软件工程要求软件结构化,代码易读。造成如此混乱的原因就是为了方便软件的即时可用性,从而不顾细节上的修缮,不断的累积导致最终的代码混杂,使代码的生命周期极短。个人觉得解决这个问题的最好方法就是遵循软件工程开发的流程,虽不用严格遵守,但要使代码具有可用性,可拓展性。
我们的项目是”学霸网站“,为解决大泥球问题,我们首先要分析上一届的代码框架,对每一个模块进行理解,删除多余的代码,补充所需要的结构,按照项目规法逐步构建项目.
3.敏捷开发
1. 通过尽早的、持续的交付有价值的软件来使客户满意。我们做的是网站,不可能等待100%完美之后再发布,而是在不断的迭代中添加特性。
2. 即使到了开发的后期,也欢迎改变需求。实际上任何时候更改需求,我们都能够做出响应。
3. 在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。在成员对某个模块有疑问时,直接找负责那个模块的成员,后者会进行详细讲解。