前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件工程没有银弹

软件工程没有银弹

作者头像
用户5166556
发布2019-04-16 14:11:58
1.1K0
发布2019-04-16 14:11:58
举报
文章被收录于专栏:让技术和时代并行

主要困难

  • 软件开发本身具备复杂性,不可见性,可变性,

次要困难

随着计算机历史的发展,软件开发次要困难从很大程度上已经得到解决

  • 高级编程语言的出现
  • 分时性
  • 开发环境的统一

从某种程度上来说,无论怎么发展,软件本身具有的复杂性都没有从根本上得到解决。

银弹希望

  • 编程语言 首先面向对象编程语言,看起来能够解决软件中的很多细节问题,但是并没有从根本上解决软件概念固有的复杂性,高级编程语言大多都是在内部帮助我们实现一些常规的算法以及函数调用,等API。当我们在设计复杂软件系统时使我们免去设计一些复杂算法,从而提高我们的编程效率,但是因为高级编程语言本身就具备一定的复杂性,如果我们不能全面掌握其精髓,也可能会出现一些我们意想不到的问题。在这个方面来说,也会耗费我们的时间。
  • 专家系统 专家系统就是一个能够辅助我们编程的系统,要想开发一个这样一个专家系统,首先需要一位专家。专家也是在这个系统里面设置他曾经碰到的各种场景,从而使后来人免去一些可以避免的错我,但是软件系统本身具备一定的复杂性,专家设置的这些场景,可能在某些场景下并不适用。
  • 编程环境和工具

统一编程环境,使我们的软件在一个环境上运行成功之后,迁移到另外一个环境下面也是可以正常运行的,从而降低我们学习的成本,再者就是智能的编程工具,能够在开发阶段帮助我们检查我们最常见的语法,等逻辑错误。

  • 人工智能 分为两种,一种是使用计算机来解决以前只能通过人类智慧来解决的问题,另一种是通过某种启发式算法或者基于某种规则的编程技术。像语音识别技术或者图像识别技术就属于第一种情况,但是这种情况并不能给我们软件系统带来什么根本上的帮助。
  • 程序验证 现在很多的软件开发工作都是测试,验证bug和修改bug,我们不可能在系统设计和开发阶段就预料到可能出现的bug。
  • 自动编程
  • 图形化编程 所谓图形化编程就是画出软件执行的流程图,然后内部生成相应的源代码,达到我们想要的目的,但是一个复杂的逻辑结构,要是使用流程图进行表达出来也是非常困难的,事实证明软件流程图是一个非常鸡肋的设计,现在大多程序员都是在开发完成之后,在画流程图,目的是为了让不参与编码的人员懂得一个复杂业务逻辑是怎么执行的。

电脑的屏幕本来都是有限的,如果我们把所有的业务逻辑都展现在流程图上,是完全不可能实现的。

从上所述,软件系统不是一个二维的结构,而是具有错综复杂的结构,是不能通过流程图进行实现的。 - 工作站 通过提高计算机的运行速度,来提高我们编程效率

从概念设计的角度来看颇具前途的方法

  • 购买软件
  • 精炼需求和快速原型
  • 增量开发
  • 培养人才
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年05月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主要困难
  • 次要困难
  • 银弹希望
  • 从概念设计的角度来看颇具前途的方法
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档