一、概述
软件危机:指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件工程:一门研究工程化方法构建合维护有效的、实用的和高质量的软件的学科。
软件工程目的:在规定的时间、规定的开发费用内开发出满足用户需求的高质量(错误率低、好用、易用、可移植、易维护)的软件系统。
软件与硬件的差别体现在:表现形式、生产方式、产品要求、维护方式。
软件的固有复杂性:软件的复杂性是固有的,即不能采用某种方法彻底消除软件的复杂性,因此软件危机只能是通过控制复杂性的方法解决。软件的固有复杂性是的开发成员之间的通讯变得困难、开发费用超支、开发时间延期等、也导致产品有缺陷、不易理解、 不可靠、难以使用、功能难以扩充等。
控制软件复杂性的基本方法:
- 分解——对复杂的系统采用“各个击破”的策略。
- 抽象——抽取系统中的基本特性而忽略非基本的部分。
- 模块化——高内聚(在一个模块中应尽量多地汇集逻辑上相关地计算资源)、低耦合(模块间的相互作用应尽量少)。
- 封装(信息隐蔽)——模块内部的实现细节与外界隔离。
二、面向对象技术(object-oriented)
基本思想:对问题进行自然分割,以更接近人类思维的方式建立问题模型,从而使设计出来的软件尽可能直接地描述现实世界,具有更好的可维护性,能适应用户需求的变化。
对象(object):行动或思考时作为目标的人或事物对象。是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象是由一组属性和对这组属性进行操作的一组操作(方法)组成。属性和操作合起来被称为特征。
类:是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分。对象是类的一个实例,类是用来创建对象的模板。
继承(Inheritance):子类的对象拥有其父类全部的属性与方法,称作子类对父类的继承。
多态性:不同的类中可以有同名的操作,每个类中发生的操作各不相同。
封装(信息隐蔽):把对象的属性和方法接和成一个独立的系统单位,并尽可能隐蔽对象的内部细节。在外调用则使用接口(interface)。
消息传递(message transform):消息是向对象发除的服务请求,包含:提供服务的对象标识、服务(方法)标识、输入信息和回答信息。对象之间的协作是通过相互发送消息。
聚集(aggregation):一个系统由许多不同类型的对象组合而成。
组成(composition):特殊的聚集。在组成体中,部分题可能会先于组成体消亡,如果组成体被销毁,则部分体随组成体一同被销毁。