《信息领域热词分析》——六大质量属性
软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。从管理角度对软件质量进行度量, 可将影响软件质量的主要因素划分为六个部分特性(根据GB/T16260.1)功能性,可靠性,易用性,效率,维护性与可移植性。其中功能性包括适合性,准确性,互用性,依从性,安全性;可靠性包括容错性,易恢复性,成熟性;易用性包括易学性,易理解性,易操作性;效率包括资源特性和时间特性;维护性包括可测试性,可修改性,稳定性和易分析性;可移植性包括适应性,易安装性,一致性和可替换性的六个特征及若干子特征。
1. 功能性:软件所实现的功能满足用户需求的程度.功能性反映了所开发的软件满足用户称述的或蕴涵的需求的程度,即用户要求的功能是否全部实现了。
2. 可靠性:在规定的时间和条件下,软件所能维持其性能水平的程度。可靠性对某些软件是重要的质量要求,它除了反映软件满足用户需求正常运行的程度,且反映了在故障发生时能继续运行的程度。
3. 易使用性:对于一个软件,用户学习、操作、准备输入和理解输出时,所做努力的程度。易使用性反映了与用户的友善性,即用户在使用本软件时是否方便。
4. 效率:在指定的条件下,用软件实现某种功能所需的计算机资源(包括时间)的有效程度。效率反映了在完成功能要求时,有没有浪费资源,此外"资源";这个术语有比较广泛的含义,它包括了内存、外存的使用,通道能力及处理时间。
5. 可维修性:在一个可运行软件中,为了满足用户需求、环境改变或软件错误发生时,进行相应修改所做的努力程度。可维修性反映了在用户需求改变或软件环境发生变更时,对软件系统进行相应修改的容易程度。一个易于维护的软件系统也是一个易理解、易测试和易修改的软件,以便纠正或增加新的功能,或允许在不同软件环境上进行操作。
6. 可移植性:从一个计算机系统或环境转移到另一个计算机系统或环境的容易程度。安全性的场景样例:
场景:有黑客对淘宝网进行sql注入,试图非法登陆网站后台,获取用户信息
刺激源:黑客(非授权用户)
刺激:试图采用非法手段来入侵淘宝后台以获取信息
制品:淘宝中的数据
环境:在线环境
响应:对访问用户进行验证,阻拦不正当的用户访问数据
响应度量:查到非法入侵时在1秒以内做出反应,进行阻拦处理,保护数据安全性
非法登陆拦截方式:
1.整个流程示意图:
2.具体实现
非法登录拦截,主要用到的是.net mvc里的过滤器。我们每次在执行一个方法时候,实际上程序会预先对我们设置的一些过滤条件进行验证和判断,而不同的过滤器作用的优先级是不同的,在实现这个拦截功能的时候,用到的主要是全局过滤器
具体的处理思路是这样的:我们现在App_Start文件夹下的FilterConfig.cs文件中注册一个全局过滤器,这个全局过滤器的作用是——进行登录授权,也就是检查你这个用户是不是已经登录的合法用户,如果不是,那么你做的任何其他操作,系统都不会响应,而是一直把你堵在登录界面。
using Console.App_Start;
using System.Web;
using System.Web.Mvc;
namespace Console
{
public class FilterConfig
{
/// <summary>
/// 注册全局过滤器
/// </summary>
/// <param name="filters"></param>
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
//登录授权
//在这里注册了一个名为 AuthFilter的过滤器,每次后台执行某个动作之前,都必须先要通过这个过滤器的审核,审核通过执行某操作,审核不通过有执行某操作。
filters.Add(new AuthFilter());
}
}
}
授权条件核心代码:AuthFilter.cs
using Console.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Console.App_Start
{
public class AuthFilter:ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//如果用户未登录,且action未明确标识可跳过登录授权,则跳转到登录页面
if (!CacheUtil.IsLogin&&!filterContext.ActionDescriptor.IsDefined(typeof(AuthEscape),false))
{
const string loginUrl = "~/Main/Login";
filterContext.Result = new RedirectResult(loginUrl);
}
base.OnActionExecuting(filterContext);
}
}
}
AuthEscape,这是一个定义过滤器特性的类,在这个我们只把它作为一个标志,作为一个可以免除登录授权的标志。我们在执行任何一个方法之前都会经过全局过滤的过滤,只有已经登录的用户才能执行action方法。但是,因为我们的登录信息是在登录之后才被记录的,那我们的登录操作,登录校验的操作不就也被挡在外面了吗,这样一来,岂不是永远无法登录了吗。所以呀,为了解决这个问题,我们就需要给这两个方法每人发一块免检通行证,也就是在他们头上写一个[AuthEscape],只要有了这个标志,那么上面的那句代码就会返回一个true,如果没有,那么就会返回false。假如既没有登录,又没有免检通行证,那么就会被拦在登录界面上。
AuthEscape.cs的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Console.App_Start
{
/// <summary>
/// 用于标记无需登录授权验证的Action,无任何实现,在那个action上面标注这个,就可以逃过全局过滤器的过滤
/// </summary>
public class AuthEscape:ActionFilterAttribute
{