软件开发沉思录<一>

《软件开发沉思录》


1. 最后一英里

1.1 理解问题

      从商业的角度来说,之所以要开发一套新的软件,是因为它能够创造更多业务价值。但是如果下列情况之一发生的话,开发新软件反而会得不偿失:

  • 新的软件无法负载业务模式所需的用户量或交易量;
  • 新的软件破坏了遗留数据库中的数据;
  • 新的软件出现无法预期的错误,或者导致遗留系统变得不可靠;
  • 新的软件把敏感数据暴露给了不可信的用户;
  • 新的软件使恶意用户能够进行未授权的操作。     

      新软件给现有业务带来的风险很可能超过它能够提供的价值,所以很自然地,公司越大,在引入新软件时就必须越发小心。这也就导致了旧系统和过时的技术堆积在产品环境中,而不是被替换掉。而与这些堆积的遗留系统集成这一难题又会增加引入新软件的成本与风险。于是这就成了一个恶性循环。

      这个恶性循环使得企业越来越难以改变业务模式,因为做出改变的成本与风险越来越高。没有技术包袱的新公司或许可以在一段时期内将老迈的对手甩在身后,但最终它们自己也会走上同样的衰老之路。

2. 语言的盛景

2.1 编程泛型

      一般而言,编程泛型包括命令式、过程式、函数式、面向对象式、声明式以及逻辑式。

类别 定义 实例
命令式 修改内存状态的语句序列 Fortran,汇编
过程式 通过过程(即一组语句)组织程序 C,Pascal,Cobol
面向对象式 通过对象组织程序 Smalltalk,Java,Ruby
函数式 通过无状态函数组织程序 Lisp,Scheme,Haskell
逻辑式 通过公理和推演规则表述期望结果的特征 Prolog,OPS5
声明式 描述解决方法而不是如何实现解决方法 XSLT,SQL,Prolog

猜你喜欢

转载自yangfengby.iteye.com/blog/771079