项目系列08-软件概要设计

本文阐述了概要设计阶段需要解决的问题,包括实体接口设计、用户接口设计的重要性及其实现方式,里程碑设置的方法,以及数据库设计和重要算法设计的内容。
提问:
    概要设计需要解决哪些问题?设计详细到何种程度为止?



尝试回答:
    概要设计是软件文档中无法省略的一个。它的主要职责是将需求规格说明书中问题
域的需求限制,使用计算机能够方便实现的一些实体加以实现。实体可以是子系统,或
者模块。需求的映射,不仅仅在于各个实体的外部接口上,而且也表现在接口与接口之
间的关联上。

    概要设计可以认为,就是接口设计。它使用接口定义了一个个实体的外部功能描述
。

    在进行概要设计时,很容易忽略掉的一个非常重要的部分,就是用户接口设计。也
即UI设计。在某些公司,为了和用户讨论问题的方便。UI设计会隶属于需求规格文档中
。但是这里的UI设计侧重的是另一个方面。

    对于UI这一层而言,它实际上是一层膜。对外显现为各种用户可操作的界面元素,
及其功能描述。对内,在概要设计这一层,就表现为对之前表述的那些已经定义好的实
体的外部接口的调用。用这种调用关系和逻辑来支持UI的用户接口。

    UI对于概要设计而言,位置位于顶层。类似系统总装模块。如果在文档中忽视这一
模块,在实际构建代码时,就会做一些无用功,或者作出一些需要经过很多修改才能使
用的模块和子系统。

    对于概要设计而言,另一个需要注意的因素是,需要为整个系统安排出几个里程碑
设置。系统不可能持续N个月后,一次性拿出一个成品。相对粗糙,实现有限功能的原
型系统需要尽快创建,提交给需求分析师,供他们与用户一起进行评析。以防止出现因
为理解问题出现的偏差。用户本身的需求可能也并不完备,这些原型系统也可以供他们
进一步提炼、精化需求用。(当然他们的意见此时都必须经过系统变更程序,才能影响
到软件设计师,继而影响到项目实际的实施人员)

    数据库设计,重要的算法设计,也需要在这个阶段完成。不过形如:

    IModule_XXX
    {
        Fun_xxx(param1, param......);
        
        Fun_xxx(param1, param......);

        Fun_xxx(param1, param......);

        Fun_xxx(param1, param......);
    };

    这样的接口说明文档,是概要设计说明书中,最重要的部分。



阐发:
    如果不做软件的外包处理,系统实施至概要设计阶段结束,已经可以进入编码阶段
了。当然,必不可少地,编码人员会对既有设计提出改进意见。有些地方甚至要做很大
的调整。

    在编码阶段需要修改概要设计时,建议每一次修改,都需要创建“文档变更”任务
并在任务中详细描述原因和修改动作概述。这些资料汇集起来,就可以为今后的概要设
计师设计新的系统,提供第一手资料。

    所有的工作,都是一个不断尝试,获得反馈,然后修正错误继续迭代的过程。我很
怀疑,如果一个人足够用心地记录各种失误,不断总结教训,尝试改进的办法,并积极
实验,即使不借助任何外在的输入,设计师也可以达到自我完善的境地。这可能就是所
谓的“经验”吧。

    相关资料,仍然可以查阅需求规格中提到的那份军标。如果没有记错的话,对应的
核心文档应该是SDD.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值