您的位置:首页 > 编程语言 > C语言/C++

高质量程序设计指南C++/c语言读书笔记 第一章

2015-10-30 23:01 387 查看
第一章 高质量软件开发之道
1.1质量的定义
词典:(1)典型或本质的特征;(2)事物固有的或区别于其他物质的特征或本质;(3)优秀或出色的程度。
CMM定义:(1)一个系统、组件或过程符合特定需求的程度;(2)一个系统、组件或过程符合客户或用户要求或期望的程度。

软件质量属性:
功能性指标:正确性、健壮性、可靠性
非功能性指标:性能、清晰性、安全性、易用性、可移植性、兼容性、可扩展性

1.2细说软件质量的属性
正确性指的是软件能够按照需求正确执行任务的能力
健壮性指的是软件在出现异常的情况下正常运作的能力,其中包含容错性和恢复性,容错性>恢复性
可靠性指的是软件在长期运行的情况下程序不出现故障的概率

性能 指的是软件的时间和空间代价效率
易用性指的是用户使用软件的容易程度
清晰性指的是代码易读易理解并且尽量地简洁
安全性指的是防止系统被非法入侵的能力
可扩展性指的是软件适应变化的能力
兼容性指的是两个以上的软件相互交换的信息的能力,通常弱者想办法与强者兼容,强者想办法让弱者无法兼容
可移植性指的是软件(代码)在不加修改或者稍加修改就能在不同软硬件上进行运行的能力

1.3人们关心的不仅仅是质量
(1)质量永远是最重要的,其次才是生产效率与成本;
(2)经典软件工程:重点研究需求分析、系统设计、编程、测试、维护等领域的方法、技术和工具
(3)90年代起、软件过程改进成为工程学科的一个主流研究方向
(4)过程包括:人员、方法与规程、技术与工具。这三者结合为过程产出产品

1.4高质量软件开发的基本方法
基本思想:要想顺利的开发出高效有质量的软件,必须有条理的组织技术开发活动和项目管理活动
常见软件开发模型:瀑布模型、喷泉模型、增量模型、快速原型模型、螺旋模型、迭代模型等
作者推荐模型:精简并行过程(SPP)
含义:
(1)对CMMI3级以内的过程域及关键实践做了精简处理
(2)对“项目管理过程”、“技术开发过程”、“机构支撑过程”做了“并行”处理。
SPP把产品生命周期分为六个阶段:
PH0:产品概念阶段
PH1:产品定义阶段
PH2:产品开发阶段
PH3:产品验证阶段
PH4:产品验收阶段
PH5:产品维护阶段

项目管理过程:PH0(立项管理)、PH1(项目计划)、PH2(项目监控,风险管理)、PH3(需求管理)、PH4(外包管理)、PH5(结项管理)
技术开发过程:PH0(需求开发)、PH1(需求开发,技术预研)、PH2(技术预研,系统设计,实现与测试)、PH3(系统测试)、PH4(用户验收)、PH5(产品维护)
机构支撑过程:配置管理、质量保证、采购管理、培训管理

勤劳并且聪明的人把大部分的时间用于小比例的创新工作上,而把小部分的时间用于大比例的复用工作上

分而治之的思想:
能分且能合

优化与折中:永远不要忘了追求更好的优化,折中不是妥协,是在保证其他质量属性不差的情况下使得某项质量属性变得更好,首先要吃饱

1.4.5技术评审的一般流程:
步骤1:准备评审
步骤2:举行评审会议:
主持人宣讲-->作者介绍工作成果-->识别缺陷和问答-->讨论缺陷解决方案-->会议结束决议
步骤3:修正跟踪审核

修正与跟踪-->递交审核-->审核工作成果

1.4.6测试:测试的目的是为了找出尽可能多的缺陷
测试的一般流程:

制定测试计划-->编写测试用例-->执行测试-->撰写测试报告-->修改错误(回归测试-->执行测试)-->完成测试

1.4.7质量保证:
在整个软件流程中客观的监控软件从而持续的改进软件质量

1.4.8改错:
改错是一个神奇的过程,debug的时候一定要和静静处好关系,先把bug拉低到和自己同样的水平,再用丰富的经验例如二分法、归纳推理等方法解决掉他

1.5软件的思考
软件是一门艺术吗:软件就是一门艺术,和建筑、绘画、音乐等艺术一样,简单的字母数字拼接到了一起,经过程序员的结合总结梳理雕刻抚摸,就变成了一个个鲜活的程序、都是把自然界的材料进行人类的改进操作之后就能形成有用的工具,变成令人赏心悦目的艺术品

软件的错误不应分等级

不要刻意耍杂技

1.6小结(自我感受)
代码是程序员与计算机交流的语言,程序员通过代码来使得计算机做自己想做的事,好的程序员应该能够懂得语言的美丽,逻辑的美丽,艺术的美丽和工匠的美丽。程序员就是一个工人,具有匠心而又有天赋的工人便可以成为大工程师(顺推文明5)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: