软件质量的特性
软件同时拥有内在和外在的质量特性。
外在特性是指该软件用户所能感受到的部分,包括下列内容。
1。正确性。指系统规范,设计和实现方面的错误多少程度(实现是否与设计一致,是否满足用户功能)。
2。可用性(易用性)。指用户学习和使用一个系统的容易程度。
3。效率(性能)。指软件是否尽可能少的占用资源,包括内存的cpu,执行时间等。
4。可靠性。指在指定必须条件下,一个系统持续工作的能力,应该有很长的平均无故障时间。
5。完整性(安全性)。指系统程序或者数据对于授权访问的限制。
6。适应性。指系统在不同环境下运行的适用范围。
7。精确性。指一个投入生产的系统,输出结果的误差程度。
8。健壮性。这指得是系统在接收无效,错误输入或者处于压力环境时继续正常运行的能力。
内在特性
1。可维护性。指是否能够很容易的对系统进行修改或者增加功能,提高性能,以及修正缺陷。
2。灵活性。假如一个系统是为特定用途或者环境而设计的。那么该系统被用于其他目的或者环境的时候,需要对系统修改的程度。
3。可移植性。指为了在原来的设计的特定环境之外运行,对程序的修改的难易程度。
4。可重用性。指系统的某部分可被应用到其他系统中的程度。以及此项工作的难易程度。
5。可读性。指阅读并理解系统代码的难易程度。尤其在细节语句的层次上。
6。可测试性。指的是你可以进行何种程度的单元测试或者系统测试,以及在何种程度上验证系统是否符合需求。
7。可理解性。旨在系统细节语句层次上的理解整个系统的难易程度。与可读性相比,可理解性对系统提出了更高的内在一致性要求。
要让所有的特性都表现得尽善尽美是绝无可能的。需要根据一种互相竞争的目标寻找出一套优化的解决方案。但注重某一个特性并非意味着必须牺牲另一个特性。一个无法从此同内部理解或者维护的软件,其缺陷也是很难修正的。而这又会影响正确性和可靠性等外在特性。
如何改善软件质量的技术
软件质量保证是一个需要预先计划的,系统性的活动,其目标就是为了确保系统具备人们所期望的特性。
软件质量目标
改善软件质量的一种强有力的方法,就是根据前面章节所提到的各种外在和内在特性,明确定义出软件质量的目标。
明确定义质量保证工作
在保证质量工作中,一个常见的问题是质量被认为是次要目标,快速而糟糕的建成已经成为了普遍现象。在这种组织中,胡乱堆砌劣质代码并能快速“完成”的程序员,可能比高质量并确保程序良好工作的程序员得到的报酬还要高。所以团队必须应该向程序员说明,质量应该放到第一位。如此一来,程序员就会作出反应。
测试策略
执行测试可以为产品的可靠性进行详细的评估。质量保证的一部分就是制定出一套与产品需求,架构以及设计相关联的测试策略。许多开发人员把测试作为质量评估和质量改善的首要方法,这样的想法会使得测试不堪重负。
软件工程指南
在开发过程中,指南应当控制软件的技术特性,它应当贯彻到所有的开发活动中去。包括问题定义,需求分析,架构设计,构建以及系统测试。
非正式技术复查
许多软件开发人员会在正式复查之前检查自己的工作。非正式复查(review)包括对设计和代码检查或者和其他同事一起将代码走查一便。
正式技术复查
管理一个软件工程过程的工作之一。就是要在低成本的环节里抓出问题。质量部门周期性的测试或者复查,以检验某一阶段的产品时候已经具备了进入下一阶段前所要求的质量。质量部门通常从需求分析到架构,从架构到构建,以及从构件到系统测试之间的转换过程。
外部审查
外部审查是一种用于确定一个已经开发产品或项目状态的特殊技术复查方法。一个外审小组由开发人员组织以外的人员构成,并且向委托人汇报审查结果,这个委托人通常是经理。
质量保证的开发过程
良好的对变更的控制过程。
结果量化。
制作原型。制作圆型是指开发出系统中的关键功能的实际模型。经过验证,构建原型能产生更完善的设计,更贴近用户的需求,以及更好的维护性。
什么时候进行质量保证工作
缺陷可能在任何阶段襂透到软件中,因此,你需要在早期阶段就开始强调质量保证工作,并且将其贯彻到项目余下的部分中。在开工之时,这一工作就应该添加到项目计划中。
分享到:
相关推荐
总的来说,理解和掌握动态代理以及Java 8的方法引用对于Java开发者来说至关重要,它们不仅可以提升代码质量,还能帮助我们编写更加高效和优雅的程序。通过深入学习和实践这两个主题,开发者能够更好地应对现代Java...
1. **开源项目**: 开源软件意味着源代码对公众开放,允许任何人查看、使用、修改和分发代码。这种透明性和可定制性使得开源项目成为开发者社区中非常受欢迎的形式。在“bukalapak-bulog”项目中,开发者可以贡献自己...
首先,设计者利用计算机软件创建提花图案,这些图案由一系列的指令代码组成,代码对应于织物上的纱线颜色和位置。然后,这些指令被传输到电子提花机的控制系统,由微处理器执行。控制系统通过电磁铁驱动装置来操作...
在IT行业中,Go语言因其简洁、高效和强大的并发特性,被广泛用于开发各种类型的应用,包括命令行工具。本文将详细解析"Go-github-selfupdate"这个库,它为Go命令行工具提供了自我更新功能,使得开发者能够轻松地集成...
Android-ZBLibrary是一款专为Android开发者设计的MVP(Model-View-Presenter)快速开发框架,结合了优秀的UI组件,旨在提升开发效率和代码可维护性。MVP是一种设计模式,它将业务逻辑、界面展示和数据处理进行了明确...
- **反编译质量**:反编译的代码可能不会完全匹配原始源代码,特别是对于使用了混淆技术的代码。 - **安全风险**:不要在生产环境中使用未经验证的反编译结果,因为它们可能包含错误或恶意代码。 - **学习和研究**:...
总的来说,JDK 1.8 32位版本对于那些在32位环境下的开发者来说是不可或缺的工具集,它带来了诸多改进和新特性,提升了开发效率和代码质量,同时也保证了与旧系统的兼容性。安装和使用这个版本的JDK,开发者能够利用...
Java JDK 1.8是Java开发...总之,Java JDK 1.8是Java开发者的重要工具,其新特性如Lambda表达式、Stream API等大大提升了开发效率和代码质量。对于Windows x64用户,只需简单几步即可完成安装,快速投入Java开发工作。
Java开发在互联网行业中占据着核心地位,而Java 8作为其重要的版本,引入了许多创新特性,极大地提升了开发效率和代码质量。本篇幅将详细解析Java 8的主要知识点,为学习Java 8新特性的同学提供全面的指导。 1. **...
最后,本文强调了在提升查收查引服务质量和服务效率方面,国内图书馆所做的积极探索和实践,以及网络化、信息化和数字化的实现路径。通过研究和分析,确定了开发查收查引软件的方案,旨在为图书馆用户提供更好的服务...
Monaco Editor是由Microsoft开发的开源代码编辑器,最初为Visual Studio Code提供支持,现在也广泛应用在Web开发中,特别是需要提供高质量代码编辑体验的场景。Monaco Editor支持多种编程语言,包括JavaScript,它...
2. 引入库:在Python代码中导入所需的服务,如`from mypy_boto3_athena.client import AthenaClient`。 3. 创建客户端:使用boto3的常规方式创建Athena服务客户端,如`athena_client = boto3.client('athena')`。 4....
- PDF.js的核心目标是消除对Adobe Acrobat Reader等桌面软件的依赖,让用户在浏览器中就能安全、高效地查看PDF文档。 - 它基于HTML5技术,利用Canvas元素呈现PDF页面,实现跨平台兼容性。 2. **主要功能**: - ...
CI/CD是现代软件开发中的重要实践,它通过自动化测试、构建和部署过程,确保代码的质量和快速迭代。因此,这个库可能包含了一系列用于配置、执行和监控CI/CD流程的函数和工具。 在Python中,这样的库通常会提供如下...
《PyPI官网下载 | mypy-boto3-translate-1.12.20.0.tar.gz》 在Python的世界里,PyPI(Python Package Index)是最...通过PyPI下载的这个1.12.20.0版本,开发者可以充分利用类型检查的益处,提高代码质量和开发效率。
Java Development Kit(JDK)是Java编程语言的核心组件,它为开发者提供了编译、调试和运行...无论是新手还是经验丰富的Java程序员,都应该了解并掌握JDK 11的新特性,以充分利用这些改进来提高开发效率和软件质量。
2. **方法引介**:这是一种将简单的方法声明或静态导入的语法糖,使得代码更加紧凑和可读。 3. **Stream API**:提供了对集合数据进行大量操作的新方式,如过滤、映射和规约,使得处理数据流更加高效。 4. **Date...
在信息技术领域,软件开发人员经常使用各种工具和库来提高效率和代码质量。neon-0.29.6.tar.gz就是这样一个重要的开源库,它在开发过程中扮演着关键的角色。本文将详细探讨neon库的特性、功能以及如何利用这个压缩包...
与传统的".tar.gz"或".tar.bz2"源代码包相比,".whl"文件无需编译,可以直接安装,提高了软件部署的速度和效率。这个文件名中的"py3-none-any"表示该库适用于任何Python 3版本且不依赖特定平台,具备良好的跨平台性...