第十六章 没有银弹 ---软件工程中的根本和次要问题

http://blog.csdn.net/zuochao_2013/article/details/73614151

在未来的十年内,无论是在技术还是管理方法上,都看不出有任何突破性的进步,能够保证在十年内大幅度地提高软件的生产率、可靠性和简洁性。

一、摘要

所有软件根本任务:打造构成抽象软件实体的复杂概念结构

次要任务:使用编程语言表达这些抽象实体,在空间和时间限制下将它们映射成机器语言

      二、根本困难

软件开发中困难的部分是规格说明、设计和测试这些概念上的结构,而不是对概念进行表达和实现逼真程度进行验证。

(1)复杂度

(2)一致性

(3)可变性

(4)不可见性

三、解决次要问题的突破

(1)高级语言

(2)分时

(3)统一编程环境

四、银弹的希望

(1)Ada和其他高级编程语言

(2)面向对象编程

(3)人工智能

(4)专家系统:包含归纳推论引擎和规则基础的程序,它接收输入数据和假设条件,通过从基础规则推导逻辑结果,提出结论和建议,向用户展示前因后果,并解释最终的结果。

(5)“自动”编程

(6)图形化编程

(7)程序验证

(8)环境和工具

(9)工作站

五、针对概念上根本问题的有前途的方法

(1)购买和自行开发

(2)需求精炼和快速原型

(3)增量开发---增长,而非搭建系统

(4)卓越的设计人员

时间: 2024-11-05 20:31:45

第十六章 没有银弹 ---软件工程中的根本和次要问题的相关文章

软件工程导论 第一、二、十六 章 随笔

第一章 通过阅读第一章,使我对软件工程有了更加深刻的认识,从软件的定义到发展,再到具体实现一个令大众满意的软件的流程和软件开发的各个阶段都有很详细的介绍,更是引用了航空产业的发展历程做了一个比较,使读者能够清晰的理解其含义.对于软件工程与计算机科学的关系和区别也通过现实中的例子给出了详尽的解读.   关于问题 1.我通过阅读第一章的1.2.4节,我对于何为一个"足够好"的软件产生了疑问,足够好是不是就是说明并不完美,没有达到预期,是不是就说明这个软件没有达到客户的要求,不能令客户满意,

第十六章 在文件中搜索文本工具:grep命令 和egrep命令

第十六章 在文件中搜索文本工具:grep命令 和egrep命令 名词解释 grep(global search regular expression(RE)and print out the line,全面搜索正则表达式并把行打印出来) grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 选项 - -a :不要忽略二进制数据 - -A <显示行数>:除了显示符合范本样式的那一行之外,并显示该行之后的内容. - -b :在显示符合范本样式的那一行之外,并显示该行

“全栈2019”Java第十六章:下划线在数字中的意义

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第十六章:下划线在数字中的意义 下一章 "全栈2019"Java第十七章:赋值运算符和算术运算符 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&q

《构建之法》读书笔记之:第一、二、十六章

这周看了邹欣老师<构建之法>的1,2,16章,获益匪浅.这本书写得妙趣横生,用阿超小飞几个人的生活场景和幽默的比喻帮我理解着软件工程的相关概念,让我对软件工程有了初步的了解:原来开发软件并不是我们想的那样简单:上手直接敲代码就可以了,而是会有一套详细的流程规范.下面是我看书时的一些心得笔记,和一些无法自己解答的疑惑,烦请各位老师批评指教. 第一章: 笔记: 软件=程序+软件工程,是否可以通俗地理解为,程序只是死的机器的东西,为什么做(需求分析),做什么(软件设计),做完后这东西是否可行(软件测

读《构建之法》之一,二,十六章有感

大二下学期已经过去两周了,个人感觉,课程方面压力与动力并存,相信一步一步走下去终将得到自己的一份收获. 这几天阅读了<构建之法>的第一,二,十六章,我个人的阅读速度应该属于比较慢的那种,遇到什么不确定的,不理解的概念总要停下来好久,各种百度,否则继续阅读的时候总有种急躁的感觉,老想着前面的停顿,到头来一头雾水,还是跑去理解前面的概念.作业中关于精读的part1,2,3一开始我觉得可能不适合我这种节奏慢又钻牛角尖的,但贵在尝试,以前我的阅读习惯是只读一两遍,虽然第一遍把不理解的概念都慢慢弄明白了

构建之法第一、二、十六章

<构建之法>第一.二.十六章疑问 我通过阅读发现这是一本十分有趣的书.不同于别的书的晦涩难懂,<构建之法>利用浅显易懂的语言,贴近生活的例子向我们讲述了软件工程的内容. 第一章  概论 软件=程序+软件工程 扩展:软件企业=软件+商业模式 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营.和维护上的过程.软件的特殊性有a.复杂性 b.不可见性 c.易变性 d.服从性 e.非连续性.软件工程与计算机科学的区别:计算机科学中与实践相关的部分,都和数据以及其他学科发生关系:

C Primer Plus (第五版) 第十六章 C预处理器和C库 编程练习

第十六章 C预处理器和C库 开发一个包含您需要使用的预处理器定义的头文件 //max.h  #ifndef _MAX_H_     #define _MAX_H_     #define MAX(X, Y) ((X)>(Y)?(X):(Y)) #endif 2.两个数的调和平均数可用如下方法得到:首先对两数的倒数取平均值,最后再取倒数.使用#define指令定义一个宏"函数"执行这个运算.编写一个简单的程序测试该宏. #include <stdio.h> #defin

CSS3秘笈复习:十三章&amp;十四章&amp;十五章&amp;十六章&amp;十七章

第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮动元素.关键字:left.right或both. (2).浮动外围元素:让包含浮动元素的<div>也浮动.选择这种方法一定要在浮动容器后面的任何元素中添加一个clear属性,确保浮动元素落到容器的下方. (3).利用overflow : hidden.另一种常见的方法是在外围的样式中添加以下属性:

第十六章 多态性

相同函数名具有多态性: ①  译时的多态(由函数名来调用时体现):重载:同类,不同参 ②  运行时的多态(用指向不同类的指针来调用): 覆盖:  不同类,同参,基类有virtual(由指针的类型来决定,体现了多态性) 隐藏:①不同类,同参,基类无virtual②不同类,不同参(不论有无virtual)(由指针来决定,不能体现多态性) 1.  为什么要使用多重继承 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数.C++多态性是通过虚函数(virtual)来实现的. 2.