那么什么是非功能性需求呢?我将这一类需求理解为:即使这些需求完全不存在,也并不影响应用的主体功能的交付,那么这类需求就称为非功能性需求。例如安装、手册、升级维护工具等。⑥在我们的应用开发中,有大量的工作与技能都是与这些非功能性需求相关的。然而它们并非是不必要的,相反,掌握这些技能是成长为应用开发工程师所必需的。只是这些内容的思维方式与学习方法,与我们此前所讨论的“(严格意义上的)程序”完全不同。
综合上述讨论,应用开发中存在三个层次上的需求,
其中,必须完成的计算需求是通过系统分析,在机器数据层、基础数据层和应用数据层上所得出的功能性需求。独立领域的应用需求,是通过业务分析,在用户的业务领域中所得出的功能性需求。而第三个方面,产品需求则通常是非功能性的6。最后需要强调,有一部分非功能性需求可能同时也是非当前需求,例如版本。
①可以在PC机、移动设备以及其他的各种环境中找到“桌面”与“后台”的不同划分。一种不太严格的划分方式是:后台程序总是以控制台或类似方式与操作者交互,而桌面程序则采用种种“友好的”交互方式。
②这往往被归入产品的设计特性。Marty Cagan(网景副总裁、eBay产品管理及设计高级副总裁)甚至将设计与功能区分开来,将设计特性作为产品属性而非具体的功能属性。参见《程序员》2011年之“Marty Cagan谈产品系列”。
③你当然可以具有这样的技能,一专多能或者无所不能并非坏事,但在这里我们只讨论属于程序员的那个部分。yipindushu.com
④有一类软件叫“绿色软件”,它有一个特定的名称叫"Portable Software",通常是某个应用产品的定制版。比较绿色软件与相应产品的发布包,其中被删减掉的部分基本上就可以称为非功能性需求。
⑤这些狭义的、刻意与其他类型的需求区别开来的产品需求当然也表现为具体的功能,这里的“非功能性”是针对目标用户而言。例如产品互联网产品中存在如何运营、营利的问题,这类运营需求往往不是目标用户所关心的,而是互联网企业对于该产品的需求。
⑥在这一视角下,“版本”这个概念是相当混杂的,它包括功能性需求、非功能性的需求,以及产品和产品线的需求。在下一节中我们会再次谈到:在“应用开发”这一领域中所言的版本,仅是这个概念中的一部分。
对于应用开发中的功能性需求(计算需求与应用需求)来说,一切空间因素所致的复杂性,都可以通过组织形式来解决;一切时间因素所致的复杂性,都可以通过抽象模型来解决。@第一类情况更倾向于工程师思维,在工程师看来,1+1永远都等于2,因此系统总是可以通过部件的持续增加来得到最终的结果。第二类情况则更倾向于管理者思维,在管理者看来,是否需要2就是一个问题。因此他们倾向于先完成1,再讨论2的问题。于是他们只要求以某种形式或方法证明:系统具有可以演化至2的“可能性”。
因此在应用开发语言中也同时有着两个发展方向:一个是从“模块/单元”这一角度出发的软件复用,另一个是从“项目/工程”这一角度出发的工程组织。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
【节应用开发的背景与成因3:http://www.yipindushu.com/xuexifangfa/16543.html
推荐文章
01-06
1 高效学习的有效途径02-11
2 考前一个月这样学习地理最有效01-08
3 成人文化学习方法02-13
4 成人教育孩子学习方法02-13
5 考试软件学习方法技巧成人