1、计算机基础
1.1 计算机发展史
发展历程:
1、1946至1958年的第一代,采用电子管作为元件;
2、1959至1964年的第二代,采用晶体管为元件;
3、1965至1970年的第三代,采用中小规模集成电路为元件;
4、1971年至今的第四代,采用大规模和超大规模的集成电路为元件。
1.2 编程语言发展
可以自己进行百度一下,主要分为一下五个阶段:
第一个阶段:机器语言(0,1)
第二个阶段:汇编语言
第三个阶段:b语言
第四个阶段:go
第五个阶段:java,php,python....
1.3 软件分类
作用分类:
系统软件:Windows,Linux,iOS,Android
支撑软件:JDK,VC++,驱动
应用软件:QQ,微信
类别分类:
桌面软件:台式机,笔记本,手机上的软件
移动软件:手机上的
HTML软件:淘宝,京东
HTML5软件:手机web端应用
架构分类:
B/S:浏览器-服务器
C/S:客户端/服务器
2、软件工程的概念
开发软件,软件从无到有的过程
2.1 软件的生命周期(重点)
计划、分析、设计、开发、测试、运维
各个阶段会输出响应的成果物,计划:项目计划文档、分析:需求规划说明书(需求文档)、设计:原型图,概要设计文档,详细设计文档 、开发:待测软件、测试:测试报告,缺陷报告、运维:二次需求文档
3、研发模型
3.1 模型定义
类似于实际生活中的模具,模型控制一系列开发流程规范的制度
3.2 意义
使用模型规定软件生命周期中的各个环节的规章制度,减少各个环节软件出现的问题
3.3 大爆炸模型
优点:1、没有计划,文档,规范
2、模型简单
3、占用资源少
缺点:1、存在风险
2、大型项目不适用
3、需求不明确,会导致成本增加
3.4 边写边改模型
优点:1、没有计划方案
2、灵活性强
3、 客户满意度高
缺点:1、没有规划
2、没有需求分析,有风险
3、没有软件测试,后期软件维护起来困难
3.5 瀑布模型
最广泛的一种模型,适用于银行,证券,国企
优点:1、各个阶段清晰
2、强调早期计划及需求调查
3、适合需求稳定的产品开发
缺点:1、依赖于早期的需求调查,不适应需求的变化
2、单一流程不可逆
3、风险在后期才会暴露,失去及早纠正的机会
3.6 增量迭代模型
迭代开发,功能逐步开发
3.7 螺旋模型
优点:以风险驱动,每个阶段循环之前都要有风险评估
缺点:需要具有丰富的风险评估经验,风险较大项目,风险未被标识会造成损失,过多的迭代增加开发成本,延迟提交时间
3.8 敏捷开发模型
互联网用的最多的模型,价值观是以人为本、目标导向、客户为先、拥抱变化
优点:注重市场快速反应能力,客户满意度高
缺点:忽略文档的重要性,项目较大时,沟通困难
4、测试阶段(重点)
单元测试-集成测试-系统测试-验收测试
单元测试:关注软件内部代码逻辑
集成测试:关注模块与模块之间的关联,子系统与子系统之间的关联,系统与系统之间的关联
系统测试:关注软件的功能
验收测试:关注软件使用便利性,方不方便,好不好用
5、测试方法(重点)
手段上:手工测试、自动化测试
策略上:冒烟测试、回归测试、随机测试
运行上:静态测试、动态测试
覆盖率上:黑盒测试,白盒测试,灰盒测试
6、测试流程
分析-设计-实现-执行
7、测试类型
功能性测试:关注显性功能与隐性功能是否正确
可用性测试:关注产品是否好用
兼容性测试:关注产品是否适用多种平台
可靠性测试:关注产品是否稳定可靠
安全性测试:关注产品是否存在漏洞
性能测试:关注产品是否能高效运行