当前软件开发存在的问题

        大家都知道,一个产品或者服务要想好卖必须是用户需要,而且价格低,对于软件开发来说也是一样,在软件开发流程中,组织建模和系统需求,用于寻找什么样的软件是用户想要的,分析和设计致力于降低开发成本,相应的技能文章我已经收录在<<软发件开方法>>。

下面我来看一看,没有掌握上面所说的4项技能,开发者在开发软件时表现的一些情景。

情况一:不进行业务建模,从改进流程中映射系统的需求

情景二:不进行分析,直接把需求映射成设计

拿到系统需求后,不加分析,直接把需求映射为系统的设计,例如就拿人体这个系统来说,工地老板,要这个人可以搬砖,可以抬水泥,可以砌砖,可以点数……这些都是人体能够提供的功能(能做什么),是老板对人体系统的需求,如果开发团队不加以分析,直接把需求映射为设计的话。会得到搬砖系统,抬水泥系统,砌砖系统……但是人体实际是由呼吸系统,消化系统和循环系统,神经系统……等构成,各种各样的需求都是由上面那几个系统相互合作表现出来的,而不是一个功能对应一个部件 ,不分析直接映射为系统的设计,会得到大量重复的代码,维护成本很高

情况三:从设计推导系统的需求,得到一堆假的需求

人体是由心肝脾肺肾等组织组成的,但是工地老板要的是能砌砖的工人(需求),他哪里管你里面是什么做的,你不能说我能提供心脏管理功能你请我吧,我能提供肾管理功能你请我吧,这些都不是需求,是设计;老板想要的和你能给的不相符,也就是说你提供的那些需求都是假的,没有用的,不是用户想要的,违背想要原则

软件开发人员如果缺乏软件工程方面的训练,对上面的工作流程顺序安排及重要性没有概念的话,就会出现两种情况

1 把工作划分为写文档写代码和做设计;他们不明白,不同工作流之间的区别不在于产出物的形式,而在于得到产出物的思考边界和思考的方法

2  颠倒了工作顺序,就是先把软件做出来了,然后再去问用户,是不是用户需要的,一副喧宾夺主的架势,如果是用户需要,还好,不是的话,就会造成开发资源的浪费,对于公司都是极大不利的。

到目前为止,对于工作产出物都没有明确的指明用什么来表达。你可以用各种各样的语言来表达,为了提高沟通的效率,我们一般的使用统一建模语言UML。

你可能感兴趣的:(当前软件开发存在的问题)