**
第一章软件工程概述
**
软件的本质特征:
复杂性+一致性+可变性+不可见性
软件危机的概念:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列问题。
软件工程的概念:
1:将系统化的、规范的、可度量的方法应运与软件的开发、运行和维护的过程,即将工程化应运与软件中
2:对1中所述的方法的研究
软件工程的关键元素:方法+工具+过程
软件工程的开发策略:软件复用+分而治之+逐步演进+折中优化
软件工程的基本原理:
1:用分阶段的生命周期计划严格管理
2:坚持进行评审阶段
3:实行严格的产品控制
4:采用现代化程序设计技术
5:结果应能清楚的审查
6:开发小组人员应少而精
7:承认不断改进软件工程的必要性
第二章软件过程
软件过程的定义及包含的活动:
软件过程是指软件生成周期中的一系列相关过程,是为了获得高质量软件而实施的一系列活动。它包括问题定义、需求开发、软件设计、软件构造、软件测试等一系列软件开发的实现活动,而每一项都会产生相应的中间制品。
软件过程常见的模型及其关系:
Ø 瀑布模型——无法适应需求变化,计划驱动
特点:①. 阶段间具有顺序性和依赖性,便于分工合作;
②. 强调软件文档的重要性,要求每个阶段都进行仔细的验证;
③. 文档便于修改,并有复审质量保证。
缺陷:①. 划分固定,产生大量文档,增加了开发的工作量;
②. 开发是线性的,用户只有在整个程结束时才能看到开发成果;
③. 难以响应开发过程中用户的变更需求;
④. 早期错误难以发现适用于在软件需求明确,开发技术比较成熟,工程管理较严格的场合下使用(基本不会单独使用瀑布模型作为软件过程模型)
Ø 原型化模型——需求不明确时选用
从用户需求出发快速建立一个原型,使用户通过这个原型初步表达出自己的需求,并通过反复修改完善逐渐靠近用户的全部需求,最终形成一个完全满足用户需求的新体系。
例:3D打印机
Ø 迭代式开发——适应需求变化
开发被组织成一系列固定的短期小项目,称为一次迭代,每次迭代都包括完整的需求分析、设计、实现和测试活动。(理解:发布一系列版本)
增量开发:逐渐增加新的功能(缺点:增加功能的过程中可能破坏原有系统)
迭代开发:一次性开发出所有功能,后期再逐步完善各个功能
优点:①. 快速交付产品;
②. 快速响应需求变更;
③. 关注用户行为,很快得到用户反馈例:网上视频学习网站
Ø 可转换模型——数学方法(安全、可靠、保密)
特点:需要一个精确表述的形式化的规格说明
例:汽车防抱系统,嵌入式控制系统
关系:这些模型相互并不排斥,而且经常一起使用,尤其是对一些大型系统的开发。
敏捷软件开发的核心价值:
1:“个体和交互”胜过“过程和工具”
2:“可以工作的软件”胜过“面面俱到的文档”
3:“客户合作”胜过“合同谈判”
4:“响应变化”胜过“遵循计划”
第三章对象模型
面向对象方法的精华:面向对象=对象+分类+继承+消息通信
1:对象:
客观世界都是由各种对象组成,任何事物都是对象,复杂的对象可以由比较简单的对象组合起来
2:分类:
把所有的对象都划分为各种类,每个类都定义了一组数据和一组方法
3:继承:
按照子类和父类的关系分类组成一个层次结构的系统,下层的子类与上层的父类有相同的特性
4:消息通信:对象与对象之间只能通过传递消息进行通信。
接口的概念:方法声明的集合
对象属性和方法的三种访问权限:
1:公有的(public):其他对象可以直接访问
2:私有的 (private):只有特定的对象可以访问
3:保护的(protected):表示允许相关对象的访问
对象的职责:即一个对象对其他对象的职责
1:“知道”型职责:知道各类数据和引用变量
2:“做”型职责:执行计算完成某项任务
3:“交流”型职责:和其他对象进行交流
此部分仅为第一到三章的内容,后续部分会依次更新,请您关注我的博客,在我的博客中寻找其他几章内容!!