SE02软件工程概述软件工程/UML中国科学技术大学计算机系冯晓静Spring@2010软件工程概述1.2软件工程1.3软件生命周期1.4软件过程软件工程概述1.2软件工程1.3软件生命周期1.4软件过程软件工程的定义定义一:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。定义二:软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径软件工程的定义定义三:软件工程是指导计算机软件开发和维护的一门工程学科,该学科的目的是生产出能按期交付的、在预算范围内的、满足用户需求的、质量合格的软件产品软件工程的本质特性软件工程关注于大型程序的构造大型程序vs小型程序软件工程的中心课题是控制复杂性软件产品交付使用后仍然需要经常修改开发软件的效率非常重要开发人员和谐地合作是成功开发软件的关键软件必须有效地支持它的用户在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人开发产品软件工程师vs领域专家软件工程的基本原理用分阶段的生命周期计划严格管理生命周期包括:问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试、软件维护坚持进行阶段评审错误发现改正得越晚,付出的代价越高实行严格的产品控制绝对不能谁想修改软件,就随意修改软件采用现代程序设计技术采用先进的技术软件工程的基本原理结果应能清楚地审查提高软件开发过程的可见性软件评测开发小组的人员应该少而精承认不断改进软件工程实践的必要性与时俱进软件工程方法学方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范性。软件工程的方法学包括三个要素方法:完成软件开发各项任务的技术方法工具:为运用方法而提供的、自动或半自动的软件工程支撑环境过程:一系列任务的框架,规定了完成各项任务的工作步骤软件工程方法学目前广泛使用的软件工程方法学传统方法学面向结构的方法学工具:C语言面向对象的方法学工具:C#,JavaC++兼有面向过程和面向对象的特点其他的方法学面向数据的面向对象方法学传统方法学缺点数据和操作分离面向对象方法学的要点对象类继承性封装性对象和类的定义对象融合了数据及数据上的操作行为的统一的软件构件程序中任何元素都是对象复杂对象由比较简单的对象组合而成类所有对象都划分成类每个类都定义了一组数据和一组操作,类是对具有相同数据和相同操作的一组相似对象的定义数据用于表示对象的静态属性,是对象的状态信息施加于数据之上的操作用于实现对象的动态行为对象和类的解释对象一切事物都是对象类性质相似的一组实体构成类类是对这组对象的抽象描述每个对象都是该类的一个实例举例“车”是一个类每一辆桑塔纳2000、奔驰600,或是每一辆卡车都是一个对象对象和类的例子类名例如:车数据类的属性:描述类的静态特性例如:轮胎、发动机、行驶方向操作类的操作:描述类的动态特性例如:启动、行驶、刹车示意性代码ClassVehicle//类名是Vehicle{Stringdirect;//类的属性Voidrun(direct);//类的操作}继承按照父类与子类的关系,把若干个相关类组成一个层次结构的系统子类自动拥有上层基类中的数据和操作,这种现象称为继承例子:从父类继承来的属性和操作是一样的此外,子类可以有各自的属性和操作ClassLorry:Vehicle{Voidload(货物);}ClassCar:Vehicle{Voidload(人);}封装对象与传统数据有本质区别传统数据是被动地等待外界对它施加操作对象是数据处理的主体对象的所有信息都被封装在该对象内,不能从外界直接访问,这就是通常所说的封装性例子:1号车行驶方向?2号车行驶方向?Carcar1;car1.direction=east;Carcar2;car2.direction=west;car1.run(direction);car2.run(direction);软件工程概述1.2软件工程1.3软件生命周期1.4软件过程软件的生命周期1、问题定义2、可行性研究3、需求分析4、总体设计5、详细设计6、编码和单元测试7、综合测试8、软件维护