`

一个失败的系统是怎样产生的:设计不足

阅读更多

    不久前朋友提供了一个系统案例S,粗略地分析了其体系结构,并浏览了大部分代码。从商业的角度来说,S也许是成功的,但是从技术的角度分析,该系统明显存在大量的问题。也就是说,一个成功的产品,却是一个失败的系统。个人认为其具有典型性,可作为设计不足的案例。

 

总体有规划,具体无设计
    不得不说,该系统还是有一定的规划的,至少看起来有个像模像样的架子。但遗憾地是,没有发现总体设计文档。一个陌生人接触该系统的话,可能要琢磨相当一段时间
才能有所领悟。当然,该系统也没有详细设计文档。硕果仅存的几篇文档是《数据库设计说明》,并且长时间没有维护,已经和现状相去甚远了。作为有一定规模的系统,这样的状况是不应该的,有必要追究Leader的责任。

 

工具:工欲善其事,未先利其器
    仅有的《数据库设计说明》文档,对表的描述也是用word中的表格,(即使数年前)是不是已经out了呢。保存便于计算机实现的数据库模型应该更值得推荐,花费大量的
时间和精力在word中画表格,显然是不明智的选择。对于这个让人失望的系统而言,即使有设计并生成文档,我想也仅仅是冗长的文字最多配两个手绘的图表而已。

 

界面:远看过得去,近看不忍睹
    系统的界面,粗略地瞟一眼还是可以的。一旦具体到页面,尤其区别到不同作者的模块,让人不敢恭维。千差万别谈不上,参差不齐总是有的。可见,开发人员过多地参
与了界面开发(可能也算不上),至少过多地和界面打交道,花费了大量的时间和精力,这些都是不必要的成本。如果有良好的界面设计,或者设计者(如果有的话)能够给出方案,实现可配置的界面呈现,系统是不是就显得清爽多了呢?

 

代码:无规矩不成方圆
    编码规则的确定,技术选型的敲定,往往也是在设计阶段完成的。源代码作为某种文档,统一不同开发人员的风格是必须的。该系统存在的问题就是,代码混乱,甚至冗
余,注释少得可怜或者不规范。这样的代码谁愿意看呢?我想compiler有自由的话,也不会去编译它。追求新技术是程序员的爱好,而新技术的使用应当有严格的流程。该系统使用了一些不必要的技术和组件,七七八八,使得系统看起来杂乱无章,臃肿不堪。

 

设计不足导致的问题至少包括以下几条:

 

系统实现事倍功半
    由于缺少周密细致地设计,开发人员在编码过程中常常自由发挥,随意挥洒,经常出现这样那样的问题。然后就是询问,确认,返工,再询问,再确认,再返工。当然,
有些问题可能得不到确认,这会导致更大的问题。此时开发人员的思维中只有模块,没有系统,遇到模块交互功能的实现,常常无章可循,临时讨论协议,分歧不难发生。这样的开发过程,也许很能锻炼个人的编码能力,实际上是一种糟糕的开发体验。日积月累,终于有一天好容易“搞惦”了,甚至交付了,验收了。令人痛苦的事情也来了。

 

系统脆弱
    系统在部署并投入运营之后,潜在的问题会逐渐暴露,然后就会出现这样那样的错误,甚至走向崩溃。引起该问题的原因往往包括模块的不兼容性,甚至相互冲突。除了
当初的开发人员,其它人不能快速定位问题并着手解决。这时,甲乙双方就会意识到这是一个并不健壮的系统,那么接下来该怎么办呢?

 

难以扩展
    如果我们足够幸运,系统上线一段时间后表现良好。无论出于什么原因,客户有意愿提出进一步的需求。然而,除了大动干戈,我们无法在原有的基础上扩展新的功能。
实施进一步的需求,可能会有牵一发而动全身的不良反应。即使加入一个普通的模块,也不得不修改其它的代码,而我们就需要花费更多的时间重新确认系统仍然能正常工作。当客户的扩展需求零碎而又个性化十足时,系统维护会成为一场噩梦,并将为此付出昂贵的代价。

 

没有可复用性
    对于设计不足的系统,可复用性将无从谈起。

1
0
分享到:
评论

相关推荐

    毕业设计:ASP工资管理系统的设计与实现(源代码)

    开发这个系统的目的就是帮助企业的财务主管部门提高工作效率,...本系统模块设计目标是采用后台工资信息录入,前台动态页面显示的形式,适应网站大规模浏览量要求,形成一个系统化、自动化、高效率的工资管理系统。本系

    IEC 62817:2017 光伏系统.太阳能跟踪器设计资质 - 完整英文版(257页).rar

    在其他情况下,测试过程会产生通过/失败标准。该标准确保所述跟踪器的用户规格表中报告的参数是通过一致且可接受的行业程序测量的。设计具有通过/失败标准的测试的目的是将可能出现早期故障的跟踪器设计与健全且适合...

    操作系统课程设计试验

    操作系统课程设计试验: 当一个进程调用了fork以后,系统会创建一个子进程.这个子进程和父进程不同的地方只有他的进程ID和父进程ID,其他的都是一样。就象符进程克隆(clone)自己一样.当然创建两个一模一样的进程是没有...

    旅游管理系统课程设计报告书.doc

    旅游管理系统 旅游管理系统 1 一、 背景 2 二、 需求分析 2 三、 数据库设计 2 3.1旅游管理系统图 3 3.2数据库设计 3 四、 系统总体结构 4 4.1游客登录界面 4 4.2注册界面 5 4.3 游客查询界面 5 4.4 景点信息查询...

    。net图书管理系统设计方案

    数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数据库就...

    《操作系统》实验二.doc

    设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。 1) 最佳置换算法(Optimal) 2) 先进先出法(Fisrt In First Out) 3) 最近最久未使用(Least Recently Used) 4) 最不经常使用法(Least ...

    基于JAVA的聊天系统的设计与实现

    该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与...

    操作系统实验报告--模拟死锁避免程序

    若可,输出一个进程安全序列、资源分配成功的说明和新的系统资源分配状态表;若否,输出“资源分配失败”和失败的原因:①,申请量大于系统的当前剩余量,②,申请量大于自己的剩余需求量,③,若分配系统将处于不...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    主要从对项目的经济上进行分析评价,一方面是支出的费用,包括设备购置费、管理和维护费用、人员工资和培训费等,另一个是取得的收益。这是个小型的系统,从投入的人力,财力与物力来讲是非常小的,发布出去之需要...

    计算机控制系统的设计步骤.doc.doc

    最后,采用工艺图、时序图、控制流程等描述控制过程和控制任务,确定系统应 该达到的性能指标,从而形成设计任务说明书,并经使用方的确认,作为整个控制系统 设计的依据。 2. 确定系统总体控制方案 一般设计人员在...

    产品质量管理系统-课程设计.doc

    课 程 设 计 "课程名 "软件工程 " "题 目 "产品质量管理系统 " "学 院 "计算机科学与信息工程学院 " "专 业 "计算机科学与技术 " "班 级 " " "学生姓名 " " "指导教师 " " "2011 "年"12 "月"20 "日 " 课程设计任务书...

    计算机控制系统的设计步骤1.doc.doc

    最后,采用工艺图、时序图、控制流程等描述控制过程和控制任务,确定系统应 该达到的性能指标,从而形成设计任务说明书,并经使用方的确认,作为整个控制系统 设计的依据。 2. 确定系统总体控制方案 一般设计人员在...

    分布式数据库系统-复习.doc

    答:分布式事务的一般结构为: Begin Transaction原语:开始一个事务(2分) T1[] T2[] : 子事务或操作序列 : Tn[] Commit原语:事务成功完成的结束(2分) Rollback或Abort原语:事务失败的结束(1分) 5. 论述题 ...

    STM32单片机风扇控制系统设计程序代码.zip

    STM32单片机风扇控制系统,这个是大二学习stm32来进行仿真锻炼的,当时也发现了问题(仿真中io口读取电平失败),查找了很多,才发现是proteus8.6的毛病,存在BUG,据说8.9版本能正常使用,但太大了,就没去安装,...

    走迷宫游戏(java)

    程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处,老鼠只能按照上下左右四个方向行走。 1)图形化的界面,要求有...

    管理信息系统课程设计2013版.doc

    《管理信息系统》课程设计任务书 (2013版) 一、组织形式 要求学生采用"项目小组"的形式,结合具体的开发项目进行设计。具体要求如下: 1、班级按项目小组进行分组,每组4人。 2、每个项目小组选出项目负责人,由...

    ArcGIS教程:五大制图设计原则

    制图员在编制地图和构建页面布局时,会应用到许多设计原则。对比、图形背景组织、层次组织和平衡。综合这些原则形成一个系统,有助于观看和理解地图页面中相对重要的内容。没有这些,基于地图的交流就会失败。

    毕业设计:ASP玩友交流网站的设计与实现(源代码)

    3.2 模块功能 ...用户登录时不需要选择以普通用户或管理员的方式登录,登录处理页面logoin.asp会根据用户名自动获取该用户的权限,并以此为依据来提供用户的操作权限及显示界面。用户登录时用到的数据项为uname 、pass ...

Global site tag (gtag.js) - Google Analytics