Posted on 2006-03-29 00:28
非鱼 阅读(16844)
评论(11) 编辑 收藏 所属分类:
面向对象设计
我们在讨论应用软件的需求和设计的时候,常常会说:“我觉得这个需求不合理。”或者说:“按照我的经验,这样子设计是不合理的。”往往我们这样说的时候,
是根据自己的经验和直觉来判断的。这样的理由往往不被认同和接受,所以最终的结果可能并没有向我们所想象的方向发展,直到最终我们得到一个教训。
为什么应用软件的“合理性”很重要?
理解应用软件的“合理性”,对于软件的构造者非常重要。合理性不仅是最终评价一个软件质量的标准之一,同时还是软件构造过程中的一个重要原则。
黑格尔说:凡是合理的东西都是现实的,凡是现实的东西都是合理的(《法哲学原理》)。这里的“理”并不是指道德、法律或法则,而是指事物的本质和发展规
律。现实是指长期、稳定的现实存在,而不是偶然的现象、表象、感觉、主观想象等等东西。对于应用软件开发而言,现实的系统(尚未实现的系统)是合理的,而
只有目标系统成为一个合理的系统,它才会是现实的,才可以长期、稳定的存在,才可以最大限度的降低系统维护的成本。但现实却是软件的合理性长期得不到足够
的重视,这给后期软件的维护增加了很多不必要的麻烦,而这又往往是人们认识之外的。
从软件自身的发展看来,也附合一般事物的发展规律:随着用户对软件的理解越来越深刻,他们提出和要求也越来越合理。但在早期软件设计,特别是架构设计存在
不合理的情况下,一般只存在两种结果——要么推倒重来,要么变成一堆垃圾,越来越难以维护,最终不得不被放弃。由此看来,应用软件的合理性,特别是在应用
软件生命周期的早期,具有至关重要的地位。
从开发过程的角度来说,合理性是评价一个应用软件的需求、设计的重要指标。我们在实际的开发过程中,总是在有意无意的使用它来衡量一个软件需求可设计的好
坏。但是这种对合理性的应用是自发的,并不具备很大的说服力。在了解合理性的重要性之后,我们应该把对它的应用变成一种自觉的、主动的行为,有意识的去利
用它来帮助我们的应用软件构造。
需求合理性
在需求阶段,主要的任务的就是识别不合理的需求,并努力把合理的需求变得更加合理。
对于应用软件来说,初期的需求获得一般是间接的。即需求分析人员通过用户、客户得到第一手资料,然后在这个基础上进一步完善,逐渐形成一个完善的软件需
求。所以需求在开始的时候主要由用户、客户对于现实系统的认识构成。这个时候的需求受限于用户、客户对现实系统的理解力,用户、客户对于现实系统的不正
确、不合理的认识不可避免的渗入了原始的需求中。例如,当一个工作流完成后,需要通知最初起动流程的用户,这样一个需求可能会被用户认为:当一个工作流完
成时,需要流转到最初起动流程的用户。也就是说,用户可能认识不到“通知”和“流转”的区别。辨别原始需求中的不合理成份,并通过和用户、客户沟通来促使
其认识更加合理,是需求分析阶段的重要工作内容。
另外,软件往往不仅仅是对现实系统的简单模拟。限于现实系统手工操作的难度,很多自动化的、重复的劳动,以及对于系统数据的深加工操作,多数时候并没有包
括在现实系统之内。在目标系统完成后,大规模自动计算的条件已经具备,喜欢思考的用户、客户会很快“发现”这些需求,这也是用户、客户对系统的认识进化的
合理结果。所以当我们考虑软件的合理性时,应当把这些潜在的需求考虑在内。这就需要需求分析人员对系统需求进行深度挖掘,尽可能多的找到用户、客户的潜在
需求。
我们需要理性的需求人员,凭借我们对于技术的深刻理解,来说服、引导、教育用户和客户。但在实际的操作过程中,并不能保证所有的说服、引导和教育都是成功
的。有些用户相当固执,这意味着需求人员有时候不得不妥协。但妥协并不等于接受,需求人员有责任把其对不合理的需求的思考写入需求文档,以便在设计中还能
够补救。
设计合理性
设计阶段在需求阶段之后,所以设计的合理性自然依赖于需求的合理性。另一方面,设计是形成目标系统模型的过程,它又依赖于计算机软件的内容和形式。
首先考虑的是设计对需求的顺应。在需求合理的情况下,顺应需求的设计自然也具有了和现实系统一样的合理性。如果需求的合理性不能得到保证,则做为设计阶段
不可缺少的尝试是使设计本身具备一定的前瞻性,即设计要足够灵活以适应将来需求的变化——在这种情况下,需求是最容易发生变化的。然而设计也不是要覆盖所
有可能的需求变化,而是通过分析找到需求最可能合理的发展的方向,在这个方向上努力。
毕竟应用软件在形式和内容上都囿于计算机这个载体,其设计必然要适应这个世界的游戏规则。从某种意义上说,计算机软件是人类思想动态的、模拟的存在,它是
人类思想的一种表现形式。人类对于外部世界的认识是逐日加深的,它越来越接近这个世界的本质。同时,作为人类思想形式化存在的软件也必然需要保持同步的进
化。这种进化就是软件存在的最基本的思想,它深刻的体现在软件的移交和改进过程中。一直以来,从软件设计理论中所提出的模块化,模块之间的高内聚、低偶
合,到做为架构师主要职责的软件变化的控制和复杂性控制,都是这个思想的具体表现。
另外,软件运行过程中的性能、可靠性要求也是软件合理性的一个方面。它可以被看作思想和数字空间的契合程度。当然,我们不能说一个低性能、低可靠性的应用是合理的。
评论
# re: 应用软件的合理性 回复 更多评论
2006-03-29 08:44 by
我汗啊,你从哪里抄来这些空洞的说教?
# re: 应用软件的合理性 回复 更多评论
2006-03-29 08:48 by
如何评价需求的合理性是很重要的.....我们做需求采集时,要懂得引导客户,并向客户描述使用软件后的前景和操作方式,看看客户能不能接受.....
# re: 应用软件的合理性 回复 更多评论
2006-03-29 09:22 by
受益,谢谢!
最终设计出来的系统要合理,用户才能接受!
# re: 应用软件的合理性 回复 更多评论
2006-03-29 13:11 by
说的太对了,现在我们正在维护的系统就深受不合理之害。营业员做的业务无法跟踪状态,出现了异常情况需要系统部的人去查。经常是客户拿着帐单来投诉,才发现几个月以前的帐单就是错的。
并不是只有技术才是实在的,非技术的都是空洞的。项目的好坏成败,技术因素是很少的一部分。
需求的理解是一种更加重要的技术。要把眼睛从代码上移开,看看客户是如何工作的。
# re: 应用软件的合理性 回复 更多评论
2006-03-29 15:18 by
作为乙方而言,需求也没什么合理不合理,反正都是要实现的,我碰到的客户一般都只对最后的实现结果感兴趣,如果在业务上走不通,或者说与其他需求有冲突,那才是不合理的需求。处于我们的经验,对于一些更好的实现方式客户还是会接受的,但是要从他的角度来解释,千万不能说在技术上这样做比较合理,对于业务人员,这样的说法是站不住脚的。
实现过程我们尽量不要写一些很细节的if else之类的对应某个需求的异常处理,应该就好了。否则对于接手的人来讲就太痛苦了,他们会觉得以前做的需求不合理。
# re: 应用软件的合理性 回复 更多评论
2006-03-29 22:05 by
@LiuYang
在需求阶段,是不应该说“在技术上这样做比较合理”这样的话的,过早进入对实现的考虑,这本身就是不合理的。
# re: 应用软件的合理性 回复 更多评论
2006-04-07 16:24 by
我赞同楼上的说发,ERP实施过程,首先是对业务需求的理解和分析,分析整合完成的业务过程,确定完整的业务环境和条件,然后再决定业务的哪些环节在软件系统中实现,哪些不在软件系统中实现。系统与非系统之间要合力的衔接。这个后面过程才是初步考虑,是否以技术实现。
业务是合理的(虽然可能还不够合理),但技术上是不可能实现完整的业务的,那是不实际的,很多时候要考虑到具体操做用户的素质和水平,才决定技术上实现业务的多少,怎么实现。比如很多情况在实际中操做比在系统上操做更实际、更灵活、更高效,那么就应该确定不要浪费力气再去用技术实现系统。
用户始终是本源,从用户出发考虑才是实际的和合理的。
# re: 应用软件的合理性 回复 更多评论
2006-04-14 18:01 by
@Harryson
先别激动的发抖
系统是否能被用户接受,合理是一个因素,但不是决定性的。
合理又是一个空洞的概念,何为合理,怎么评价,这个不是数据分析,有标竿界定
sap在欧洲很合理,在中国就“不合理”,不一而论。
最后不得不再提到中国特色。
切~
# re: 应用软件的合理性 回复 更多评论
2006-04-26 08:23 by
234223
# re: 应用软件的合理性 回复 更多评论
2006-04-29 19:04 by
不错谢谢
# re: 应用软件的合理性 回复 更多评论
2007-09-17 16:11 by
您好,我们公司是一家中国境内的专业翻译公司,从事各专业翻译服务,包括笔译、口译、同声传译和同声传译设备租赁等。我们需要招聘兼职翻译、同传译员和外籍英文校对人员。
希望有机会合作.