你NFR了吗?

NFR,即非功能性需求 (Non -Functional Requirements) ,即系统能够完成所期望的工作的性能与质量。具体包括如下内容:

– 效率: 软件实现其功能所需要的计算机资源大小,“时间 -空间”;
– 可用性: 用户使软件的容易程度,和学习;
– 可维护性: 软件适应“变化”的能力,系统很容易被修改从而新需求 或采用新的算法、数据结构能力;
– 可移植性: 软件不经修改或稍加就可以运行于同硬环境 (CPU 、 OS 和编译器 )的能力;
– 清晰性: 易读、理解,可以提高团队开发效率降低维护代价;
– 安全性: 在对合法用户提供服务的同时,阻止未授权使;
– 兼容性: 不同产品相互交换信息的能力;
– 经济性: 开发成本、时间和对市场的适应能力。
– 商业质量: 上市时间、成本 /受益、目标市场与老系统的集成生命周期 长短等。

软件工程课程上到这里,软工大项目我也完成的差不多了。至此,我想就软工开发经验,来谈谈NFR中的几点。

首先,我们来看看可用性。我们开发的项目是国际合作处系统,显而易见这个工程是面向对象的,而不是面向过程的。因此,可用性至关重。设想用户要看新闻,他们怀着愉快的心情打开我们的网站,然而,他们在我们的网站中迷失了。。。逛了半个小时,网站给他们的印象就是根本不知道在干嘛,甚至怎么找到新闻都是问题。这样的网站无疑是失败的。网站要易于让用户学习,不管是看新闻的“吃瓜群众”还是国际合作处秘书。

其次,我们来看可维护性。这当然是对我这种“程序员”来说的。毕竟网站是我开发的,维护工作当然得我来做。有谁能比我更了解我开发的网站呢?但是哦,实际公司运营过程中并不是这样的。在公司运营中,开发者与运营者是分开的。因此,开发者要留有足够多的说明文档给维护者。开发者最好能够将程序封装成模块,这样系统除了bug,维护人员可以根据模块尽快找到bug, 并且在模块中应用对应的技术攻克bug,完成debug。

我们接着看可移植性。系统最好可以封装成模块,这样的话就可以有较好的可移植性。比如我们的软工项目如果在本地,就会部署到tomcat上,然后运行。但是,这个项目也可以export成一个包,然后这个包就能够部署到新浪云、阿里云、腾讯云等网络平台上,可以让更多的用户使用。当然,可移植性远不止web项目的可移植,还包括更多的用户程序、系统程序在不同操作系统、运行环境下的可移植性。

系统的安全性,这是一个亘古不变的难题。自从有了计算机,就有了破坏计算机的人;自从有了互联网,就有了破坏互联网规则的人。阴阳守恒,相克相生。我们无法避免网络攻击,因此我们只能魔高一尺,道高三尺。这学期学了软件安全这门课,很有用。余教授讲了许多互联网攻击的手法和实例,并讲了如何识别互联网攻击(识别算法)、如何规避预防互联网攻击。在软工项目中,也会有很多“不配合的用户”。比如,他就用汇编的知识,打开我们网络应用的时候给我们来一个缓冲区攻击破了密码,或者不好好访问我们的web, 而是给我们搞一些僵尸网络等等。作为网站的开发者和维护者,这个软工项目是我的“亲儿子”,我怎么能够容许这种事情肆意发生呢?不可以!因此,我得增加我的网络应用的健壮性(robust)!

最后我们来看看商业质量。根据大王的要求,我们的软工项目是要有真实用户的,真实用户使用web,给反馈,我们接着改。因此,我打算将我们的“上市时间”提早到14周周三,提前一周上市,然后拉用户过来体验,给建议,改,改,改。我们的目标市场首先是哈工大国际合作处秘书,其次是来访学者,工大交流生,出访教授等等。

NFR的更多相关文章

  1. SaaS应用十大关键NFR - 第2部分

    SaaS应用十大关键NFR - 第2部分 在继续上一篇关于SaaS应用的十大关键NFR的博客之后,我们来看看接下来的5个对SaaS解决方案架构产生深刻影响的关键NFR. SaaS应用的关键NFR 多租 ...

  2. 转 SaaS应用十大关键NFR - 第1部分

    非功能需求(SaaS的NFR)是跨越应用功能的跨越所有模块和功能的要求.这些要求深入到应用程序的架构,这是他们得到解决的地方.因此,在SaaS架构阶段之前了解这些NFR对于特定应用程序很重要,因此应用 ...

  3. java web学习总结(三十一) -------------------EL表达式

    一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数 ...

  4. dubbo 配置解析

    1.dubbo 常用配置 <dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心.eg.<dub ...

  5. 北京培训记day2

    后缀三姐妹 P.S.后缀大家族关系:后缀自动机fail指针=后缀树,后缀树前序遍历=后缀数组 一.后缀数组:orz罗穗骞集训队论文 给每个后缀按字典序排序 rank[]表示从i开始的后缀排名多少 sa ...

  6. 最全的linux命令大全,shell运维手册

    shell实例手册 0 说明{ 手册制作: 雪松} 1 文件{        ls -rtl                 # 按时间倒叙列出所有目录和文件 ll -rt    touch file ...

  7. 问题解决——MFC Ribbon 响应函数 错乱 执行其他函数

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...

  8. C++ 基础知识复习(五)

    UML建模部分 70. 什么是UML: 答: Unified Modeling Language, 统一建模语言,是一种标准的图形化建模语言.是面向对象分析和设计的标准表示. 71. UML有哪些图: ...

  9. SSH的端口转发:本地转发Local Forward和远程转发Remote Forward

    关于使用ssh portforwarding来进行FQ的操作,网络上已经有很多很好的文章,我在这里只是画两个图解释一下. 首先要记住一件事情就是: SSH 端口转发自然需要 SSH 连接,而 SSH ...

随机推荐

  1. 弄了一个支持SSL的TCP客户端

    近日需要做一些TCP的收发的调试,到网上去找TCP调试工具,找了好几款,发现不是功能不全就是不支持HEX,更重要的SSL也不支持,于是动手写了一款,叫TCPRunner,有以下特性: 使用异步IO方式 ...

  2. 深入浅出Struts2+Spring+Hibernate框架

    一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司 ...

  3. Maven pom文件常用配置,转载

    什么是POM Project Object Model,项目对象模型.通过xml格式保存的pom.xml文件.作用类似ant的build.xml文件,功能更强大.该文件用于管理:源代码.配置文件.开发 ...

  4. Python学习--05函数

    Python函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.我们已经知道Python提供了许多内建函数,比如print().但我们 ...

  5. iOS开发的知名大牛博客小汇

    王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒.http://onevcat ...

  6. 一、Redis基本操作——String(原理篇)

    小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...

  7. Web API与OAuth:既生access token,何生refresh token

    在前一篇博文中,我们基于 ASP.NET Web API 与 OWIN OAuth 以 Resource Owner Password Credentials Grant 的授权方式( grant_t ...

  8. MVC5 网站开发之六 管理员 1、登录、验证和注销

    上次业务逻辑和展示层的架构都写了,可以开始进行具体功能的实现,这次先实现管理员的登录.验证和注销功能. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MV ...

  9. ASP.NET MVC 5调用其他Action

    引用代码: @Html.Action("Index", "BaseData", new { d = "variety" }) 后台获取参数: ...

  10. 网站实现微信登录之嵌入二维码——基于yii2开发的描述

    之前写了一篇yii2获取登录前的页面url地址的文章,然后发现自己对于网站实现微信扫码登录功能的实现不是很熟悉,所以,我会写2-3篇的文章来描述下一个站点如何实现微信扫码登录的功能,来复习下微信扫码登 ...