、扩充,广泛应用于其他相关应用,如专业培训机构、网络化学校教育等。
三、软件产品的非功能性需求定义
软件产品的需求可以分为功能性需求和非功能性需求。其中软件产品的非功能性需求是常常被轻视、甚至被忽视的一个重要方面。其实,软件产品非功能性定义不仅决定产品的质量,还在很大程度上影响产品的功能需求定义。如果事先缺乏很好的非功能性需求定义,结果往往是使产品在非功能性需求面前捉襟见肘,甚至淹没功能性需求给用户带来的价值。
所谓非功能性需求,是指软件产品为满足用户业务需求而必须具有的、除功能需求以外的特性。软件产品的非功能性需求包括系统的性能、可靠性、可维护性、可扩充性、对技术和对业务的适应性,等等。下面对其中的某些指标加以说明。
1、系统的完整性
指为完成业务需求和系统正常运行本身要求而必须具有的功能,这些功能往往是用户不能提出的。典型的功能有:联机帮助、数据管理、用户管理、软件发布管理、在线升级,等等。
并不是所有的系统都必须包括以上所有的功能,而是可以根据产品的使用环境和企业的产品发展决策进行挑选。例如,在线升级、软件发布管理适用于具有因特网或内网环境的软件产品;而数据管理对于产生数据存储的产品则是必须的,设计人员不应假设用户同时是一个合格的DBA,而且系统所产生信息的分布、关系,也不是DBA所应该了解的内容。因此,完整的系统应该包括数据备份、恢复、日志管理、垃圾数据清除等基本功能,哪怕这些功能的核心只是一条语句或命令。用户管理功能是另一项必不可少的功能,它定义哪些用户可以以什么样的功能使用系统。好的用户管理功能不仅可以有效控制用户对系统的使用,使系统处于一个安全、负载合理的运行状况,还能提高系统的应用适应性。
2、系统的可扩充性与可维护性
指系统对技术和业务需求变化的支持能力。当技术变化或业务变化时,不可避免将带来系统的改变―不仅要进行设计实现的修改,甚至要进行产品定义的修改。好的软件设计应在系统构架上考虑能以尽量少的代价适应这种变化。常用的技术方法有面向对象的分析与设计以及设计模式。
3、技术适应性与应用适应性
系统的适应性与系统的可扩充性和可维护性的概念相似,也表现产品的一种应变能力,但适应性强调的是在不进行系统设计的修改的前提下对技术与应用需求的适应能力。软件产品的适应性通常表现为产品的可配置能力。好的产品设计可能要考虑到运行条件的变化,包括技术条件(网络条件、硬件条件、软件系统平台条件等)的变化和应用方式的变化,如在具体应用中界面的变化、功能的剪裁、不同用户的职责分配和组合等。
对以上重要的非功能性需求进行逐一分析后,就可以开始进行产品功能设计了。实际上,非功能性需求定义将反映到系统的功能设计中,表现为系统的架构。下一节中将会描述怎样实现系统的适应性。
四、软件产品的功能设计要点
1、产品核心功能的选取
软件产品的设计,一定有一个明确的目标:或是为了解决某个或某类具体的应用问题,或是为解决问题提供一个或一组工具。产品的目标决定了产品的核心功能,产品的其他功能都是对这一功能的补充或围绕这一功能提供的相关服务。
适当选取核心功能,有几点原则:
(1)规模适当,不贪大求全,坚持"有所不为"。具体来说,在一个产品中,非核心功能尽量的简化和弱化。以"多媒体远程教学系统"为例,核心功能应该是基于网络的多媒体远程教学,包括同步教学和非同步教学。与教学相关的学籍管理、教务管理、答疑考试、收费管理等辅助功能则采取最小化原则进行设计。这样既可以突出产品的技术特点,又可以避免以己之短搏人之长,显得产品在培训教育方面不够专业。等到核心功能稳定
项目经理胜任力免费测评PMQ上线啦!快来测测你排多少名吧~
http://www.leadge.com/pmqhd/index.html