《软件工程方法与工具.ppt》由会员分享,可在线阅读,更多相关《软件工程方法与工具.ppt(69页珍藏版)》请在优知文库上搜索。
1、第2章 软件工程方法与工具 软件工程方法概述软件工程方法概述 面向对象的概念与开发方法面向对象的概念与开发方法 统一建模语言统一建模语言UML简介简介 软件工具概述软件工具概述 UML建模工具建模工具Rational Rose2.1 软件工程方法概述 概念概念软件工程是软件工程是技术技术和和管理管理紧密结合所形成的工程学紧密结合所形成的工程学科。科。通常将软件开发全过程中使用的一整套技术方法通常将软件开发全过程中使用的一整套技术方法的集合称为的集合称为方法学方法学(methedology)(methedology),也称为,也称为范型范型(paradigm)(paradigm)。目前使用最广泛
2、的软件工程方法学目前使用最广泛的软件工程方法学传统方法(结构化方法)传统方法(结构化方法)面向对象方法面向对象方法2.1 软件工程方法概述 软件工程软件工程三要素:三要素:方法方法提供提供 “如何做如何做” 的技术的技术; ;工具工具提供自动的或半自动的提供自动的或半自动的软件支撑环境软件支撑环境; ;过程过程规定了完成各项任务的规定了完成各项任务的工作步骤工作步骤。2.1 软件工程方法概述 结构化方法结构化方法 将软件生命周期的全过程依次划分为若干个阶段,将软件生命周期的全过程依次划分为若干个阶段,采用结构化技术来完成每个阶段的任务。采用结构化技术来完成每个阶段的任务。特点:特点:(1) (
3、1) 强调强调自顶向下顺序自顶向下顺序地完成软件开发的各阶段地完成软件开发的各阶段任务任务; ; (2) (2) 结构化方法要么面向行为,要么面向数据,结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。缺乏使两者有机结合的机制。2.1 软件工程方法概述l面向对象方法面向对象方法将将数据数据和对数据的和对数据的操作操作紧密地结合起来的方法。紧密地结合起来的方法。软件开发过程是多次软件开发过程是多次反复迭代反复迭代的演化过程。的演化过程。对于大型、复杂及交互性比较强的系统,使用面对于大型、复杂及交互性比较强的系统,使用面向对象方法更有优势。向对象方法更有优势。 2.1 软件工程方法概
4、述l形式化方法形式化方法形式化方法是一种基于形式化数学变换的软件开形式化方法是一种基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的发方法,它可将系统的规格说明转换为可执行的程序。程序。该过程的具体描述如图所示。该过程的具体描述如图所示。 2.2 面向对象的概念与开发方法 现实世界就是由各种现实世界就是由各种对象对象组成的,如建筑物、人、组成的,如建筑物、人、汽车、动物、植物等。汽车、动物、植物等。 对象拥有对象拥有属性属性和和行为行为。8操作操作打电话打电话发短信发短信照相照相收发邮件收发邮件导航导航qq微博微博属性属性型号型号颜色颜色年份年份重量重量待机时间待机时间对象名
5、对象名手机手机 对象对象 2.2 面向对象的概念与开发方法 类:具有相同类:具有相同属性属性和相同和相同操作操作的对象的抽象。的对象的抽象。 包括类名、类的属性、类的操作三方面的内容。包括类名、类的属性、类的操作三方面的内容。 一个具体对象是类的一个实例。一个具体对象是类的一个实例。10 将将对对象象分分组组为为类类的的例例子子11可以使用方框来表示一个类可以使用方框来表示一个类大象类大象类颜色: text象牙数:Integer生活区域: text重量:float高度:float迁移 (location)洗澡 (date)进食 (amount, date, time)2.2 面向对象的概念与开
6、发方法 Coad和和Yourdon给出了给出了“面向对象面向对象”的一的一个定义:个定义: 面向对象对象类继承消息通信面向对象对象类继承消息通信 如果一个系统是使用这样如果一个系统是使用这样4 4个概念设计和实个概念设计和实现的,则可认为这个系统是面向对象的。现的,则可认为这个系统是面向对象的。 对象 对象是包含现实世界物体特征的抽象实体,它反映了系统对象是包含现实世界物体特征的抽象实体,它反映了系统为之保存信息和(或)与它交互的能力。为之保存信息和(或)与它交互的能力。 例如,例如,StudentStudent对象的数据可能有姓名、性别、出生日期、对象的数据可能有姓名、性别、出生日期、家庭住
7、址、电话号码等,其操作可能是对这些数据值的赋家庭住址、电话号码等,其操作可能是对这些数据值的赋值及更改。值及更改。 对象 对象与后面讲的类具有几乎完全相同的表示形式,对象与后面讲的类具有几乎完全相同的表示形式,主要差别是对象的名字下面要加一条下划线。对主要差别是对象的名字下面要加一条下划线。对象名有下列三种表示格式:象名有下列三种表示格式:(1) (1) 第一种格式是对象名在前,类名在后,中间用冒号连接。第一种格式是对象名在前,类名在后,中间用冒号连接。形如:形如: 对象名:类名对象名:类名(2) (2) 第二种格式形如:第二种格式形如: :类名:类名 这种格式用于尚未给对象命名的情况,注意,
8、类名前的冒这种格式用于尚未给对象命名的情况,注意,类名前的冒号不能省略。号不能省略。(3) (3) 第三种格式形如:第三种格式形如: 对象名对象名对象 对象有两个层次的概念:对象有两个层次的概念:(1) (1) 现实生活中对象现实生活中对象指的是客观世界的实体。可以指的是客观世界的实体。可以是可见的有形对象,如人、学生、汽车、房屋等;是可见的有形对象,如人、学生、汽车、房屋等;也可以是抽象的逻辑对象,如银行帐号,生日。也可以是抽象的逻辑对象,如银行帐号,生日。(2) (2) 程序中对象程序中对象就是一组变量和相关方法的集合,就是一组变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具
9、有其中变量表明对象的状态,方法表明对象所具有的行为。的行为。对象程序中的对象分为程序中的对象分为5类:类:物理对象,角色,事件,物理对象,角色,事件,交互,规格说明交互,规格说明。 (1)(1) 物理对象物理对象(Physical ObjectsPhysical Objects)通常可以在问题领通常可以在问题领域的描述中找到,它们的属性可以标识和测量。域的描述中找到,它们的属性可以标识和测量。 例如,大学课程注册系统中的学生对象;一个网络管理例如,大学课程注册系统中的学生对象;一个网络管理系统中各种网络物理资源对象(如开关、系统中各种网络物理资源对象(如开关、CPUCPU和打印机)和打印机)都
10、是物理对象。都是物理对象。对象(2) 角色角色(Roles) 一个实体的角色也可一个实体的角色也可以抽象成一个单独的对象。以抽象成一个单独的对象。 一个实际的物理对象可能同时承担几个角色。例一个实际的物理对象可能同时承担几个角色。例如,一个退休教师同时扮演退休者和教师的角色。如,一个退休教师同时扮演退休者和教师的角色。对象(3) 事件事件(Events) 一个事件是某种活动一个事件是某种活动的一次的一次“出现出现”。 如如“鼠标鼠标”事件对象有诸如光标坐标、左右键、事件对象有诸如光标坐标、左右键、单击、双击等信息。单击、双击等信息。对象(4) 交互交互(Interactions) 交互表示了在
11、两个对交互表示了在两个对象之间的关系,这种类型的对象类似于在数据库象之间的关系,这种类型的对象类似于在数据库设计时所涉及的设计时所涉及的“关系关系”实体。实体。 例如,在大学课程注册系统中,学生和课程之间例如,在大学课程注册系统中,学生和课程之间的关系是多对多的关系,可设置一个的关系是多对多的关系,可设置一个“选课选课”交交互对象来简化它们之间的关系。互对象来简化它们之间的关系。(5) 规格说明规格说明(specification) 表明组合表明组合某些实体时的要求。某些实体时的要求。 一个一个“烹饪烹饪”对象定义各种调料和它们的对象定义各种调料和它们的量,以及它们组合的次序和方式。量,以及它
12、们组合的次序和方式。类与封装 类类 为了让计算机创建对象,必须先提供对象的定义,也就是为了让计算机创建对象,必须先提供对象的定义,也就是先定义对象所属的类。先定义对象所属的类。 例如,可以将学生对象所属的类定义为例如,可以将学生对象所属的类定义为StudentStudent。类的图。类的图形表示如图所示。形表示如图所示。 22 简单图形程序简单图形程序 设计类等级设计类等级圆类圆类弧类弧类类与封装 封装封装 封装是一种信息隐蔽技术,就是利用抽象数据类型封装是一种信息隐蔽技术,就是利用抽象数据类型将数据和基于数据的操作封装在一起。用户只能看到对象将数据和基于数据的操作封装在一起。用户只能看到对象
13、的封装界面信息,对象的内部细节对用户是隐蔽的。的封装界面信息,对象的内部细节对用户是隐蔽的。 封装的定义是:封装的定义是:(1) (1) 清楚的边界,所有对象的内部信息被限定在这个边界内;清楚的边界,所有对象的内部信息被限定在这个边界内;(2) (2) 接口,即对象向外界提供的方法,外界可以通过这些方接口,即对象向外界提供的方法,外界可以通过这些方法与对象进行交互;法与对象进行交互;(3) (3) 受保护的内部实现,即软件对象功能的实现细节,实现受保护的内部实现,即软件对象功能的实现细节,实现细节不能从类外访问。细节不能从类外访问。继承 继承继承。继承是为类的重用提供了方便,它提供了明确表继承
14、是为类的重用提供了方便,它提供了明确表述不同类之间共性的方法。述不同类之间共性的方法。 公共类称为超类公共类称为超类(superclass)(superclass)、父类(、父类(father classfather class)、)、祖先(祖先(ancestorancestor)或基类()或基类(base classbase class),而从其继承的),而从其继承的类称为子类类称为子类(subclasses)(subclasses)、后代(、后代(deslendanedeslendane)或导出类)或导出类(derived classderived class)。)。25o简单图形程序简单
15、图形程序o设计类层次设计类层次n位置位置n点点n圆圆n弧弧 27#includeclass CShapepublic:virtual void display() = 0; ;class CEllipse: public CShapepublic:virtual void display() coutEllipsen;class CCircle : public CEllipsepublic: virtual void display() coutCirclen;class CTriangle : public CShapepublic: virtual void display() cout
16、Trianglen;28class CRect: public CShapepublic: virtual void display() coutRectanglen;class CSquare: public CRectpublic: virtual void display() coutSquaren;void main()CEllipse aEllipse;CCircle aCircle;CTriangle aTriange;CRect aRect;CSquare aSquare;CShape* pShape5 = &aEllipse,&aCircle, &aTriange,&aRect, &aSquare;for(int i=0;idisplay(); 消息是一个对象与另一个对象的通信单元,是要消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。求某个对象执行类中定义的某个操作的规格说明。 发送给一个对象的消息定义了一个发送给一个对象的消息定义了一个方法名方法名和一个和一个参数表参数表(可能是空的),并(可能是空的),并指定某一个指定某一个对象