NFR
你NFR了吗?
NFR,即非功能性需求 (Non -Functional Requirements) ,即系统能够完成所期望的工作的性能与质量。具体包括如下内容:
– 效率: 软件实现其功能所需要的计算机资源大小,“时间 -空间”;
– 可用性: 用户使软件的容易程度,和学习;
– 可维护性: 软件适应“变化”的能力,系统很容易被修改从而新需求 或采用新的算法、数据结构能力;
– 可移植性: 软件不经修改或稍加就可以运行于同硬环境 (CPU 、 OS 和编译器 )的能力;
– 清晰性: 易读、理解,可以提高团队开发效率降低维护代价;
– 安全性: 在对合法用户提供服务的同时,阻止未授权使;
– 兼容性: 不同产品相互交换信息的能力;
– 经济性: 开发成本、时间和对市场的适应能力。
– 商业质量: 上市时间、成本 /受益、目标市场与老系统的集成生命周期 长短等。
软件工程课程上到这里,软工大项目我也完成的差不多了。至此,我想就软工开发经验,来谈谈NFR中的几点。
首先,我们来看看可用性。我们开发的项目是国际合作处系统,显而易见这个工程是面向对象的,而不是面向过程的。因此,可用性至关重。设想用户要看新闻,他们怀着愉快的心情打开我们的网站,然而,他们在我们的网站中迷失了。。。逛了半个小时,网站给他们的印象就是根本不知道在干嘛,甚至怎么找到新闻都是问题。这样的网站无疑是失败的。网站要易于让用户学习,不管是看新闻的“吃瓜群众”还是国际合作处秘书。
其次,我们来看可维护性。这当然是对我这种“程序员”来说的。毕竟网站是我开发的,维护工作当然得我来做。有谁能比我更了解我开发的网站呢?但是哦,实际公司运营过程中并不是这样的。在公司运营中,开发者与运营者是分开的。因此,开发者要留有足够多的说明文档给维护者。开发者最好能够将程序封装成模块,这样系统除了bug,维护人员可以根据模块尽快找到bug, 并且在模块中应用对应的技术攻克bug,完成debug。
我们接着看可移植性。系统最好可以封装成模块,这样的话就可以有较好的可移植性。比如我们的软工项目如果在本地,就会部署到tomcat上,然后运行。但是,这个项目也可以export成一个包,然后这个包就能够部署到新浪云、阿里云、腾讯云等网络平台上,可以让更多的用户使用。当然,可移植性远不止web项目的可移植,还包括更多的用户程序、系统程序在不同操作系统、运行环境下的可移植性。
系统的安全性,这是一个亘古不变的难题。自从有了计算机,就有了破坏计算机的人;自从有了互联网,就有了破坏互联网规则的人。阴阳守恒,相克相生。我们无法避免网络攻击,因此我们只能魔高一尺,道高三尺。这学期学了软件安全这门课,很有用。余教授讲了许多互联网攻击的手法和实例,并讲了如何识别互联网攻击(识别算法)、如何规避预防互联网攻击。在软工项目中,也会有很多“不配合的用户”。比如,他就用汇编的知识,打开我们网络应用的时候给我们来一个缓冲区攻击破了密码,或者不好好访问我们的web, 而是给我们搞一些僵尸网络等等。作为网站的开发者和维护者,这个软工项目是我的“亲儿子”,我怎么能够容许这种事情肆意发生呢?不可以!因此,我得增加我的网络应用的健壮性(robust)!
最后我们来看看商业质量。根据大王的要求,我们的软工项目是要有真实用户的,真实用户使用web,给反馈,我们接着改。因此,我打算将我们的“上市时间”提早到14周周三,提前一周上市,然后拉用户过来体验,给建议,改,改,改。我们的目标市场首先是哈工大国际合作处秘书,其次是来访学者,工大交流生,出访教授等等。
NFR的更多相关文章
- SaaS应用十大关键NFR - 第2部分
SaaS应用十大关键NFR - 第2部分 在继续上一篇关于SaaS应用的十大关键NFR的博客之后,我们来看看接下来的5个对SaaS解决方案架构产生深刻影响的关键NFR. SaaS应用的关键NFR 多租 ...
- 转 SaaS应用十大关键NFR - 第1部分
非功能需求(SaaS的NFR)是跨越应用功能的跨越所有模块和功能的要求.这些要求深入到应用程序的架构,这是他们得到解决的地方.因此,在SaaS架构阶段之前了解这些NFR对于特定应用程序很重要,因此应用 ...
- java web学习总结(三十一) -------------------EL表达式
一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数 ...
- dubbo 配置解析
1.dubbo 常用配置 <dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心.eg.<dub ...
- 北京培训记day2
后缀三姐妹 P.S.后缀大家族关系:后缀自动机fail指针=后缀树,后缀树前序遍历=后缀数组 一.后缀数组:orz罗穗骞集训队论文 给每个后缀按字典序排序 rank[]表示从i开始的后缀排名多少 sa ...
- 最全的linux命令大全,shell运维手册
shell实例手册 0 说明{ 手册制作: 雪松} 1 文件{ ls -rtl # 按时间倒叙列出所有目录和文件 ll -rt touch file ...
- 问题解决——MFC Ribbon 响应函数 错乱 执行其他函数
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- C++ 基础知识复习(五)
UML建模部分 70. 什么是UML: 答: Unified Modeling Language, 统一建模语言,是一种标准的图形化建模语言.是面向对象分析和设计的标准表示. 71. UML有哪些图: ...
- SSH的端口转发:本地转发Local Forward和远程转发Remote Forward
关于使用ssh portforwarding来进行FQ的操作,网络上已经有很多很好的文章,我在这里只是画两个图解释一下. 首先要记住一件事情就是: SSH 端口转发自然需要 SSH 连接,而 SSH ...
随机推荐
- 企业IT管理员IE11升级指南【17】—— F12 开发者工具
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- ABP源码分析三十:ABP.RedisCache
ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...
- 【PRINCE2是什么】PRINCE2认证之七大主题(1)
进入第一个主题,PRINCE2商业论证:PRINCE2指出,商业论证就是进行判断是否值得对项目进行投资,值不值的问题.PRINCE2的商业论证有四个 在项目开始时,开发商业论证.在整个项目生命周期中, ...
- 自定义view(一)
最近在学习自定义view 一遍看一别学顺便记录一下 1.View的测量-------->onMeasure() 首先,当我们要画一个图形的时候,必须知道三个数据:位置,长度,宽度 才能确定 ...
- 反向代理与 Real-IP 和 X-Forwarded-For
开篇语:开涛新作<亿级流量网站架构核心技术>出版计划公布以来,博文视点遭受到一波又一波读者询问面世时间的DDos攻击.面对亿级流量的热情,感激之余,我们也很庆幸——这部作品质量的确过硬,不 ...
- CI Weekly #6 | 再谈 Docker / CI / CD 实践经验
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
- iOScollectionView广告无限滚动(Swift实现)
今天公司里的实习生跑过来问我一般App上广告的无限滚动是怎么实现的,刚好很久没写博客了,就决定写下了,尽量帮助那些处于刚学iOS的程序猿. 做一个小demo,大概实现效果如下图所示: 基本实现思路: ...
- try...catch..finally
try..catch..finally try{ 代码块1 }catch(Exception e){ 代码块2 }finally{ 代码块3 } catch是抓取代码块1中的异常 代码块2是出异常后的 ...
- 【Win 10 应用开发】导入.pfx证书
这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecer ...
- Android自定义控件之自定义组合控件
前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发 ...