免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3164 | 回复: 4
打印 上一主题 下一主题

软件设计杂谈(ZT) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-17 15:37 |只看该作者 |倒序浏览
软件设计杂谈(一)--需求分析与系统设计    bfbd(原作)
  
关键字     设计,需求分析
  


       需求分析是系统设计的基础。没有需求分析,就谈不上系统设计,好的设计必然是建立在全面、透彻的需求分析之上的。脱离了需求分析的设计必将是无源之水无根之木。不同的需求要用不同的设计方案来满足,不存在放之四海皆准的设计方案。在我初次设计矢量编辑软件时,从自己的经验和习惯出发,认为越傻瓜的越好,用户能用鼠标和快捷菜单轻松完成一切操作就是最好的。但是领导告诉我,我们这款软件所面向的是专门从事绘图、描图的工作人员,他们的工作有一个重要特点就是按件计酬。所以如何能让用户以最快的速度完成绘制工作才是设计重点。因此,用户需要的不是最简单,而是最快。于是,快捷键的设计就成为了重点中的重点。因为这样可以让用户双手并举,成倍地提高工作效率。瞧,连用户的工资如何计算都得关心,否则设计就会偏离方向,成为糟糕的设计。由此可见,全面、充分的需求分析是系统设计成败的关键。

       需求分析是设计方案优劣的重要评判标准。我们知道,用户的满意程度是评价软件好坏的重要标准,而用户满意与否,的关键就在于用户的需求是否能得到满足。只有充分满足了用户需求的软件,才能称得上是好的软件。因此用户需求的满足程度就成为评价设计方案优略与否的重要标准。一般说来,用户的需求总是要分级对待,优先满足重点需求,在工期和人力、物力允许的情况下逐级满足更多的需求。但在大多数情况下,给定的工期和人力、物力总是欠缺的,不是工期太紧,就是人手不足(国内现状)。这就给系统的设计工作提出了更高的要求。设计人员必须认真考虑如何在给定的工期和现有的人力、物力基础之上,满足用户尽可能多的需求,而且,还要在后续的版本中以最小的代价满足用户其余的需求。当然,评判设计优劣的标准并非仅此一条,还有可扩展性,易维护性等,但需求的满足程度无疑是重要的一条。

       需求分析和系统设计是一个互动的过程。需求分析很难做到一步到位,也无法做到真正的充分和全面。所以,需求分析和系统设计之间不是瀑布模型中的上一步和下一步的关系,而是双向互动,互相反馈的关系。首先是需求分析人员提交简略的需求分析文档,然后系统设计人员据此做出大致的系统设计方案,并在方案的进一步细化过程中对需求中的细节和疑问提出进一步细化的要求。需求分析人员则针对设计人员提出的要求和疑问做进一步的深入调查,提交更加详细的需求分析报告。如此反复,直到系统设计得到完善。有些情况下,需求分析和系统设计任务是由同一个人或同一个小组来担任的,则以上的反馈过程就在小组内部的交流中完成了。

       综上所述,需求分析和系统设计是一个密不可分的整体。需求分析既是系统设计的基础,又是系统设计优劣的评价标准,二者是双向互动,互相反馈的关系。

论坛徽章:
0
2 [报告]
发表于 2004-01-17 15:38 |只看该作者
软件设计杂谈(二)--软件设计与设计人员的个人素质    bfbd(原作)
  
关键字     设计
  




优秀的设计依赖于深厚的技术功底。毫无疑问,没有深厚的技术功底,不可能做出好的设计,因为设计最终要落实到技术上,由具体的技术细节去实现。再高的大厦也是一砖一瓦盖起来的,而不是凭着设计人员的想象就能构造出来的。记得上大学时,一位建筑学专业的同学给我讲过,他们设计专业的毕业设计都要拿给结构专业的同学做各方面详细核算。结果有些同学的设计在此时就被判了死刑,因为他们的设计违反了结构力学,无法实现。试想,如果一位设计师设计出来的东西根本无法实现,他还能称之为设计师吗?所以,软件设计必得立足于技术,来源于技术,才能立于不败之地。

优秀的设计来源于广博的知识。一个只懂C++的设计师,只能基于C++语言构建自己的设计方案。但一个懂得多门语言的设计师,就可以在多种语言中做出权衡,使用最优的组合完成设计方案。当然,设计方案中选用哪种语言和开发工具,还要决定于其他的客观因素。但做为设计师,应该拥有这样的能力。广博的知识还有一个好处,就是它能提高你的设计能力,让你触类旁通。

设计人员要谨慎使用新技术。系统设计直接关系到整个项目的成败,来不得半点马虎。所以在选择实现方案的时候要优先使用成熟的而且是开发人员都熟悉的技术,不要人云亦云,冒险尝试所谓的“最新技术”。曾经有一个项目,从需求上看没有任何使用.net的必要性,但上级领导偏偏迷信微软的最新技术,强制要求大家使用.net。结果开发过程中遇到的难题和阻碍一个接一个,白白浪费了许多的时间和金钱,却没给公司和客户带来任何好处。一般说来,技术人员总有一种尝试新技术的冲动。但作为设计人员,就必须克制这种冲动,以免影响项目的成败,或增加不必要的项目成本。

       丰富的实践经验可令你事半功倍。做设计,千万不可纸上谈兵,要懂得实践出真知的道理。经验不仅仅包括技术方面,还有客户经验,团队经验等。拥有丰富的客户经验就能更好地揣摩用户心理,用最小的代价为让用户感到最大的满足。拥有丰富的团队经验就可以把设计更好地落实到每一个开发人员头上,充分利用每一个开发人员的个人优势。

论坛徽章:
0
3 [报告]
发表于 2004-01-17 15:39 |只看该作者
软件设计杂谈(三)--关于数据库设计    bfbd(原作)
  
关键字     系统设计,软件设计,数据库
  


在大中型的软件系统中,数据库占据着举足轻重的地位。同时,数据库设计也是软件系统设计中的重要组成部分。因此,如何做好数据库设计就成为了软件设计工作者的必修课。要做好数据库的设计,应该注意以下几点:

透彻掌握数据库的全部功能。对数据库的功能和原理了解的越透彻,就越能更好地操纵和使用数据库。例如Oracle9i提供了对树形查询的支持,使原来要用递归存储过程或在客户端(或应用服务器)上编写大量代码才能构造出来的树形结果集只用一条简单的SQL查询即可实现。这时,充分利用数据库提供的便利功能岂不就是事半功倍?

深入理解数据库系统的运行机理。所谓数据库的运行机理,是指数据库的实现,即数据库本身是如何编写出来的。初看起来,这跟结构设计没多大关系,但如果深入了解了这些底层运行机理,就可以更好地挖掘数据库的性能潜力,提高系统整体的性能。况且“只用一样东西,不明白它的道理,实在不高明”①。

要抛弃本本主义,一切从需求出发。初学数据库设计时,你会学到ER图,各种范式,关系函数等知识。这些都是数据库设计的理论基础,非常有用,但远远不算够用。如果一味地坚持理论,而不是从实际情况出发,就会陷入本本主义。有些人喜欢用范式来评价数据库设计的优劣,我很不以为然。我认为,需求和性能才是评价设计优劣的首要标准,范式只做参考。

数据库设计力求简单。绝大多数的软件系统中,数据库都处于整个系统的中心地位,因此数据库设计的简化会直接导致客户端(或应用服务器)程序的简化。因为客户端程序员需要了解每一个数据表(或视图)的结构和含义,如果数据表的设计十分简单,就可以节省客户端程序员的学习成本,因而减少了客户端程序员的工作量。同时,数据库设计的简化还能减少数据库设计人员与客户端程序员的交流成本,简化客户端的程序编写,减少客户端程序员出错的几率。案例:C/S结构,Oracle数据库,四个客户端模块,分别由四名程序员负责。由于需要记录和处理大量的历史数据,使对象关系复杂化,数据库的表结构设计也变得错综复杂。客户端程序员不但要理解业务逻辑,还要处理数据的历史逻辑。经过改进后的设计方案中,将历史数据的查询和更新操作封装在视图层之下,由数据库设计人员统一维护。由于客户端程序只访问表示简单业务逻辑的视图层,无需考虑历史逻辑,大大简化了客户端程序员的工作量。即:数据库设计人员增加了10%的工作量,换来的是四个客户端程序员每人减少10%的工作量。

论坛徽章:
0
4 [报告]
发表于 2004-01-17 15:39 |只看该作者
还不错,大家可以讨论

论坛徽章:
0
5 [报告]
发表于 2004-01-17 17:54 |只看该作者
顶,小猪继续努力~:),收藏先
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP