zoukankan      html  css  js  c++  java
  • 【分享】 一个典型软件项目的故事

         A公司的OA系统出了点问题。这个系统被他们用来管理器材的库存,当初设计时没考虑到如今这样大量的数据的增长。他们的员工因为这个问题备受折磨。很显然,需要想办法解决这个问题,让系统恢复正常。经过对本地软件公司的一番筛选,A联系到了B软件公司,看看他们能否解决这个库存系统中的问题。他们很喜欢B软件公司的网站,他们没有任何软件开发的经验,但根据网站的外观,他们估计这个软件公司能解决他们的问题。这件事上他们并没有做错,但也不是很对。于是,A公司和B软件公司开始讨论如何解决他们库存系统中的问题。私底下,B软件公司的开发团队知道以前从未处理过类似这样的问题,然而,他们有一群很能干的小伙,他们相信一定能把这个问题解决掉。

        基于一个不符合实际情况的预估,A公司和B公司达成协议一起努力来解决问题。这是他们犯的第一个错误。B公司的开发团队认为,对现有的软件进行简单的修改就能满足他们的需求,并在此假设上制定出了工程估算。起初,按照A公司认可的设计方案,B公司的开发进展神速。不久之后,事情看起来,他们的确是有可能按照最初的设计预算来完成任务。

    除了有一些bug需要解决。起初的bug都很小,就B公司设定这种一日千里的开发速度而言,A公司理解,开发进行中的软件不可能做到十全十美。他们很高兴能 开始使用改造中的系统,对于出现的问题,开发团队已经有了更好的方案,所以,看起来,边改造边使用是没有问题的——尽管有些bug存在。但是,B软件公司的小伙都很能干。没有人希望bug的出现,但因为开发团队专注于解决扩容问题、写 代码来升级系统,所以,有时候,很容易会发生一些意想不到的事情(bug)。随着开发的进行,项目规模的扩大,记住代码中各种编写策略的背后原因变得越来 越困难,但是,他们是群能干的小伙,没有他们处理不了的问题。

         Richard Hammond——B公司的创始人之一,是一个优秀的程序员,他对这个项目做出了巨大的贡献。一天,Richard收到了来自Fifth Speed公司的聘请,Fifth Speed公司是一家非常出名的软件公司,Richard无法拒绝。B公司的开发团队很沮丧,但对于这种事情,他们无能为力,只好顶着压力继 续开发。如果这些bug之前一些麻烦,而Richard的离去相当于火上浇油。他的脑袋里装有大量的关于每个东西为应该如何运作的知识,而现在,软件只能在没有他的情况下独自完成工作。各种征兆开始显露,B公司开发的软件里有些东西并没有按要求运行。Bug成倍增加。每一次新的版本的发布看起来都会导致越来越多之前已经完成的功能不能用。作为解释软件应该做成什么样的唯一参考来源的规格说明书,如今已经增长到没有哪个人能单独掌握。A公司距离他们解决库存系统问题的目标看起来是越来越遥远。每一次新版本的发布都是一次前进,但也是一次后退。他们用这个系统来提升他们的业务,但bug不仅影响了员工的使用,而且影响到了客户。

         公司实际业务上的损失有这些bug的很大功劳。没错,A公司库存系统原始问题已经解决了,但却引入了其它问题,算起来得不偿失。这个庞大的系统本以为能解决A公司所有的问题,但现在看起来更像是一个负担,而不是资产。它每月还在不断的吞噬巨大的财力用于维护,远看不到尽头。可不幸的是,这是如今大多数软件项目的现状。糟糕的计划,没谱的预算,无休无止的“维护”,使得我们软件开发世界对真正的软件项目失去信心。只有我们共同努力,以整个行业之力,才能改进软件项目中估算和不切实际的期望等相关问题。

    在试图解决问题前,一定要尽量理解问题。测试你的代码,即使不为自己,也是为下一个接手你工作的人。

    非凡公司历经13年,服务于政府、企业、金融、能源、运营商等行业,同时拥有超600家高端客户认可;基于SOA架构的工作流平台,E8工作流平台是源码架构+图形化流程设计器+高可靠性流程引擎+无限的扩展能力+丰富的源码组件能帮助您快速开发应用系统。

     

  • 相关阅读:
    Entity Framework Core 2.0 新特性
    asp.net core部署时自定义监听端口,提高部署的灵活性
    asp.net core使用jexus部署在linux无法正确 获取远程ip的解决办法
    使用xshell连接服务器,数字键盘无法使用解决办法
    使用Jexus 5.8.2在Centos下部署运行Asp.net core
    【DevOps】DevOps成功的八大炫酷工具
    【Network】Calico, Flannel, Weave and Docker Overlay Network 各种网络模型之间的区别
    【Network】UDP 大包怎么发? MTU怎么设置?
    【Network】高性能 UDP 应该怎么做?
    【Network】golang 容器项目 flannel/UDP相关资料
  • 原文地址:https://www.cnblogs.com/cenyuxin/p/3549294.html
Copyright © 2011-2022 走看看