1)软件构建:除了代码和静态数据,还有各种文件和数据来描述各个程序文件之间的依赖关系等;
2)源代码管理/配置管理:保证代码的平台兼容性、配置兼容性等;
3)质量保障(软件测试):保证软件的质量在修改过程中可以不断提高,或者至少可以保持;
4)项目管理:软件维护和服务运营
5)生命周期:以上称为软件的生命周期SLC
软件工程按照经典的瀑布模型 :
1. 需求分析 2. 设计阶段 3. 实现阶段 4. 稳定阶段 5. 发布阶段 6. 维护阶段。
事实上在现实世界中,软件工程师的职业发展与瀑布流程刚好相反。
初级的软件工程师所需的基本条件:
1.要积累软件开发的相关知识,提高技术技能;
2.要积累问题领悟的知识和经验;
3.要对通用的软件设计思想和软件工程思想的理解;
4.提高职业技能
5.实际成果。
代码风格规范:
-
缩进:4个空格;
-
关于断行与空白的{}行
-
下划线:用来分割变量名字中的作用域标注和变量的语义
-
大小写:通用的做法是,所有的类/函数名都采用所有单词首字母大写(Pascal)的形式;所有的变量首字母小写,随后的单词首字母大写(Camel);
-
注释:注释只用ASCII码字符,不要用中文或者其他特殊字符,否则会影响可移植性
RUP四个阶段:
初始阶段——此阶段的目标是分析软件系统大概的构成,系统与外部系统的边界在哪里(我们的系统究竟和什么别的外部实体打交道),大致的成本和预算是多少,系统的风险主要来自哪里。成功度过初始阶段的项目会达到生命周期目标(LifecycleObjective)里程碑
细化阶段——它的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,按优先级处理项目中的风险。团队要确定项目的具体范围、主要功能、性能、安全性、可扩展性等非功能需求。同时为项目建立支持环境,包括创建开发案例、创建模板并准备工具。细化阶段结束时,项目到达了第二个重要的里程碑:生命周期结构(Lifecycle Archi-tecture)里程碑
构造阶段——在这一阶段,团队开发出所有的功能集,并有秩序地把功能集成为经过各种测试验证过的产品。构造阶段结束时是第三个重要的里程碑:初始功能(Initial Operational)里程碑。此时的产品版本也常被称为“beta”版
交付阶段——这时候,团队工作的重点是确保软件能满足最终用户的实际需求。交付阶段可以有迭代(beta1,beta2等),基于用户的反馈,团队利用这些迭代对系统进行修改、调整。除了对功能的调整,团队还要注意处理用户设置、安装和可用性等问题。在交付阶段的终点是第四个里程碑:产品发布(Product Release)里程碑
软件的需求主要可以通过以下步骤来获取:
(1)获取和引导需求;
(2)分析和定义需求;
(3)验证需求;
(4)在软件产品的生命周期中管理需求。
对软件的需求,可以从不同角度来划分:
(1)对产品功能性的需求;
(2)对产品开发过程的需求;
(3)非功能性需求;
(4)综合需求。
PM:
-
product manager:产品经理。正确地做产品
-
project manager:项目经理。正确地做流程;保证一个项目顺利按照计划结项。
-
program manager:微软独有的PM,与项目经理类似但又有不同
PM必备素质:
- 观察、快速理解和学习能力
- 分析管理能力
- 一定的专业能力
基本名词:
- test suite:测试用例集,就是一组相关的测试用例
- bug:
- 症状(symptom):从用户角度看,程序出现了什么问题
- 程序错误(fault):从代码角度看,设么错误导致的上述问题
- 根本原因(root cause)
- 测试方法分类
- 黑箱:也就是注重软件的行为而不是内部结构
- 白箱:根据内部结构和知识来选择测试数据及具体的测试方法
- 测试目的分类
- 功能测试
- 非功能测试