From ab2f82ee9d8f1d60bff1d75a83e610736064e3d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E5=9F=BA=E7=B1=B3=E4=B8=9C?= <870179822@qq.com> Date: Sat, 13 Apr 2024 12:13:15 +0000 Subject: [PATCH] =?UTF-8?q?update=20=E7=AC=AC=E4=BA=94=E9=83=A8=E5=88=86?= =?UTF-8?q?=EF=BC=9A=E5=BC=80=E6=BA=90=E6=B2=BB=E7=90=86/=E7=AC=AC=204=20?= =?UTF-8?q?=E5=B0=8F=E8=8A=82=EF=BC=9A=E7=A1=AE=E4=BF=9D=E5=BC=80=E6=BA=90?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F=E7=9A=84=E5=87=A0=E4=B8=AA?= =?UTF-8?q?=E8=A6=81=E7=82=B9.md.=20=E4=BF=AE=E6=AD=A3=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 阿基米东 <870179822@qq.com> --- ...40\344\270\252\350\246\201\347\202\271.md" | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git "a/\347\254\254\344\272\224\351\203\250\345\210\206\357\274\232\345\274\200\346\272\220\346\262\273\347\220\206/\347\254\254 4 \345\260\217\350\212\202\357\274\232\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" "b/\347\254\254\344\272\224\351\203\250\345\210\206\357\274\232\345\274\200\346\272\220\346\262\273\347\220\206/\347\254\254 4 \345\260\217\350\212\202\357\274\232\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" index c34cddb..6ebdc67 100644 --- "a/\347\254\254\344\272\224\351\203\250\345\210\206\357\274\232\345\274\200\346\272\220\346\262\273\347\220\206/\347\254\254 4 \345\260\217\350\212\202\357\274\232\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" +++ "b/\347\254\254\344\272\224\351\203\250\345\210\206\357\274\232\345\274\200\346\272\220\346\262\273\347\220\206/\347\254\254 4 \345\260\217\350\212\202\357\274\232\347\241\256\344\277\235\345\274\200\346\272\220\344\273\243\347\240\201\350\264\250\351\207\217\347\232\204\345\207\240\344\270\252\350\246\201\347\202\271.md" @@ -1,10 +1,10 @@ # 第 4 小节:确保开源代码质量的几个要点 -> 本篇内容将会引导大家思考一些治理开源项目中,代码质量的问题 +本节内容将会引导大家思考一些治理开源项目中与代码质量相关的问题。 ## 引子 -2014 年 4 月,OpenSSL 向外界公布 OpenSSL 的实现上,存在 Heartbleed 漏洞隐患,截止 2014 年 5 月 20 日,在 80 万最热门的启用 TLS 的网站中,仍有 1.5% 易受心脏出血漏洞的攻击。如果说 Heartbleed 带来了什么好处,那就是它让人们更加关注软件测试的重要性。它影响了 50 多万个网站。因此,专家们现在正在梳理 OpenSSL 的代码,以及许多其他开源项目的代码,以确保提高公开源代码的质量和安全性。 +2014年4月,OpenSSL 向外界公布 OpenSSL 的实现上,存在 Heartbleed 漏洞隐患,截止2014年5月20日,在 80 万最热门的启用 TLS 的网站中,仍有 1.5% 易受心脏出血漏洞的攻击。如果说 Heartbleed 带来了什么好处,那就是它让人们更加关注软件测试的重要性。它影响了 50 多万个网站。因此,专家们现在正在梳理 OpenSSL 的代码,以及许多其他开源项目的代码,以确保提高公开源代码的质量和安全性。 基于贡献代码构建的事实是,没有任何一个开源项目是完全不可破解的。正如世界上没有“银弹”一样,开源社区也没有完美的开源代码。我们要能够容忍开源代码有缺陷,但容忍不代表对其放任自由,不做约束。低质量的开源代码是放在路边的“潘多拉魔盒”,会对开源代码的众多追随者造成巨大的影响!因此,我们需要通过一系列的措施,确保开源代码质量。 @@ -16,17 +16,17 @@ 软件质量的主要衡量标准如下: -- **功能性**:当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力 +- **功能性**:当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力。 -- **可靠性**:在指定条件使用时,软件产品维护规定的性能级别的能力 +- **可靠性**:在指定条件使用时,软件产品维护规定的性能级别的能力。 -- **易用性**:在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力 +- **易用性**:在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。 -- **效率性**:在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力 +- **效率性**:在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。 -- **维护性**:软件产品可被修改的能力。包括纠正、改进或对环境、需求和功能规格说明变化的适应 +- **维护性**:软件产品可被修改的能力。包括纠正、改进或对环境、需求和功能规格说明变化的适应。 -- **移植性**:软件产品从一种环境迁移到另外一种环境的能力 +- **移植性**:软件产品从一种环境迁移到另外一种环境的能力。 ## 管理周期与内容 @@ -36,13 +36,13 @@ 各个阶段需要管理的内容如下: -- **调研**:明确任务目标,确定任务方向,主要以市场调研、可行性分析、会议讨论等方式进行 -- **需求**:完成需求采集,需求分析整理,主要以需求拆解、会议讨论、输出文档等方式进行 -- **设计**:完成产品设计、概要设计、详细设计、数据库设计,主要以设计评审、输出文档等方式进行 -- **开发**:完成功能实现,主要以制定代码规范、实现功能、代码审查等方式进行 -- **测试**:完成功能测试、性能测试、安全性测试,主要以制定测试用例、输出测试报告等方式进行 -- **部署**:完成项目的部署(一般开源项目没有该步骤,如果有,可能仅限于项目使用者) -- **运维**:后期项目运维保障(一般开源项目没有该步骤,如果有,可能仅限于项目使用者) +- **调研**:明确任务目标,确定任务方向,主要以市场调研、可行性分析、会议讨论等方式进行。 +- **需求**:完成需求采集,需求分析整理,主要以需求拆解、会议讨论、输出文档等方式进行。 +- **设计**:完成产品设计、概要设计、详细设计、数据库设计,主要以设计评审、输出文档等方式进行。 +- **开发**:完成功能实现,主要以制定代码规范、实现功能、代码审查等方式进行。 +- **测试**:完成功能测试、性能测试、安全性测试,主要以制定测试用例、输出测试报告等方式进行。 +- **部署**:完成项目的部署(一般开源项目没有该步骤,如果有,可能仅限于项目使用者)。 +- **运维**:后期项目运维保障(一般开源项目没有该步骤,如果有,可能仅限于项目使用者)。 **当然,以上只是项目的常见阶段,不必照本宣科,可根据项目实际情况选择性管理。** @@ -64,11 +64,11 @@ - **制定代码规范** - 适用于开发阶段,统一编码规范 - 大部分开源项目都会提供编码规范,包括编码规范、日志规范、注释规范、数据库规范等等。比如:提供不同IDE的开发规范配置文件“***.xml”,又或者安装开发规范插件……等等 -- **代码review** +- **代码 review** - 适用于开发阶段,对照软件质量衡量标准进行完善项目 - **合理利用工具** - 适用于所有阶段,巧用工具提升效率 - - 比如:使用JIRA进行项目管理,使用Axure绘制原型,使用Word编写文档,使用GitHub 平台进行代码开发,使用Selenium进行功能测试,使用FindBugs 在 Java 查找缺陷,使用Clang 静态分析器分析C、C++ 和 Objective-C 程序中的错误。 + - 比如:使用 JIRA 进行项目管理,使用 Axure 绘制原型,使用 Word 编写文档,使用 GitHub 平台进行代码开发,使用 Selenium 进行功能测试,使用 FindBugs 在 Java 查找缺陷,使用 Clang 静态分析器分析 C、C++ 和 Objective-C 程序中的错误。 - **其他方式** - 引入人才 - 适用于所有阶段,借助组织的力量提升项目 @@ -80,11 +80,10 @@ ## 参考资料 - [做软件质量管理需要方面的知识,度量要如何开展?](https://www.zhihu.com/question/20825147) - - [质量特性及子特性:功能性、可靠性、易用性、效率、维护性、可移植性](http://www.cnitpm.com/pm/6274.html) -### 本部分内容贡献者 +## 本部分内容贡献者 -[tonels](https://gitee.com/tonels)、[ORH](https://gitee.com/orh)、[taotieren](https://gitee.com/taotieren)、[西狩](https://gitee.com/lihuimingxs) +[tonels](https://gitee.com/tonels)、[ORH](https://gitee.com/orh)、[taotieren](https://gitee.com/taotieren)、[西狩](https://gitee.com/lihuimingxs)、[阿基米东](https://gitee.com/luhuadong) > 发现内容中的错误?还是想要补充更多符合主题的内容?《开源指北》欢迎你进行贡献,点击[贡献指南](./../贡献指南.md)了解贡献的具体步骤。 \ No newline at end of file -- Gitee