不久前朋友提供了一个系统案例S,粗略地分析了其体系结构,并浏览了大部分代码。从商业的角度来说,S也许是成功的,但是从技术的角度分析,该系统明显存在大量的问题。也就是说,一个成功的产品,却是一个失败的系统。个人认为其具有典型性,可作为设计不足的案例。
总体有规划,具体无设计
不得不说,该系统还是有一定的规划的,至少看起来有个像模像样的架子。但遗憾地是,没有发现总体设计文档。一个陌生人接触该系统的话,可能要琢磨相当一段时间才能有所领悟。当然,该系统也没有详细设计文档。硕果仅存的几篇文档是《数据库设计说明》,并且长时间没有维护,已经和现状相去甚远了。作为有一定规模的系统,这样的状况是不应该的,有必要追究Leader的责任。
工具:工欲善其事,未先利其器
仅有的《数据库设计说明》文档,对表的描述也是用word中的表格,(即使数年前)是不是已经out了呢。保存便于计算机实现的数据库模型应该更值得推荐,花费大量的时间和精力在word中画表格,显然是不明智的选择。对于这个让人失望的系统而言,即使有设计并生成文档,我想也仅仅是冗长的文字最多配两个手绘的图表而已。
界面:远看过得去,近看不忍睹
系统的界面,粗略地瞟一眼还是可以的。一旦具体到页面,尤其区别到不同作者的模块,让人不敢恭维。千差万别谈不上,参差不齐总是有的。可见,开发人员过多地参与了界面开发(可能也算不上),至少过多地和界面打交道,花费了大量的时间和精力,这些都是不必要的成本。如果有良好的界面设计,或者设计者(如果有的话)能够给出方案,实现可配置的界面呈现,系统是不是就显得清爽多了呢?
代码:无规矩不成方圆
编码规则的确定,技术选型的敲定,往往也是在设计阶段完成的。源代码作为某种文档,统一不同开发人员的风格是必须的。该系统存在的问题就是,代码混乱,甚至冗余,注释少得可怜或者不规范。这样的代码谁愿意看呢?我想compiler有自由的话,也不会去编译它。追求新技术是程序员的爱好,而新技术的使用应当有严格的流程。该系统使用了一些不必要的技术和组件,七七八八,使得系统看起来杂乱无章,臃肿不堪。
设计不足导致的问题至少包括以下几条:
系统实现事倍功半
由于缺少周密细致地设计,开发人员在编码过程中常常自由发挥,随意挥洒,经常出现这样那样的问题。然后就是询问,确认,返工,再询问,再确认,再返工。当然,有些问题可能得不到确认,这会导致更大的问题。此时开发人员的思维中只有模块,没有系统,遇到模块交互功能的实现,常常无章可循,临时讨论协议,分歧不难发生。这样的开发过程,也许很能锻炼个人的编码能力,实际上是一种糟糕的开发体验。日积月累,终于有一天好容易“搞惦”了,甚至交付了,验收了。令人痛苦的事情也来了。
系统脆弱
系统在部署并投入运营之后,潜在的问题会逐渐暴露,然后就会出现这样那样的错误,甚至走向崩溃。引起该问题的原因往往包括模块的不兼容性,甚至相互冲突。除了当初的开发人员,其它人不能快速定位问题并着手解决。这时,甲乙双方就会意识到这是一个并不健壮的系统,那么接下来该怎么办呢?
难以扩展
如果我们足够幸运,系统上线一段时间后表现良好。无论出于什么原因,客户有意愿提出进一步的需求。然而,除了大动干戈,我们无法在原有的基础上扩展新的功能。实施进一步的需求,可能会有牵一发而动全身的不良反应。即使加入一个普通的模块,也不得不修改其它的代码,而我们就需要花费更多的时间重新确认系统仍然能正常工作。当客户的扩展需求零碎而又个性化十足时,系统维护会成为一场噩梦,并将为此付出昂贵的代价。
没有可复用性
对于设计不足的系统,可复用性将无从谈起。
分享到:
相关推荐
fail-safe 状态有助于区分安全性和可靠性问题,即使一个系统是不可靠的,它失败时可以到达失败安全态。 三、可靠性设计 可靠性设计是指设计可靠的系统,以避免系统故障。可靠性设计可以通过避免错误、检测错误、...
在其他情况下,测试过程会产生通过/失败标准。该标准确保所述跟踪器的用户规格表中报告的参数是通过一致且可接受的行业程序测量的。设计具有通过/失败标准的测试的目的是将可能出现早期故障的跟踪器设计与健全且适合...
《信息系统分析与设计》PPT是一部详尽阐述系统分析与设计领域的核心知识的教程。它涵盖了从需求收集、系统规划到系统实现的全过程,旨在帮助读者深入理解如何构建高效、可靠的信息化系统。以下是对该PPT中关键知识点...
### 操作系统课程设计知识点详解 #### 一、银行家算法概述 **银行家算法**是一种用于避免死锁的重要算法,由著名计算机科学家Edsger Dijkstra提出。它主要用于操作系统中资源分配问题,通过判断系统是否处于安全...
总的来说,机票预订系统的总体设计是一个复杂的过程,需要综合运用软件工程的原理和技术,包括需求分析、系统架构设计、数据库设计、接口设计、安全性设计等多个方面。作为初学者,了解并掌握这些知识点是成长为专业...
《系统分析与设计》这门课程涵盖了信息技术在企业管理中的核心应用。主要知识点包括: 1. 系统分析:这是系统开发的重要阶段,主要是理解和定义业务需求,通过与用户交流(如面谈)来获取领导意见,形成系统分析...
Linux二级文件系统是一种在Linux操作系统中用于管理文件和目录的层次结构的设计模式。它基于C语言编程,提供了对文件操作的基本功能,如创建、删除和修改。在这个系统中,文件和目录被组织成一个树状结构,每个节点...
1. **需求分析不足**:项目启动前没有充分理解业务需求,导致系统设计不符合实际生产流程。 2. **技术选型不当**:选择的MES系统无法满足企业的特定需求,或者与现有IT基础设施不兼容。 3. **项目管理问题**:项目...
在本项目中,我们关注的是一个基于Java编程语言和MySQL数据库的医院管理系统的课程设计。这个系统是为了模拟实际医院的日常运营,包括患者管理、医生安排、预约挂号、药品库存等多个功能模块。以下是对这个系统及其...
- 成功登录后,系统会在Session中存储一个标记属性,表示用户已登录。 - 如果登录失败,向用户显示错误信息。 #### 六、总结 设备管理信息系统的详细设计与概要设计覆盖了从需求分析到具体实现的各个环节,确保...
酒店管理系统课程设计报告是计算机科学与技术专业学生在学习数据库课程时进行的一项实践项目,旨在提升学生的系统设计、数据库管理和程序开发能力。这份报告由蔡锋同学完成,吴素芹老师指导,完成于2010年7月3日。 ...
开发这个系统的目的就是帮助企业的财务主管部门提高工作效率,...本系统模块设计目标是采用后台工资信息录入,前台动态页面显示的形式,适应网站大规模浏览量要求,形成一个系统化、自动化、高效率的工资管理系统。本系
触发电路设计是逻辑无环流可逆调速系统中的一个重要部分,主要负责产生触发脉冲,控制晶闸管的开关。 9. 保护电路设计: 保护电路设计是逻辑无环流可逆调速系统中的一个重要部分,主要负责保护系统免受过电流、过...
在本课程设计中,主要目标是构建一个基于散列表的电话号码查询系统,该系统能够高效地存储和检索用户信息,特别是电话号码。散列表作为一种数据结构,通过散列函数将键(如人名)映射到数组的特定位置,以此实现快速...
在本实验中,我们将探索如何设计自己的Shell,这是一种命令行解释器,允许用户与操作系统进行交互。Shell是Unix和Linux系统中的核心组件,它接受用户的输入命令并执行相应的操作。让我们深入了解一下这个过程涉及的...
这一阶段对于后续的设计至关重要,因为任何误解或偏差都可能导致项目的失败。 2. **系统分解**:基于确认的需求,架构师将系统整体划分为更小的子系统和组件,形成功能模块。这一过程涉及到对系统的逻辑层次进行...
该课程设计报告主要涉及的是一个基于汇编语言的星座查询系统,旨在让学生通过实践巩固和提高汇编语言编程能力,理解计算机系统内部工作原理,以及掌握BIOS中断调用、系统功能调用、磁盘数据查询与存取等基础知识。...
【标题】中的“基于C++和Qt+mysql实现的物业管理系统”揭示了这个项目的核心...综上所述,这个物业管理系统项目涵盖了C++编程、GUI设计、数据库操作等多个关键知识点,为学习者提供了一个实践和提升技能的宝贵平台。
### 自行车租赁系统毕业设计知识点解析 #### 一、项目背景及意义 - **环境保护需求**:随着经济的快速发展,环境污染问题愈发严峻。自行车作为一种环保、低碳的出行方式,受到越来越多民众的青睐。 - **城市交通...