1. 软件的本质特征
软件具有复杂性、一致性、可变性和不可见性等固有的内在特性,这是造成软件开发困难的根本原因
-
复杂性
eg: Google搜索引擎建立在遍布全球30多个站点、超过100万台服务器的云计算设施上。
-
一致性
软件不能独立存在,需要依附于一定的环境(如硬件、网络以及其他软件)
软件必须遵从人为的惯例并适应已有的技术和系统
软件需要随接口不同而改变,随时间推移而变化,而这些变化是不同人设计的结果
-
可变性
人们总是认为软件是容易修改的,但忽视了修改所带来的副作用
不断的修改最终导致软件的退化,从而结束其生命周期
-
不可见性
软件是一种“看不见、摸不着”的逻辑实体,不具有空间的形体特征
开发人员可以直接看到程序代码,但是源代码并不是软件本身
软件是以机器代码的形式运行,但是开发人员无法看到源代码是如何执行的
2. 软件工程的产生和发展
3. 什么是软件工程
软件工程是①将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;②对①中所述方法的研究。
4. 软件工程的基本要素
-
过程
支持软件开发各个环节的控制和管理
-
工具
-
方法
5.软件开发的基本策略
6. 软件工程学科发展
7.什么是好的软件
8. 产品质量维度
9.ISO9126 质量模型
10. 商业环境下的软件质量
11.模块化程序设计
12. 代码评审
代码审查( Code Review) 是一种用来确认方案设计和代码实现的质量保证机制,它通过阅读代码来检查源代码与编码规范的符合性以及代码的质量。
代码评审的作用
● 检查设计的合理性
● 互为Backup
● 分享知识、设计、技术
● 增加代码可读性
● 处理代码中的"地雷区