胖子马

导航

软件设计阶段应注意的几点问题

从需求出发进行设计

需求为软件开发人员定义了应该创建何种系统。通过需求来记录客户需要,这些需要是为了使客户能够创造价值,软件必须要解决的。同样,应该通过需求来驱动所需的全部软件活动,从而实现最终目标:交付能够为客户创造价值的软件

实际上,在记录了需求之后,软件团队需要一直遵照这些需求,并且确保按照这些需求来进行设计和编写代码。

因此,我们在对软件进行设计的时候,一定要将需求在我们的设计中体现,不能脱离了需求,也要为之后的需求变更做好准备。

结合实际场景

我们在设计软件的时候,一定要注意软件实际运行的场景。比如做一个调研系统,一定要清楚这个系统的访问人数多少,进行一次调研,数据库中的数据量会达到多少。如果数据量较大,那在设计阶段就要考虑到后期报表数据加载问题,不能因为数据量较大导致报表数据加载过慢。

模块的划分

模块划分在设计阶段也是一个非常重要的点。一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。

在模块划分的过程中,最好能创建一个公共类库(Common),各个模块的公用部分,不管是前段的js文件、css样式还是后台的公用方法,最好都能放倒Common中,方便其他项目的相互调用。

数据库设计

大多数人都很急切,在了解基本需求之后希望很快的进入到编码阶段(可能只有产出代码才能反映工作量),对于数据库设计思考得比较少。

这给系统留下了许多隐患。许多软件系统的问题,如:输出错误的数据,性能差或后期维护繁杂等,都与前期数据库设计有着密切的关系。到了这个时候再想修改数据库设计或进行优化等同于推翻重来。

数据库的设计,不仅仅是简单的整理出表结构,还需要整理表跟表之间的关系,多个模块是合成一张表还是拆分开去创建关系好,都需要在设计阶段规划好。在设计表关系的时候,也要探究一下是否要添加适当的冗余字段。一些冗余字段是为了便于日后维护、分析、拓展而添加的,这点是非常重要的,适当的添加冗余字段,对产品的性能也是有一定影响的。

利用索引优化系统性能是显而易见的,对所有常用于查询中的Where子句的列和所有用于排序的列创建索引,可以避免整表扫描或访问,在不改变表的物理结构的情况下,直接访问特定的数据列,这样减少数据存取时间;新建的索引效能最好,因此定期更新索引非常必要。

在数据库物理设计时,如果想要提高数据库运行效率,需要降低范式,增加冗余, 少用触发器, 多用存储过程。当计算非常复杂、而且记录条数非常巨大时(例如一千万条或以上),复杂计算要先在数据库外面,以文件系统方式用编程语言计算处理完成之后,最后才入库追加到表中去。

数据库的设计规则还有好多好多要注意的地方,在我们进行软件开发之前,一定要拿出一定的时间来好好的设计数据库,数据库设计不好,等到了编码阶段,会暴漏出好多隐藏好多未知的问题。

合理选择存储方式

       对于软件开发,提到存储方式,一般人都会想到数据库。但有时候为了提高性能,加快客户的浏览速度,可以适当的选择缓存操作、文件操作等方法。空间换取时间,缓存永远计算机设计的重中之重,我们在软件的设计阶段,一定要考虑到缓存的操作。什么地方跟数据库交互频繁,就要去考虑是否可以加入缓存或者对XML的操作。

多参考多查阅

       当一个项目刚刚做完需求以后,开始做设计之前,不要马上就开始设计你的产品,最好能借助互联网,去查找一些类似的项目,参考已经成型的网站、论坛。在他们成功的基础上去吸收精华,把别人好的东西吸取到自己的项目中。这样以来,不但能完善自己的设计,还能在别人的产品中得到更好的灵感。

设计思路一定要全面

       设计一个软件,可以满足功能、满足客户需求这是最普通的想法,也是最基本的理念,做到这两点其实并不是很难。但是,从非功能性需求来说,其实是架构的一个难题,提到有安全方面、性能方面、可扩展性、可伸缩性,要求都很多。所以,在软件设计的时候,不仅要设计好功能性需求,还要想到非功能性需求,只有考虑全面了,我们设计出的产品才能得到客户的肯定,才能得到更高的满意度。

posted on 2014-07-03 11:13  胖子马  阅读(2586)  评论(2编辑  收藏  举报