软件需求分析实战
上QQ阅读APP看书,第一时间看更新

1.2.5 功能设计

软件的功能,从本质上说就是对数据进行输入、加工、输出的过程。对于面向数据库的软件,由于是以数据库为核心的,可以理解为两个方面,一是数据的收集与处理;二是围绕数据库对其中的数据进行的4大操作,即增加、删除、修改、查询,简称增删改查。

1.需求用例

需求用例是指用户通过软件解决特定问题、完成指定任务的方式与步骤,以及用到的各种约束、规则等。一个用例,往往对应着用户需要完成的某个明确而具体的任务。一个完整的用例,一般包括用户、前置条件、后置条件、主场景、扩展场景、规则等方面。在实际工作中,不同的团队有不同的要求,有些团队,对需求用例的编写要求非常高,需要仔细描写每一个应用场景;而有些团队或项目的要求就非常简单,甚至根本不需要进行需求用例的分析、编写,就直接进入了功能点设计工作。

2.功能建模

所谓功能建模,指根据系统规划的要求设计功能构成模型,确定系统由哪些功能构成,每个功能应该输入什么,经过功能处理后应该输出什么,每个功能又包括哪些子功能,不断分解下去,直到最底层。

功能点:本书所谓的“功能点”,指可以提供给用户完成某一特定任务的功能组合,例如“客户档案维护”“物料基本信息管理”等,跟研发人员所说的某某类可以提供某某功能是完全不同的两个概念。可以将其看成是传统的功能菜单,大部分情况下可以简单粗暴地认为一个菜单算是一个功能点。当然,并不是所有的功能点都是有功能菜单对应的,例如某些固定时间触发的调度功能,某些给第三方调用的接口等。

原子功能:一个典型的原子功能包括从数据库或界面获得数据,经过加工处理后提交到数据库,再将处理结果反馈到界面这样一个过程。一般来说,原子功能在执行过程中包括获得数据、处理数据、提交结果三个方面。当然,并不是每个原子功能都包括这三个方面,有些功能只要从界面获得数据,不需要经过数据库,有些功能将处理结果直接保存到数据库,不需要反馈到界面,有些简单功能几乎没有任何运算处理的过程。

划分功能:进行功能设计首先要做的事情是进行功能划分,即设计者试图通过哪些功能组合,来解决用户的问题,从而达成企业信息化管理的目标。在这个阶段主要考虑这个软件系统会包括哪些功模块,功能模块由哪些功能点组成,每个功能点包括哪些子功能,每个子功能包括哪些原子功能,每个功能需要输入什么数据、如何处理、输出什么数据,哪些用户使用这些功能,使用这些功能是为了解决什么问题,怎么使用这些功能等。

3.功能优化

可以从灵活性、可重用性、高效性三个方面考虑如何对功能进行优化。

灵活性的优化,可以从这几个方面着手:能不写死的地方不要写死;能不用的规则就不用;尽量兼容一些不明确的需求;慎重对待变化可能性大的需求;抓住业务核心;不偏离业务现实。

可重用性的优化,可以从这几个方面着手:尽量减少功能之间的关联性;注意数据的流动方向;建立团队的通用规范与通用功能。

高效性的优化,可以从这几个方面着手:使用率不同的数据采用不同的保存方式;利用中转数据;外键必填;优先使用客户端资源。