当前位置: 首页 > 编程日记 > 正文

如何衡量一个项目的交付质量???

昨天与部门开会讨论项目的完整规范交付流程,参会的涉及到项目相关的所有人员,总结一下供大家讨论交流:

1、小插曲:我们把客户的干系人、自己的干系人对项目的影响做了一个排名并打分,结果很有意思:客户的领导和我们的领导的满意程度被排在了第一位,最终用户排在最后一位,中间是项目经理啊、关键用户啊、客户经理、服务经理、安全经理啊等等,感觉是不是有点不太正常??

2、核心的问题:如何衡量一个项目的交付质量?关于这个问题大家吵得不可开交,最终也没有一个结果,每个不同角色的人看到的角度是不一样的,对于领导层,可能就只有一个指标:领导是否满意? 但这是完全凭感性的,而且影响判断的因素很多,比如客户关系好不好,而且满意、十分满意完全是随口一说,从理性角度来看或者说从技术角度来看,如何给一个项目进行比较客观的评价呢或者更精确的定量呢?(成本问题可以排除在外,它不是项目的质量问题要考虑);

1)稳定性:官方解释,指软件在一个运行周期内、在一定的边缘条件下,软件的出错机率、性能劣化趋势等。但稳定性本身的定义也比较模糊,目前只能以可运行时间来衡量,如果项目没有出现宕机或者不能访问的情况,可以认为稳定性是100%? 但系统访问慢算不算??慢到什么程度算可以接受,什么程度算不可接受?

另外,如果有部分人正常部分人不正常,这又如何去算??如果只有少数人访问不正常,可能影响的因素也比较多,比如局部网络,比如用户电脑本身的问题。

2)可用性:官方解释:指的是产品对用户来说有效、易学、高效、好记、少错和令人满意的程度,即用户能否用产品完成他的任务,效率如何,主观感受怎样,实际上是从用户角度所看到的产品质量,是产品竞争力的核心。 这又是一个很主观的因素了,同样的东西,有人觉得好用有人会觉得不好用,每个人的操作习惯不一样,咱们又不是像apple那样的东西,大家都说好,而目前如何定量评价可用性呢??估计只有满意度调查了,但满意度调查本身就不是一个严谨的东西;

3)可维护性:官方解释:可维护性是指理解、改正、改动、改进软件的难易程度。这个也是同样的问题,做开发的当然都明白这个道理,但是不是我们把所有的文档都补齐、所有的代码注释都加上就是一个好的可维护性?软件的理解改动涉及到很多,比如你的架构设计,你的数据库设计,你的代码质量(关于代码质量又是一个可以讨论的话题了),这些东西没有一个标准去衡量,同样的架构,你可能认为不错,换成另一个人未必就觉得好,客户也没有能力到检察到代码层面,所以这个指标完全在于交付方怎么忽悠了;

4)可扩展性:简单地说,可扩展性就是关于如何处理更大规模的业务。同样,道理都明白,但如何衡量?如果过度考虑这个可扩展性,又存在一个过度设计的问题,如果是自己的项目,你可能会尽心尽力的想得比较多,如果是乙方项目,你是否在设计时考虑得那么长远而且又不影响项目的正常交付?而且可扩展性的做法很多,比如分布式部署、集群、数据库分隔等等,但这样对当前来说都是理论上可行的,真的做起来还要考虑实施成本、复杂度的问题。总而言之,什么叫可扩展性高,什么叫不高?又是一个无法评估的东西;

5)安全性:非常重要的指标,但大家看看各自的项目,有几个项目把安全性考虑得非常周到,物理安全、帐号安全、功能性安全,数据库安全,这些都不是一两句话说得清楚的,有一本子“白帽子讲web安全”里面讲解得比较多,但如果真的要做到那种程度,是不是自己把自己做死了?

6)bug:这个不是指标,但是却是最直观的体现,最可以量化的东西,我们可以统计出bug的数量,但存在两个问题,一是bug如何分级?二是如何根据bug的数量来判断系统的好坏? 第一个问题,bug的分级,bug肯定要分级的,不能所有的bug一视同仁,那么就要有一个分级标准,而这个标准是什么呢?举一个比较极端的例子,以前做一个财务系统,写错了一个文字,从程序角度来说,很小的一个bug,但是造成了客户几万张银行对账单作废,全体财务员工加班两天解决。所以客观的讲应该是给用户造成的影响来判断bug的严重程度,但很多时候其实也是人为拍脑袋的;好,现在假设这个bug数量出来了,也分级了,那么怎么算可以接受的?这与系统本身的代码量、复杂程度是有关系的,一个1万行的代码与10万行的代码,同样都是3个bug,那评判标准肯定是不一样的;

7)还有其他的判断指标:比如需求实现率,需求文档中写了100条,实际做了80条,这个严格来说,不应该算交付的质量,交付的质量应该是指已经实现的功能相关的,这个更多的是交付能力的问题,是项目管理的指标;

对于甲方乙方的项目,公司可以说收到项目款了就是好项目,没收到就不是好项目,抛开人为的因素,纯粹从技术角度来说,衡量一个系统的好坏真的比较难,目前来看还是主观判断大于定量分析,一个系统做得好还是做得不好,可能更多的是在于一两个关键人员的能力和整体项目管理的标准执行了;

在此抛砖引玉,大家讨论。 每个公司的情况不一样,因为我们要自己交付,自己来运维,所以从自身角度来说,我们肯定会关注可维护性的问题,如果是甲乙双方的项目,估计没有几个人会想那么多了。

转载于:https://www.cnblogs.com/lzzgym/archive/2013/06/05/3119069.html

相关文章:

华人“霸榜”ACL最佳长短论文、杰出论文一作,华为、南理工等获奖

作者 | 夕颜、一一出品 | AI科技大本营(ID:rgznai100)导读:7 月 31 日晚,自然语言处理领域最大顶会 ACL 2019 在佛罗伦萨进行到了第四天(7 月 29 日-8 月 1 日),当天,组委会最终从提…

设计模式之访问者模式(Visitor)摘录

23种GOF设计模式一般分为三大类:创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给…

关闭Windows 8的metro UI的方法汇总

http://www.ssdax.com/570.html 上面就是windows8新出现的Metro UI,点击开始菜单就会出现,取代了windows长久以来的开始菜单,有了非常大的突破 不过我发现很多人都在找怎么关闭windows8 的Metro UI,下面介绍两个如何关闭Metro的方…

coredata Lightweight Migration 心得

关于coredata 网上的相关资料比较少,大部分是基本用法。于是便找到苹果官方文档进行深入学习。 分享一下心得,如果用了coredata 必须懂得 coredata Migration,否则app版本更新 core data model schema 变化很大可能导致持久化coredata 出错&a…

设计模式之职责链模式(Chain of Responsibility)摘录

23种GOF设计模式一般分为三大类:创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给…

澎思科技与新加坡国立大学等高校共研AI产品加快技术应用落地

2019年7月31日,中国人工智能企业澎思科技宣布新加坡研究院正式揭牌成立,并宣布成立澎思技术委员会,推动全球视野下的人工智能技术研究。同时,澎思科技与新加坡国立大学、新加坡南洋理工学院等重量级机构签订战略合作。未来&#x…

codility上的问题 (22)

问题描述: 用1 * 1, 1 * 2的矩形覆盖一个n行m列的矩形,问有多少种方法。 数据范围 : n [1..10^6], m [ 1..7] 要求复杂度: 时间 O(log(n) * 8 ^m)) 空间 O(4^m) 分析:这个题跟之前那个木块砌墙问题一样…… 稍作修…

session 与 cookie的区别

session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述和辨析…

设计模式之迭代器模式(Iterator)摘录

23种GOF设计模式一般分为三大类:创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给…

澎思科技成立新加坡研究院,将与多家机构合作研发自动驾驶等项目

2019 年 7 月 31 日,中国人工智能企业澎思科技宣布新加坡研究院正式揭牌成立,并成立澎思技术委员会,由来自新加坡国立大学、新加坡南洋理工学院等四名 AI 专家/教授担任澎思技术委员会首批委员。此外,澎思科技还与新加坡国立大学、…

对象----《你不知道的JS》

最近在拜读《你不知道的js》,而此篇是对于《你不知道的js》中对象部分的笔记整理,希望能有效的梳理,并且深入理解对象 一、语法 对象两种定义形式:声明(文字)形式、构造形式 声明(文字)形式 var…

Android:FragmentTransaction

为什么80%的码农都做不了架构师?>>> FragmentTransaction FragmentManager:能够实现管理activity中fragment. 通过调用activity的getFragmentManager()取得它的实例.。 FragmentTransaction:对fragment进行添加,移除,替换,以及执…

设计模式之解释器模式(Interpreter)摘录

23种GOF设计模式一般分为三大类:创建型模式、结构型模式、行为模式。 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给…

自动驾驶激荡风云录:来自圈内人的冷眼解读

作者 | 黄浴,奇点汽车美研中心总裁兼自动驾驶首席科学家编辑 | 夕颜出品 | AI科技大本营(ID:rgznai100)最近一个月,有关自动驾驶的新闻层出不穷,也是少有的热闹。先说正面的吧。激情的焰火 ▌传感器之争2019 年 7 月&a…

激动人心的AutoCAD .net开发技术

自从了解了vsto和sc(SmartClient)技术后,对以前Win32的二次开发技术,再也没有一点兴趣。对Office VBA, AutoCAD lisp, VBA, PowerBuilder PoserScript, MapInfo MapBasic 的开发,简直室深恶痛绝,希望一切…

Linux Shell简介

目录 版权信息前言第一篇:超级工具/Terminals,xterms 和 Shells 一、超级工具二、为了说明 shell ,这里需要一些背景知识。 1、Terminals, xterms 与 Shells2、终端(Terminals)3、xterms4、Shells 三、Shel…

浙大博士130页论文,教你用人工智能挑西瓜

作者 | 神经小姐姐来源 | HyperAI超神经(ID:HyperAI)【导读】要问什么水果和夏天最搭,答案一定是西瓜。作为西瓜生产与消费大国,中国在 2018 年以全世界 20% 的人口消耗掉全世界 70% 的西瓜,人均 100 斤。如…

一些要注意的地方

1、tomcat启动一直保持在starting状态时,最简单的原因就是时间过短,将时间变长就可以了。若还不能解决时,还可能就是端口号被占用了。通过netstat -nao | findstr ""可以看到占用你所使用的端口号的进程id,然后通过tasklist | find…

NEON在Android中的使用举例

1、 打开Eclipse,File-->New-->AndroidApplication Project-->Application Name:Hello-Neon, Project Name: Hello-Neon,Package Name:com.hello_neon.android, Minimum Required SDK:API 9:Android 2.3(Gingerbread),Next-->去掉Create custom launch…

Android中的JSON详细总结

1、JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从…

新一届最强预训练模型上榜,出于BERT而胜于BERT

作者 | Facebook AI译者 | Lucy编辑 | Jane出品 | AI科技大本营(ID: rgznai100)【导读】预训练方法设计有不同的训练目标,包括语言建模、机器翻译以及遮蔽语言建模等。最近发表的许多论文都使用了微调模型,并预先训练了一些遮蔽语…

Ubuntu 32下Android NDK+NEON的配置过程及简单使用举例

1、 利用VMware在Windows7 64位下安装Ubuntu13.10 32位虚拟机; 2、 从 https://developer.android.com/tools/sdk/ndk/index.html下载android-ndk32-r10-linux-x86.tar.bz2; 3、 将android-ndk32-r10-linux-x86.tar.bz2拷贝到Ubuntu的/home/spring/NE…

Neon Intrinsics各函数介绍

#ifndef __ARM_NEON__ #error You must enable NEON instructions (e.g. -mfloat-abisoftfp -mfpuneon) to use arm_neon.h #endif/*(1)、正常指令:生成大小相同且类型通常与操作数向量相同的结果向量; (2)、长指令:对双字向量操作数执行运算…

ubuntu bind9 配置简单记录

ubuntu bind9 配置简单记录ubuntu版本:Ubuntu 12.04.2bind9安装:apt-get install bind9bind9配置文件目录:/etc/bindbind9主要配置文件:named.conf.local以及对应db配置1,主服务器配置:rootubuntu:/etc/bin…

不止最佳长论文,腾讯AI在ACL上还有这些NLP成果

编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导语】7 月 31 日晚,自然语言处理领域最大顶会 ACL 2019 公布了今年的八个论文奖项,其中最佳长论文的获奖者被来自中国科学院大学、中国科学院计算技术研究所、腾讯 We…

python中package机制的两种实现方式(转载)

当执行import module时,解释器会根据下面的搜索路径,搜索module1.py文件。 1) 当前工作目录 2) PYTHONPATH中的目录 3) Python安装目录 (/usr/local/lib/python) 事实上,模块搜索是在保存在sys.path这个全局变量中的目录列表中进行搜索。 sys…

Magento如何使用和设置CookieSession

2019独角兽企业重金招聘Python工程师标准>>> 给大家介绍两个Magento的核心对象-Mage_Core_Model_Cookie & Mage_Core_Model_Session 首先介绍Mage_Core_Model_Cookie,这个对象主要是用来设置Cookie的,里面主要下列方法&#x…

AI+DevOps正当时

随着业务复杂化和人员的增加,开发人员和运维人员逐渐演化成两个独立的部门,他们工作地点分离,工具链不同,业务目标也有差异,这使得他们之间出现一条鸿沟。而发布软件就是将一个软件想从鸿沟的这边送去那边,…

clientdataset 用法

影响ClientDataSet处理速度的一个因素TClientDataSet是Delphi开发数据库时一个非常好的控件。有很强大的功能。我常常用ClientDataSet做MemoryDataSet来使用。还可以将ClientDataSet的数据保存为XML,这样就可以做简单的本地数据库使用。还有很多功能就不多说了。在使…

用vs2010编译vigra静态库及简单使用举例

1、 从 http://ukoethe.github.io/vigra/ 下载最新源代码vigra-1.10.0-src-with-docu.tar.gz,并加压缩到D:\soft\vigra,生成vigra-1.10.0文件夹; 2、 从http://www.cmake.org/cmake/resources/software.html下载CMake并安装; …