《软件工程》第9-12章 面向对象的技术-大纲
(软件工程)复习大纲(最新修改2014)
《软件工程》复习大纲第1章:软件工程的范畴重点掌握如下的内容:1掌握软件工程、软件危机、生命周期的概念 1%2掌握维护的3种分类并能够结合具体例子进行判断 1%3掌握为什么没有计划、文档和测试阶段 1%4掌握软件工程的传统生命周期模型(瀑布模型)的阶段划分和各阶段的主要任务1%5掌握传统的维护观念与现代的维护观念之间的区别1%了解如下内容:1了解纠错与成本之间的关系2了解面向对象范型与传统范型在生命周期模型方面的比较3了解如下术语的区别:客户、开发者和用户;内部软件、合同软件、商用现货软件(即COTS软件)和开源软件;过错、差错和故障第2章:软件生命周期模型重点掌握如下的内容:1 掌握编码-修补模型、瀑布模型、快速原型开发模型、开源模型、敏捷过程模型、同步-稳定模型、螺旋模型等这些模型的模型图(如果有图的话)以及优缺点和适用场合,并能绘制。
5-10%了解如下内容:1了解Winburg小型实例研究以及进化树生命周期模型图,并理解基线的概念2了解迭代和递增的区别,掌握米勒法则和逐步求精法这两个概念,了解迭代递增模型的五个核心工作流以及它们何时在迭代递增模型的生命周期中占据主导地位第3章:软件过程重点掌握如下的内容:1掌握每个工作流(包括需求流、分析流、设计流、实现流、测试流)的目标2%2掌握需求流的每个步骤(了解应用领域、建立业务模型、找出限制条件),了解主要限制条件(包括最终期限、可靠性、成本),掌握以下观点:开发者能够给予客户的应该是客户需要的而不是客户想要的 1%3掌握设计流的两个步骤:结构设计和详细设计的设计内容2%4掌握统一过程的四个阶段以及每个阶段的目标 1%5.掌握规格说明文档中可能出现的问题(包括模糊、不完备和矛盾),掌握软件项目管理计划的组成部分(包括可交付的东西、里程碑和预算)1%6.掌握回归测试概念及方法。
1%了解如下内容:1了解以下概念:软件过程、软件过程的五个工作流、统一过程、统一建模语言UML2了解测试流在各种制品中的体现形式,了解以下概念:可追踪性、评审、走查、审查、单元测试、集成测试、产品测试、验收测试、对COTS软件产品进行测试的特点3了解交付后维护阶段中出现的问题,了解回归测试4了解一维和二维生命周期模型5了解能力成熟度模型(即CMM)的五种分类7了解用于软件的CMM(即SW-CMM)的五个级别第4章:软件小组重点掌握如下的内容:1掌握民主小组、传统的主程序员小组、现代分级编程小组、同步稳定小组、敏捷过程小组以及开源编程小组这些小组组织方式的优缺点以及适用场合 2% 2掌握如下概念:无我编程、结对编程的概念及特点 1%3掌握传统的主程序员小组中主程序员、后备程序员、编程秘书、程序员、小组领导、小组经理等各个角色负责的任务 2%4掌握布鲁克斯法则1%了解如下内容:1了解组织开发小组时可能出现的问题,了解组织开发小组的两种极端方法2了解现代分级编程小组中小组领导和小组经理负责的区域第5章:软件工程工具重点掌握如下的内容:1掌握逐步求精法,了解逐步求精法小型实例研究中出现的每一次求精,了解前瞻技术,掌握逐步求精法的难点1-5%2掌握软件度量的两种分类(即产品度量和过程度量)以及度量时用到的具体指标(例如:代码行、每千行代码检测出的错误数、平均故障间隔时间等等),掌握五种基本度量(即规模、成本、持续时间、工作量、质量)1%3掌握CASE工具的概念以及分类(即高端与低端,工具与工作平台与环境)1%4掌握软件版本的两种分类(即修订版和变种版)以及这两种分类的区别 1% 了解如下内容:1了解两种类型的软件工程工具(即理论分析工具和软件工具)2了解成本效益分析法以及使用时的难点3了解具体的CASE工具4了解版本控制过程中出现的问题和用到的技术5了解配置控制工具以及基准和冻结这两个概念,了解建造工具第6章:测试重点掌握如下的内容:1掌握质量的定义以及软件质量保证小组(即SQA小组)的责任 2%2掌握走查时小组成员的构成、走查清单的构成、走查的两个步骤、走查的两种方式以及这两种方式之间的区别 2%3掌握审查时小组成员的构成、审查的五个步骤 2%4掌握走查与审查之间的区别 2%5掌握需要测试的五个行为特性(即实用性、可靠性、健壮性、性能和正确性)的定义以及相关度量指标(如平均故障间隔时间、平均修复时间)1%6掌握测试的两种分类 1%了解如下内容:1了解验证和确认的区别2,了解开发小组与SQA小组之间应该保持管理独立的重要性3了解非执行测试的定义和方法4了解审查时的度量指标5了解正确性与产品的可用性之间的关系6了解执行测试应该由谁来完成,了解测试何时应该停止第7章:从模块到对象重点掌握如下的内容:1掌握以下概念的定义:模块、模块内聚、模块耦合 1%2掌握内聚的七个等级分类(即偶然性、逻辑性、时间性、过程性、通信性、功能性以及信息性)以及每个等级的定义,并能够结合具体例子判断内聚等级1-5%3掌握耦合的五个等级分类(即内容、共用、控制、印记以及数据)以及每个等级的定义,并能够结合具体例子判断耦合等级 1-5%4掌握UML图标:注释、继承、聚合、关联 1-2%了解如下内容:1了解以下概念:模块操作、模块逻辑、模块背景。
软件工程电子课件第9章 面向对象设计
11
9.2 启发规则
3.设计简单的类
应该尽量设计小而简单的类,以便于开发和管理。当类比较 庞大的时候,要记住它的所有服务是非常困难的。为保持类的 简单,应该注意以下几点。 ➢ (1)避免包含过多的属性
属性过多通常表明这个类过分复杂了,它所完成的功能可能太多了。
➢ (2)有明确的定义
为了使类的定义明确,分配给每个类的任务应该简单,最好能用一 两个简单语句描述它的任务。
➢ (1)交互耦合
如果对象之间的耦合通过消息连接来实现,则这种耦合就是交互耦合。 为使交互耦合尽可能松散,应该遵守下述准则。
• ◇ 尽量降低消息连接的复杂程度。应该尽量减少消息中包含的参数个数,降低参数的复 杂程度。
• ◇ 减少对象发送(或接收)的消息数。Βιβλιοθήκη 2021/1/176
9.1 面向对象设计的准则
使用面向对象方法开发软件时,在分析与设计之间并没有明确的分界线, 对于问题域子系统来说,情况更是如此。
通过面向对象分析所得出的问题域精确模型,为设计问题域子系统奠定 了良好的基础,建立了完整的框架
使用面向对象方法学开发软件,能够保持问题域组织框架的稳定性,从 而便于追踪分析、设计和编程的结果。在设计与实现过程中所做的细 节修改(如增加具体类,增加属性或服务),并不影响开发结果的稳 定性,因为系统的总体框架是基于问题域的。
➢ (2)类内聚
设计类的原则是,一个类应该只有一个用途,它的属性和服务应 该是高内聚的。类的属性和服务应该全都是完成该类对象的任务所必 需的,其中不包含无用的属性或服务。
➢ (3)一般/特殊内聚
设计出的一般/特殊结构,应该符合多数人的概念,更准确地说, 这种结构应该是对相应的领域知识的正确抽取。
软件工程自考课程内容大纲
(一)课程内容第1节软件工程的产生第2节软件工程过程和软件生存周期第3节软件生存周期模型、方法和工具(二)考核知识点与考核要求第1节软件工程的产生1. 软件的特点,要求达到识记层次。
2. 软件生产的发展,要求达到识记层次3. 软件危机的产生、表现、原因,要求达到领会层次。
4. 软件工程的定义、性质、目标、内容、面临的问题,要求达到领会层次。
第2节软件工程过程和软件生存周期1. 软件工程过程概念,要求达到识记层次。
2. 软件生存周期概念,要求达到识记层次。
第3节软件生存周期模型、方法和工具1. 软件生存周期模型1.1 软件生存周期模型的定义、重要性,要求达到识记层次。
1.2 软件生存周期模型的作用、准则,要求达到识记层次。
1.3 瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型、基于知识的模型,要求达到识记层次。
2. 软件开发方法2.1 软件开发目标,要求达到识记层次。
2.2 方法的作用和重要性,要求达到识记层次。
2.3 结构化方法、Jackson方法、维也纳方法、面向对象方法,要求达到识记层次。
3. 软件开发工具3.1 工具的重要性,要求达到识记层次。
3.2 工具箱,要求达到识记层次。
3.3 开发环境,要求达到识记层次。
3.4 计算机辅助软件工程,要求达到识记层次。
第2章软件可行性研究与项目开发计划(一)课程内容第1节可行性研究第2节系统流程图第3节成本--效益分析第4节项目开发计划(二)考核知识点与考核要求第1节可行性研究1.可行性研究的任务,要求达到识记的层次。
2.可行性研究的具体步骤,要求达到领会层次。
第2节系统流程图,要求达到识记层次。
第3节成本--效益分析1.投资回收率达到识记层次。
2.回收期要求达到识记层次。
3.纯收入要求达到识记层次。
第4节项目开发计划,要求达到识记层次第3章软件需求分析(一)课程内容第1节需求分析的任务第2节结构化分析方法第3节数据流图(DFD)第4节数据字典(DD)第5节加工逻辑的描述第6节 IDEF方法第7节结构化分析方法小结(二)考核知识点与考核要求第1节需求分析的任务1.需求分析的概念,要求达到识记层次2.需求分析的基本任务,要求达到领会层次第2节结构化分析方法1.结构化分析方法,要求达到识记层次2.结构化分析步骤,要求达到领会层次第3节数据流图(DFD)1.数据流图,要求达到识记层次2.数据流图中的符号、画数据流图注意的事项,要求达到领会层次。
《实用软件工程》第9章 面向对象设计
• 信息隐藏:对于类而言,其内部信息如属性的表示方法和操作的实现算法,对 外界是隐藏的。外界通过有限的接口来访问类的内部信息。
17
9.3.2 面向对象设计的原则
• 低耦合:在面向对象设计中,耦合主要指对象之间相互关联的紧密程度,低耦 合有利于降低一个模块改变对其他模块的影响。
• 高内聚:内聚与耦合密切相关,低耦合往往意味着高内聚,高内聚有助于提高 系统独立性。
但随着需求理解的加深,以及对系统认识程度的逐步 提高,设计人员还要对模型进行修正和完善。 • 设计任务管理子系统包括确定任务,分配任务,还包 括权衡一致性、成本、性能等因素以及未来可扩充性。 • 设计数据管理子系统,需要设计数据格式以及相应的 服务,设计数据格式的方法与所用的数据存储管理模 式密切相关,不同数据存储管理模式时,属性和服务 的设计方法是不同的。
9.2 面向对象设计与面向对象分析的关系
• 设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求的 系统实现方案。与传统的软件工程方法不同的是,面向对象的方法不强调 需求分析和软件设计的严格区分。实际上,面向对象的需求分析和面向对 象的设计活动是一个反复迭代的过程,从分析到设计的过渡,是一个逐渐 扩充、细化和完善分析阶段所得到的各种模型的过程。严格的意义上来讲, 从面向对象分析到面向对象设计不存在转换问题,而是同一种表示方法在 不同范围的运用。面向对象设计也不仅仅是对面向对象分析模型进行细化。
• (2)人机交互子系统包括有效的人机交互所需的显示和输入,这些类在很大程度上 依赖于所用的图形用户界面环境,例如Windows、Delphi、C++,而且可能包括“窗 口”、“菜单”、“滚动条”、“按钮”等针对项目的特殊类。
25
9.5.1 系统分解
西安工业大学《软件工程》第九章 面向对象技术
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
9.2 面向对象概念举例
6. 泛 型
泛型多用于集合的操作,在不确定数据类型的情况下,定义一个 链表泛型List,可以将int,string,Datetime,自定义的类Student, 接口ICalculate等都加载在List中,从而达到用一个链表结构,实现各 种数据类型(包括未知数据类型)的链表操作.泛型可以有灵活的应用 比如泛型方法,泛型接口,泛型类,泛型委托,当然很多都比较复杂, 如果要掌握这些知识,需要先熟练掌握泛型类. 泛型的关键字是<>,在定义时比较常见的是<T>,比如这段代码 表示泛型Assemble:public class Assemble<T>,T叫做类型参数,T 可以是泛型允许的各种类型.泛型在没有确定T的时候叫开放类型; 确定了T以后叫封闭类型,比如:Assemble<int> assembleInts; 这里 的Assemble<int>就是一个封闭类型,封闭类型就如同普通的类一样, 不再具有类型可变化性.
计算机科学与工程学院
软件工程(Software Engineer) 软件工程(Software Engineer)
习题九
类和对象的表示方法是什么?并通过实例进行 说明. 什么是设计模式,设计模式的基本组成元素是 什么? 交通工具分为空中,陆上,水上交通工具,空 中交通工具分为客机,货机,专用轻型机;陆 上交通工具分为火车,汽车,火车和汽车又分 客车,货车,水上交通工具有轮船,轮船分为 客轮,货轮,客货混合轮.建立交通工具的对 象模型.
计算机科学与工程学院 软件工程(Software Engineer) 软件工程(Software Engineer)
软件工程专业《面向对象技术》课程的教学大纲
软件工程专业《面向对象技术》课程的教学大纲课程名称(中文)面向对象技术课程名称(英文)课程编号课程性质专业必修学时学分课程负责人开课学期一、课程说明(60字以内)本课程是J2EE平台中的实训项目类(实用开发技术)的前期的基础技术课程,主要分为面向对象技术、面向对象的Java编程技术、J2EE的体系架构的介绍和J2EE Web程序设计开发等几个方面的内容。
而其中的J2EE Web程序设计开发又包括标准的Web组件技术和高级Web组件技术应用和实现。
二、课程目的与基本要求(200字以内)由于目前的研一阶段的学生主要是欠缺(1)实际的企业级项目开发的体验和锻炼(2)当然作为一位职业程序员所应该具备的软件编程的基础知识和技术的掌握、软件规范化方面的体验不多。
本课程将系统地讲解面向对象技术、面向对象的ava编程技术和J2EE的体系架构以及J2EE Web组件技术等。
本课程的教学目标则是1)注重软件工程的思想和原则、J2EE系统的架构等方面的具体应用2)体验软件开发过程中的各个环节3)把握设计模式的思想和具体应用4)牢记“多层架构和松藕合”的原则三、内容简介(125字以内)本课程以技术的具体应用作为教学的任务驱动,并以某个实际应用系统的简化版本的实现作为教学内容的实现目标。
在实现过程中,按照应用系统中的面向对象技术、面向对象的Java编程技术和应用系统的表示层、控制层、业务处理层和数据访问层等相关的技术实现来展开讲解并逐步实现。
前四周为Java 语言及面向对象技术、J2EE体系架构、后四周为J2EE Web 组件技术中的表示层JSP技术、控制层Servlet技术、业务处理层JavaBean技术以及数据访层DAO 技术等;同时也将涉及Web的高级组件技术Filter、Listener等的应用开发实现。
课程将以此过程为主线,并相应地扩展出相应的与软件工程相关的知识,然后讲解这些方面的知识。
四、课程主要内容1、面向过程方法中的系统分析、设计和编程1)面向过程分析2)系统分析中常用的技术手段3)面向过程设计4)设计的主要工具5)面向过程编程6)编程实现的基本方法2、面向对象方法中的系统分析、设计1)面向对象的分析OOA2)如何实施OOA3)主要的OOA方法4)面向对象设计方法(OOD)5)主要的OOD工具3、Java及J2EE技术概述1)Java2的主要技术特点2)Java平台中的主要技术3)Java技术发展的方向4、J2EE体系架构1)Web容器和EJB容器2)轻量级的J2EE系统3)开源框架在J2EE平台中的应用5、Java及OOP1)面向对象程序设计方法2)Java中的类编程技术3)继承与派生的编程技术4)Java中的接口5)Java多态性6)Java中的包6、异常(例外)处理技术1)Java中的异常技术2)Java中的异常处理实现机制3)Java异常编程规则4)try、catch、finally语句5)声明和抛出异常;6)用户自定义异常类的编程规则7、Java I/O 技术1)文件名及目录名的File类2)本地文件读写3)管道方式读写4)随机文件读写5)字符格式文件读写6)标准数据类的数据读写7)标准输入输出设备流等8、Java 线程技术1)Java中的线程编程及线程体2)在Java程序中如何实现线程3)多线程之间的通信4)多线程同步互斥5)多线程间同步协调执行6)线程优先级9、JDBC技术1)JDBC的编程步骤2)数据库的一般查询3)检索结果集4)ResultSet的Cursor(游标)5)带参数的SQL语句10、对象的序列化技术1)对象的序列化技术2)序列化的特点3)相关的类与接口4)对象的序列化应用实例11、表示层JSP技术1)JSP中的通用语法规则2)JSP中的指令3)脚本元素4)JSP中的动作5)JSP的内置对象12、控制层Servlet技术基础1)Java Servlet及其特点2)JSP和Servlet在应用上的区别3)Servlet的生命周期4)与Servlet相关的API5)Servlet编程格式6)Servlet的开发步骤13、控制层Servlet技术高级1)Servlet API2)为Servlet提供初始参数3)Web应用中的环境变量4)服务器端的重定向5)设计线程安全的Servlet14、业务处理层JavaBean技术1)JavaBean组件技术2)JavaBean中的单值属性3)在JSP页面中使用JavaBean组件15、数据访问层JDBC技术1)JDBC的编程步骤2)数据库的一般查询3)检索结果集4)ResultSet的Cursor(游标)5)带参数的SQL语句16、在Web组件中操作数据库1)持久实体类2)数据连接组件接口和实现类3)数据访问组件接口和实现类17、Web过滤技术1)Web过滤技术2)Filter接口3)编程实现过滤器的步骤4)为过滤器提供初始参数5)Web过滤技术的各种应用实例18、Web监听技术1)Web监听技术及生命周期事件2)与生命周期事件相关的接口3)生命周期事件的应用编程4)Web监听技术的应用实例五、考核方式考试(平时作业+ 项目实现的大作业+考试)六、教学方式课堂讲授为主,并辅助课后练习七、先修课程C++面向对象编程技术八、师资队伍九、教材1、Java 面向对象编程作者:孙卫琴出版社:电子工业出版社2、JSP 应用开发详解(第二版)(1CD)作者:飞思科技产品研发中心出版社:电子工业出版社,20043、Peter Coad and Edward Yourdon. Object-Oriented Analysis, Second Edition, Yourdon press, 19914、精通Struts:基于MVC的Java Web设计与开发(附赠光盘1张)作者:孙卫琴出版社:电子工业出版社出版日期:2004年8月十、参考文献。
软件工程电子教案第九--十二章面向对象
第十章面向对象分析和高层设计
• 面向对象的分析是软件开发过程中最重要 的一步,也是使用面向对象的概念、原理、 分析解决问题、求解问题的重要阶段。 • 面向对象的分析从概念上分为两个层次: • 第一层:问题分析:主要任务是收集并确 认用户的需求信息,对实际问题进行功能 分析和过程分析。 • 第二层:应用分析:主要任务是动态描述 系统中,对象的合法状态序列,即建立正 确的模型。
是一般 —— 具体关系称为分类关系。 是在保留对象差异的同时,共享对象相似性 的一种高度抽象方法,即is a一般—具体关 系。符号是联线加一个小三角 例:汽车、火车是 交通工具。
汽车 火车
10.3.5 建立对象模型的过程:
1、确定类:标出来自问题域的相关对象类。
2、准备数据字典 准备一个数据字典,准确描述各个类的 精确含义。
二、对象的状态和行为 对象具有状态,一个对象用数值来描述 它的状态,如某个具体的学生张三,他的姓 名、年龄、性别等,用具体数据值来表示着 个具体的学生的情况。 对象还有操作,用于改变对象的状态, 对象及其操作就是对象的行为,例某个工人 经过“增加工资”的操作后,他的工资额这 个状态就放生了变化。 对象实现了数据和操作的结合,使数据 和操作封装于对象的统一体中。
六、多态性
多态性指相同的操作、函数、过程可作用于多 种类型的对象上,并获得不同结果。即不同的对象, 收到同一消息可以产生不同的结果。 例: MOVE 操作,可以是窗口某一图标的移动操作,也 可以是象棋棋子移动的操作。图标移动为了使窗口 更清晰,棋子移动为赢这盘棋。同样的函数作用不 同对象效果不同。例:函数x、3+x、与3-x结果是完 全不同的。 多态性允许每个对象以适合自身的方式去响应 共同的信息,用户不必为相同的功能操作但作用于 不同类型的对象而费心去识别,增强了软件的重用 性和可扩充性。
软件工程面向对象技术概述PPT教学课件
UML的开发历程 UML2.0
UML 1.3 OMG采用,11/97 OMG修正,9/97 UML 1.1
OMG审核,1/97 UML 1.0
OMG认证
10/96 & 9/96 UML 0.9&0.91
UML同行 专家意见
10/95ຫໍສະໝຸດ UML 0.8同阶段。
UML的应用
UML是一种建模语言,不是一 种方法,它独立于过程。利于它建模 时,可遵循任何类型的建模过程。
UML的主要内容
(1)UML融合了Booch、OMT和OOSE方法 中的基本概念,而且这些基本概念与其他面向 对象技术中的基本概念大多相同;
(2)UML不仅仅是上述方法的简单汇合,而 是扩展了现有方法的应用范围;
(2) UML表示法
定义UML符号的表示法,为开发者或开发工 具使用这些图形符号和文本语法为系统建模提 供了标准。这些图形符号和文字所表达的是应 用级的模型,在语义上它是UML元模型的实例。
模型内容的组织和UML表述
UML的用于描述模型的基本词汇(“构造块”):
• 事物(Things) • 关系(Relationships) • 图 (Diagrames)
• Booch方法 • Coad-Yourdon方法 • Rumbaugh 方法(简称OMT)
(Object Modeling Technology)
• Jacobson 方法(简称OOSE) • 由Rumbaugh 、 Booch 、 Jacobson
提出的统一建模语言 (Unify Modeing Language简称UML)
Booch’93 OMT-2
软件工程导论第9章面向对象方法学引论
软件⼯程导论第9章⾯向对象⽅法学引论第9章⾯向对象⽅法学引论传统的软件⼯程⽅法学曾经给软件产业带来巨⼤进步,部分地缓解了软件危机,使⽤这种⽅法学开发的许多中、⼩规模软件项⽬都获得了成功。
但是,⼈们也注意到当把这种⽅法学应⽤于⼤型软件产品的开发时,似乎很少取得成功。
在20世纪60年代后期出现的⾯向对象编程语⾔Simdla_67中⾸次引⼊了类和对象的概念,⾃20世纪80年代中期起,⼈们开始注重⾯向对象分析和设计的研究,逐步形成了⾯向对象⽅法学。
到了20世纪90年代,⾯向对象⽅法学已经成为⼈们在开发软件时⾸选的范型。
⾯向对象技术已成为当前最好的软件开发技术。
9.1⾯向对象⽅法学概述9.1.1 ⾯向对象⽅法学的要点⾯向对象⽅法学的出发点和基本原则,是尽可能模拟⼈类习惯的思维⽅式,使开发软件的⽅法与过程尽可能接近⼈类认识世界解决问题的⽅法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能⼀致。
客观世界的问题都是由客观世界中的实体及实体相互间的关系构成的。
我们把客观世界中的实体抽象为问题域中的对象(object)。
因为所要解决的问题具有特殊性,因此,对象是不固定的。
⼀个雇员可以作为⼀个对象,⼀家公司也可以作为⼀个对象,到底应该把什么抽象为对象,由所要解决的问题决定。
从本质上说,⽤计算机解决客观世界的问题,是借助于某种程序设计语⾔的规定,对计算机中的实体施加某种处理,并⽤处理结果去映射解。
我们把计算机中的实体称为解空间对象。
显然,解空间对象取决于所使⽤的程序设计语⾔。
例如,汇编语⾔提供的对象是存储单元;⾯向过程的⾼级语⾔提供的对象,是各种预定义类型的变量、数组、记录和⽂件等等。
⼀旦提供了某种解空间对象,就隐含规定了允许对该类对象施加的操作。
从动态观点看,对对象施加的操作就是该对象的⾏为。
在问题空间中,对象的⾏为是极其丰富多彩的,然⽽解空间中的对象的⾏为却是⾮常简单呆板的。
《软件工程》教学大纲
《软件工程》教学大纲一、课程概述本课程向学生介绍与大型软件相关的规划. 分析. 设计. 实现. 测试. 维护等概念. 原理. 技术与工具,同时向学生讲述传统的结构化开发方法与当前流行的面向对象开发方法。
要求学生牢固掌握软件生命周期. 软件质量. 软件成本等基本概念以及传统的结构化分析. 设计与实现方法;掌握面向对象软件工程的基本概念与表示技术,基本掌握软件开发中的管理技术。
通过本课程的学习,让学生对软件工程学有一个全貌的了解,对其所涉及的基本概念. 原理. 方法和有关技术逐步领会并进行运用。
要求学生能够在已有的程序设计. 数据结构. 数据库等理论基础上,为今后进行实际的软件开发奠定一个良好的基础。
本课程应强调实际运用,最好在教学中安排学生参予系统开发的策划. 分析. 设计. 编码. 测试等阶段工作的环节,积极引导学生从个人的单纯编程活动转移到进行系统分析与设计方面上来。
如果受条件所限,可让学生在毕业设计中将这一环节补上。
本课程的先修课程为“面向对象程序设计”. “数据结构与算法”与“数据库”。
本课程的后续课程可以为“程序设计方法学”与“算法分析与设计”。
二、课程目标1.知道《软件工程》这门学科的性质. 地位. 独立价值. 研究范围. 基本框架. 研究方法. 学科进展和未来方向等。
2.理解该门学科的主要概念. 基本原理和策略等。
3.学会运用一些具体的策略或技术等,如软件测试过程中所用到的黑盒测试法和白盒测试法。
4.能够把所学的原理应用到具体的实践中去,如对于具体系统开发过程中所遇到的问题能够自行进行处理,培养学生发现. 分析和解决问题的能力等。
三、课程内容和教学要求这门学科的知识与技能要求分为知道、理解、掌握、学会四个层次。
这四个层次的一般涵义表述如下:知道———是指对这门学科和教学现象的认知。
理解———是指对这门学科涉及到的概念、原理、策略与技术的说明和解释,能提示所涉及到的教学现象演变过程的特征、形成原因以及教学要素之间的相互关系。
软件工程面向对象技术
类
实例对象
华北科技学院计算机系 软件工程课程
9/237
3. 继承(inheritance) 继承是类间的基本关系,它是基于层次关
系的不同类共享数据和操作的一种机制。
父类中定义了公共属性和操作,在子类中 除了定义自己特有的属性和操作外,可以继承 其父类,还可以对父类中的操作重新定义。
华北科技学院计算机系 软件工程课程
华北科技学院计算机系 软件工程课程
15/237
5. 多态性(polymorphism) 多态性是指同一个操作作用于不同的对象
上可以有不同的解释,并产生不同的执行结 果。
相同操作的消息发送给不同的对象时,每 个对象将根据自己所属类中定义的这个操作 去执行,从而产生不同的结果。
华北科技学院计算机系 软件工程课程
华北科技学院计算机系 软件工程课程
2/237
内容摘要
• 面向对象的基本概念 • 面向对象的分析和设计过程 • UML概述 • 用况建模 • 静态建模 • 动态建模 • 物理体系结构建模
华北科技学院计算机系 软件工程课程
3/237
内容摘要
• 面向对象的基本概念 • 面向对象的分析和设计过程 • UML概述 • 用况建模 • 静态建模 • 动态建模 • 物理体系结构建模
在抽象类中可以定义抽象操作,抽象操作指: 只定义这个类的操作接口,不定义它的实现, 其实现部分由其子类定义。
华北科技学院计算机系 软件工程课程
12/237
交通工具
飞行器
汽车
船
轿车
货车
一般-特殊关系
华北科技学院计算机系 软件工程课程
13/237
如果一个子类只有唯一一个父类,这个继 承称为单一继承。如果一个子类有一个以上的 父类,这种继承称为多重继承。
西安工业大学《软件工程》第九章 面向对象技术
第九章 面向对象技术在软件开发与设计中,对一个系统的认识是一个渐进的过程,是在继承了以往的有关知识的基础上,多次迭代往复并逐步深化而形成的。
在这种认识的深化过程中,既包括了从一般到特殊的演绎,也包括了从特殊到一般的归纳。
而目前用于分析、设计和实现一个系统的过程和方法大部分是瀑布型的,即后一步是为了实现前一步所提出的需求,或者是进一步发展前一步所得出的结果。
因此,当越接近系统设计或实现的后期,对系统设计或实现的前期的结果作修改就越困难。
同时也只有在系统设计的后期才能发现在前期所形成的一些差错。
而且当这个系统越大、问题越复杂时,由于这种对系统的认识过程和对系统的设计或实现过程不一致所引起的困难就越大。
为了解决上述这个问题,就应使分析、设计和实现一个系统的方法尽可能地接近认识一个系统的方法,换言之,就是应使描述问题的问题空间和解决问题的方法空间在结构上尽可能的一致,也就是使分析、设计和实现系统的方法学原理与认识客观世界的过程尽可能的一致。
这就是面向对象方法学的出发点和所追求的基本原则。
面向对象方法的形成最初是从面向对象程序设计语言开始的,随之才逐渐形成面向对象分析和设计方法。
面向对象方法的出现以20世纪60年代末挪威奥斯陆大学和挪威计算中心共同研制的SIMULA语言为标志,面向对象方法的基本要点首次在SIMULA语言中得到了表达和实现。
90年代以后,OOA(Object-Oriented Analysis)/OOD(Object-Oriented Design)方法逐渐走向实用。
一些专家按照面向对象的思想,对系统分析和系统设计工作的步骤、方法、图形工具等进行了研究,提出了许多不同的实施方案。
其中影响较大的有P.Coad 和E.Yourdon的方法、G.Booch的方法和J.Rambough的OMT方法等,在实践中使用较多。
面向对象技术是近三十年来蓬勃发展起来的并获得广泛应用的一种具有广阔发展前景的技术。
软件工程大纲(13版)
《软件工程》课程教学大纲一、课程基本信息1.课程编号: 328012022.课程名称:软件工程3.英文名称:Software Engineering4. 课程简介:《软件工程》是计算机专业的一门工程性基础课程,是高等学校计算机软件教学体系中的一门核心课程,在软件工程学科人才培养体系中占有重要的地位。
课程以IEEE最新发布的软件工程知识体系为基础构建内容框架,注重贯穿软件开发整个过程的系统性认识和实践性应用,以当前流行的统一开发过程、面向对象技术和UML语言作为核心,密切结合软件开发的先进技术、最佳实践和企业案例,力求从“可实践”软件工程的角度描述需求分析、软件设计、软件测试以及软件开发管理,使学生在理解和实践的基础上掌握当前软件工程的方法、技术和工具。
二、课程说明1.教学目的和要求:本课程对提高学生的软件开发能力和项目管理能力有重要的现实意义。
通过本课程的学习,培养学生对整个软件开发过程的能力,让学生能切实体会到软件工程在实践中的指导作用,并按软件工程的要求完成规范的各项软件开发文档。
要求学生能掌握软件工程的基本概念、基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范等;学生应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大型软件开发项目打下坚实的理论基础。
2.与相关课程衔接:先修《程序设计》、《操作系统》3.学时:56(32+24)4.开课学期:55.教学方法:讲授6.考核方式:闭卷,成绩组成:卷面成绩(50%)+项目报告(40%)+平时成绩(10%) 7.教材:张海藩,《软件工程导论》(第四版),清华大学出版社8.教学参考资料:[1] 《软件工程概论》清华大学出版社郑人杰,殷人昆[2] 屠立德《软件工程方法》机械工业出版社[3] 冯玉琳,黄涛,倪彬《对象技术导论》科学出版社三、课程内容与教学要求第1章软件工程学概述教学目标:了解和掌握软件工程的基本概念,软件危机的表现形式、产生的原因及消除的途径,软件工程的基本原理、方法学,软件的生存期,几种主要的软件开发模型。
[软件工程]CH09-面向对象方法
【对象三要素】
⑴属性(Property)
定义对象的特征或某一方面的行为; 如:
汽车的颜色、载重量; 表单(表单类对象)的大小、标题等;
2020/3/25 5
9.1.1 对象和类
【对象三要素】
⑵事件(Event)
对象识别的一个动作,由相应的方法对此动作进行 响应;
如: 单击鼠标(Click)、移动鼠标(MouseMove)、按键
(KeyPress) 对象的事件集合是固定的,用户不能创建新的事件;
⑶方法(Method)
对象能够执行的一个操作,是与对象相关联的过程; 方法可由用户自己创建(处理代码);
被动的数据被主动的加工所操作。
面向对象方法
以对象为中心构造系统。 把世界看成对象的集合。
对象将数据和操作封装在一起。
对象之间通过消息相互通信。
2020/3/25 19
9.1.3 面向对象开发的优点
【面向对象方法的优点】
(1)面向对象方法强调把问题域的概念直接映射到 对象以及对象之间的接口,符合人们通常的思维方 式,减少了结构化方法从问题域到分析阶段的映射 误差。
SampleClass
+attribute1: String +attribute2: Integer +attribute3: Boolean
+operation1() +operation2() +operation3()
类名 属性 操作
2020/3/25 31
接口
说明一个类应该提供的服务,是一组操作的集合。 接口以一种规范的形式来表述多态性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章面向对象的技术
9.1 面向对象方法学
——基本思想:尽可能模拟人类习惯的思维方式,使开发软件的方法与过程更接
近人类认识世界、解决问题的方法与过程。
9.1.1 两种方法学的比较(传统的程序设计技术、面向对象的软件技术)
——与人类习惯的思维方法一致
——系统稳定性好
——可重用性好
——较易开发大型软件产品
——可维护性好
9.1.2 面向对象的基本概念
——对象定义:一个包含数据结构和施加其上的操作的封装体
——类定义:对一组具有相同属性和运算的对象的抽象
——继承定义:是父类和子类之间共享数据结构和方法的机制
——多态性定义:指相同的操作或函数、过程作用于不同的对象上并获得不同的
结果
——消息定义:指对象之间在交互中所传送的通信信息
9.1.3 面向对象的开发方法
——Booch方法
——Coad方法
——OMT(Object Modeling Technology,对象建模技术)
——UML(Unified Modeling Language,统一建模语言)
9.2 面向对象的实施步骤
——面向对象分析OOA
——面向对象设计OOD
——面向对象实现OOP
——面向对象测试OOT
9.3 面向对象的建模语言—UML
9.3.1 UML的特点
9.3.2 UML的构成
——视图(4+1):用例视图+ 设计视图、过程视图、实现视图、配置视图
——图
——模型元素
——通用机制
9.3.3 UML的通用模型元素
——关联、泛化、依赖、聚合、细化、组合
第10章面向对象的需求分析
10.1 用例图
——元素:参与者、用例、关系(包含、扩展、泛化)
10.2 用例建模的步骤
——步骤1:定义系统边界
——步骤2. 确定参与者
——步骤3. 识别用例
——步骤4. 确定用例之间的关系
——步骤5. 建立完整的用例图
——步骤6. 书写用例描述文档
第11章面向对象的分析
11.1 面向对象分析的任务
——分析的过程:提取系统需求,开发分析模型
——分析工作内容:理解,表达,验证
——文档资料:软件需求规格说明
——中心任务:从需求模型中导出分析模型
——分析模型由3个独立模型构成:
……用例模型:表示系统功能,用例和场景
……对象模型:表示系统组成,类和对象图
……动态模型:表示用例实现,协作图和顺序图
11.2 静态结构建模
——静态分析是分析静态模型(类图或对象图)
——静态结构建模过程:
……提取系统中的类(在用例中寻找类)
……添加关系
……确定类的属性
……确定类的操作
……完善初始的静态结构模型
11.3 动态结构建模
——动态分析是分析动态模型(顺序图或协作图)
——动态行为建模的过程:
……(1)消息
……(2)事件序列图
……(3)状态转换图
……(4)活动图
……(5)协作图
第12章面向对象的设计与实现
12.1 面向对象设计准则
——模块化
——抽象
——信息隐藏
——弱耦合:交互耦合(松散好),继承耦合(紧密好)
——强内聚
——可重用
12.2 面向对象启发规则
12.3 面向对象的实现
12.4 面向对象的软件测试
12.4.1 测试类型
——面向对象分析测试:分析、验证对象及其关系的合理性、可行性
——面向对象设计测试:确定类和类结构满足要求
——面向对象编程测试:类功能的实现和相应的面向对象程序风格
——面向对象单元测试:对类及其实例的测试
——面向对象集成测试:基于线程的测试,基于使用的测试
——面向对象系统测试:检测软件的整体行为表现,是对软件开发设计的再确认
——面向对象确认测试:集中检查用户可见的动作和用户可识别的输出
12.4.2 测试用例的设计
——测试类的方法
……随机测试:不考虑对类对象操作的限制而设计为一组按不同次序排
列的操作序列
……划分测试(类似等价划分测试)
……基于故障的测试(类似错误推测法)
——集成测试方法
……多类测试
……从动态模型导出测试用例。