1、软件危机:

1、软件危机爆发时间:20世纪60年代中期

2、大中型系统与小系统本质区别:大中型系统的开发周期长,开发费用高,开发出来的软件质量难以保证,开发生产率低,复杂性已远远超过人脑所能控制的范围。

3、针对软件危机出现的开发方法:瀑布式软件开发、快速原型方法、螺旋式软件开发方法、变换式软件开发方法、增量式软件开发方法、净室软件开发方法、喷泉式软件开发方法等。

2、软件开发的基本认识

1、大型软件的开发特点:开发代价高,开发时间长,参与开发人员多,软件生命周期长。

2、软件开发的组成:一个是开发过程(包含需求分析,概要设计,详细设计,编码,测试等),另一方面是所涉及到的资源的整合和协调,包含人力资源,硬件和软件资源

3、软件的复杂的主要原因:

    1、与计算机的体系结构有关(硬件简单,软件复杂)

    2、软件是由许多关联的概念组成,而这些概念不能用好的工具或特征来体系其结构和规律

    3、元素之间的关联系具有不确定性

    4、软件的需求经常变动

    5、硬件系统的变更使得软件系统不得不考虑各种硬件系统环境下进行调整

3、控制软件的基本方法

1、分解法:将复杂的系统进行分直到无法分解,这样可以系统的复杂性在特定的层次与范围内部会超出人脑的理解能力。

2、抽象法:抽取系统的基本特征而忽略非基本特征,以便充分注意与当前有关的的方面,就是注重主要部分,而不注重细节,但我们应该知道还包含细节

     抽象分为数据抽象和过程抽象

3、模块化:对模块高内聚低耦合

     高内聚:在一个模块上应尽量多的汇集逻辑上的相关计算

    低耦合:模块之间的相互作用应尽量减少

4、信息隐蔽:也叫封装,把模块内的实现细节与外界隔离,用户只需要知道模块的功能而不需要了解模块内部的实现。信息隐蔽可以减少不必要的工作,如将来需要对模块进行修改,只需要更改模块内部,可以不更改外部接口,信息隐蔽提高的软件的可维护性,降低了模块间的耦合度。

4、面向对象技术

1、面向对象技术:充分体现了分解,抽象,模块,和信息隐藏等思想,提高软件生产效率,缩短开发时间,提高软件质量,是控制软件复杂性的有效途径。

2、有点:

    1、系统稳定,较小的需求不会造成较大的系统结构的改变

    2、开发的系统易于理解,对现实世界的映射更直观,更有对应关系

   3、更好的适应性,能更好的适应用户的需求,有助于构建大型软件系统。

   4、具有更高的可靠性

5、面向对象的基本概念

1、对象、实例,类,方法,属性,封装,继承,多态,消息

对象:用来描述客观事物的一个实体,他是构成系统的一个基本单位,一个对象是由一组属性,和对这组属性进行操作的方法组成。

实例:和对象的概念很类似

类:是具有相同属性和方法的一组对象的集合,它为属于该类的对象提供了统一的抽象描述。

封装:是把对象的属性和方法结合成一个独立的系统单位,并尽可能的隐蔽对象内部的细节。封装提供了两种保护,保护对象,防止用户访问对象内部的细节;保护客户端,防止对象内部的变化对客户端产生影响。

继承:子类可以继承父类的属性或方法,继续可以提高代码的重用,降低软件的开发和维护成本,但继承并不等于重用

多态:就是有多种形态的意思,指的是一个实体在不同步的上线文具有不同的意义或用法的能力。多态属于运行时,常和覆盖和动态绑定结合在一起;多态是保证系统具有良好适应性的一个体现。

消息:相对性发出的服务请求,函数调用并不等于消息,函数调用需要等到函数返回,是同步,而消息,在乎调用后可以不等函数返回继续执行,属于异步。