需求变更是罪恶之源吗?

我们身处软件工业时代这个令人振奋的时代,却面临着遗留系统这个令人尴尬的难题。事情总是这样的:软件最开初开发的时候总是非常清晰,清晰的需求、清晰的设计、清晰的代码,清晰的程序结构让人赏心悦目,甚至有些自我陶醉。随后,软件开始需求变更,每变更一次软件的质量就下降一次。这样,软件经过数次的变更以后,需求文档变得模糊不设计思路跟不上更的脚步,程序代码则随业务逻辑复杂臃肿不堪,程序员开开发工作得不再是一种乐趣。时间的推移,经过数年、十次的需求更,情况变得越越糟,软件质量像滚雪球一样直线下降。难道需求变更就是软件变糟的罪恶之源吗?

然而这不是真相,这是一个真实的谎言。如果我们不明白软件发展的规律,我们是不可能明白其背后的真相。件,特是管理件,其实质对真实世界的模。我过对真实世界的模实现计算机的信息化管理,提高我的生效率。然而,真实的世界复杂而多的,我们认识世界却是一简单复杂循序渐进程,是一无法改的客观规律。因此,毫无疑,遵循着这样观规律,我开发过程必然也是一简单复杂循序渐进程。

最初,我们开发的是一个对真实世界最简单、最主要、最核心部分的模。因为简单,我的思路晰而明了。但是,我件不能永只是模那些最简单、最主要、最核心的部分。我的客在使用件的程中,如果遇到那些不那么简单、不那主要、不那核心的情况时,我件就无法理了,是客如何不能接受的。因此,但件的第一版本交付客以后,客的需求就变更

的需求永会脱真实世界,也就是真实世界不存在的事物、象、系永都不可能出件需求中。但是,真实世界的事物、规则与联不是那简单与清晰的。着我对它得越致,程序的业务逻辑开得复杂而不再那么清晰、易于理解,就是量下降最关键因。

任何一个软件的设计与软件的复杂度有密切的系。简单软件有简单软件的设计,复杂软件有复杂软件的设计,它们是不一样的。但是,软件的发展规律却是一个由简单软件转变为复杂软件的过程。正因为如此,我们最初的设计通常是简单软件的设计,然而随着软件复杂度的提升,我们是否调整过我们的设计,向复杂软件的设计过渡呢?非常遗憾的是,通常情况却不是这样,起初进行简单软件设计以后,虽然软件在越来越复杂,但开发人员没有通过重构对软件结构进行调整,而是就着简单软件的设计,添加复杂的程序逻辑。这才是所有遗留系统面临的真正问题:不是因为软件需求在变更,而是因为当需求变更以后,软件业务逻辑在变得越来越复杂时,我们没有通过系统重构调整原有的系统结构,以适应新的需求。正因为如此,我们的遗留系统将变得越来越难懂,越来越难于维护,任何一项变更都成本巨大。

说了这么多,你也许还没有什么感觉。来说吧,客户资料是多系都必记录的重要信息。起初,我程序简单,客户资料只记录了一些简单的信息,如客、地址、电话等等,但着程序复杂度的增加,客户资复杂。比如,起初“地址”字段就仅仅需要一字符串就可以了,但着需求的更,它开始有了省、城市、地、街道等信息。还会编码、所、派出所等信息。起初增加一个两个字段们还可以在“客信息表”里合一下,但后要及时调整我设计地址提取出来单独形成一“地址信息表”。如果不及予以整,“客信息表臃肿,由10来个字段,5080、上100

信息表且如此,业务操作更是如此。起初的业务操作是如此的简单而明了,以至于我不需要花太多的就可以将它们描述楚。比如票操作,最初的需求就是具的票据信息取出,保存,并统计出本月票量及金这样个简单操作,设计成一个简单业务类”合情合理。但后的业务逻辑变得越复杂,我检查是否存在、票人是否有限、票据是否存,等等。起初的票方式只有一,但着非正常票的加入,票方式不再一,而统计方式也业务的不增加,件代模也在生着化。如果这时不及时调整我设计,而是所有的程序都硬塞业务类”,那程序量必然退化。业务类”由原有的十行,激增到百行,甚至上千行。这时的代码将难阅读维护它将变成一痛苦,毫无趣可言。

对这样 状况 ,我 们应当怎样 走出困境呢?毫无疑 ,就是重 件的重 票前的校 验真 业务类 它们 是否 应当 被提取出 ,解耦 成一 的校 验类 。正常 非正常 应该写 在一起 ?是否我 们应当 业务类 ”抽象成接口,以及正常 非正常 票的 实现类 就是我 大家的良方: 当软 件因 需求 更而 渐渐 退化时, 件重 改善我 结构 ,使之重新适 应软 件需求的 化。(续)


你可能感兴趣的:(软件开发,软件质量,需求分析)