软件工程:“银弹”论
在我看来,软件开发过程至少暂时是没有这样一枚可以绝杀一切的“银弹”的。
就目前来看,软件工程的本身具有的复杂性都没有从根本上得到解决。依旧存在着复杂性,不可见性,可变性,一致性。这些特性就是导致每一个软件开发过程都具有其与众不同的特殊之处的原因。不同的软件要解决的实际问题通常都具有相当大程度的复杂性,数据,状态,逻辑关系的复杂组合以及当前纯人力的软件开发过程都是导致其复杂性的原因。
要想拥有这样一个可以百分之百置敌于死的银弹,我认为有以下的思路;
1.减少软件开发过程中人为的差异
这首先需要有配套的高度统一的标准和工具,能够尽可能得根据开发人员的简易的调控,自动得生成需要的结果。体现在代码,架构等多钟方面。只有减少人为的因素,才能说得到一种高度浓缩的方式去解决全部问题,开发人员只需要从问题中提取出合适的因素。
2.编程语言
首先面向对象编程语言,看起来能够解决软件中的很多细节问题,但是并没有从根本上解决软件概念固有的复杂性,高级编程语言大多都是在内部帮助我们实现一些常规的算法以及函数调用,等API。当我们在设计复杂软件系统时使我们免去设计一些复杂算法,从而提高我们的编程效率,但是因为高级编程语言本身就具备一定的复杂性,如果我们不能全面掌握其精髓,也可能会出现一些我们意想不到的问题。在这个方面来说,也会耗费我们的时间。
3.专家系统
专家系统就是一个能够辅助我们编程的系统,要想开发一个这样一个专家系统,首先需要一位专家。专家也是在这个系统里面设置他曾经碰到的各种场景,从而使后来人免去一些可以避免的错我,但是软件系统本身具备一定的复杂性,专家设置的这些场景,可能在某些场景下并不适用。
编程环境和工具
4.编程环境和工具
统一编程环境,使我们的软件在一个环境上运行成功之后,迁移到另外一个环境下面也是可以正常运行的,从而降低我们学习的成本,再者就是智能的编程工具,能够在开发阶段帮助我们检查我们最常见的语法,等逻辑错误。
5.人工智能
分为两种,一种是使用计算机来解决以前只能通过人类智慧来解决的问题,另一种是通过某种启发式算法或者基于某种规则的编程技术。像语音识别技术或者图像识别技术就属于第一种情况,但是这种情况并不能给我们软件系统带来什么根本上的帮助。
软件工程:“银弹”论相关推荐
- “中文编程”会是解决中国程序员编程效率的秘密武器,成为中国软件工程的“银弹”么?...
一."银弹" 首先在这里解释一下"银弹"的概念,顾名思义就是银质的子弹(Silver Bullet),是古老的欧洲民间传说中能杀死狼人的利器.当然现实中是没有狼 ...
- 人月神话(七)没有银弹-软件工程中的根本和次要问题、20 年后的人月神话
第16章 没有银弹-软件工程中的根本和次要问题 没有任何技术或管理上的进展,能够独立地许诺十年内使生产率.可靠性或简洁性获得数量级上的进步. Part 1 摘要 所有软件活动包括根本任务-打造由抽象软 ...
- 没有银弹-软件工程中的根本和次要问题
没有任何技术或管理上的进展,能够独立地许诺十年内使生产率.可靠性或简洁性获得数量 级上的进步. There is no single development, in either technology ...
- 阅读笔记-软件工程的银弹
(最近看了两篇关于"银弹"的文章,做一点笔记,其中,英文基本上是引用原文) 一.No Silver Bullet: Essence and Accidents of Softwar ...
- 软件工程的瀑布, 大泥球, 教堂,集市,银弹以及我的感想
银弹 Brooks在他最著名的<没有银弹-软件工程中本质性和偶然性>文章里指出,在软件开发过程里是没有万能的终杀性武器(即银弹)的,只有各种方法综合运用,才是解决之道.而各种声称如何如何神 ...
- 软件工程的瀑布, 大泥球, 教堂,集市,和银弹
0x1 No Silver Bullet 1 There is no royal road, but there is a road 软件工程缺乏一剂良药,在硬件成本随着发展速度快 ...
- 也读《人月神话》:没有银弹的软件工程
一.关于人月神话这本书 记得在上大学的时候,就经常听学长和老师讲起<人月神话>,但是却一直没有阅读.记得当时一听到这个书名,还以为是个神马科幻类别的书,结果是个软件工程方面的书籍.这本书是 ...
- 关于软件工程中的银弹
很显然,是没有的.但是,有些身居高位且急于求成的人,会对自己的属下去提这样的要求. 他们要求的内容是:要总结出一种管理办法,非常详细地,就像工艺规程指导工作作业一样,使新来的员工能像螺丝钉一样在管理办 ...
- 第十六章 没有银弹 ---软件工程中的根本和次要问题
在未来的十年内,无论是在技术还是管理方法上,都看不出有任何突破性的进步,能够保证在十年内大幅度地提高软件的生产率.可靠性和简洁性. 一.摘要 所有软件根本任务:打造构成抽象软件实体的复杂概念结构 次要 ...
最新文章
- Spring Cloud Netflix Eureka client源码分析
- 【数据分析】多场景下的算法构建
- computed vs methods
- boost::search_n相关的测试程序
- 迟迟发布的软工实践两月感想
- c语言 关键字const_C ++ const关键字| 查找输出程序| 套装1
- Linux IPC实践(2) --匿名PIPE
- centos下svn和Apache的结合使用
- java 多站点_Java 并发编程整体介绍 | 内含超多干货
- CMD窗口居中的方法(转)
- [转帖]常用项目管理软件介绍
- Cortex-M3 (NXP LPC1788)之开发环境搭建
- My Eighty-third Page - 打家劫舍Ⅲ - By Nicolas
- 用c++两个分数相加并且化简成最简形式,通过类来完成。思想是:求出两个数的最大公约数用来化简和求最大公倍数,具体公式代码中见
- MySQL InnoDB 存储引擎写入磁盘(落盘)的原理\MySQL怎么保证持久性、原子性?(MySQL中是如何实现事务提交和回滚的)\隔离性
- 790. 数的三次方根
- springboot控制台日志打印到日志文件 (请求路径,执行sql,参数等)
- MySQL 数据库 启动 关闭
- 100多个flash常见问题大收集
- Swift-27个知识点