第1部分软件工程一. 软件开发经历的三个时代1. 程序设计时代2. 程序系统时代3. 软件工程时代二. 软件危机和软件工程学简单的说软件危机就是:在软件开发和软件维护上出现的严重问题1968年NATO(北大西洋公约组织)会议提出。
软件工程含义是:“按照工程化的原理和方法来开发和维护软件。
”三. 软件生存周期模型软件工程学软件开发方法学软件工具软件工程环境软件开发技术软件工程管理软件管理学软件经济学2. 瀑布式生存周期模型评价: 特点:文档驱动。
优点: 简明、规范; 问题:只适合固定需求四. 软件工程方法学1. 结构化方法(面向数据流方法)·结构化分析(SA ):注意结构化方法是面向数据流的方法,主要工具是DFD ……· 结构化设计(SD ):注意模块化设计和模块独立性概念(高内聚、低耦合),主要工具是SC·结构化程序设计(SP ):单入口/单出口设计 2. 快速原型方法 1) 原型技术开发步骤:2) 原型技术评价满意否?修改、完善系统原型评价系统原型 研制系统原型确定系统最初需求Y优点:(1) 给用户尽快提供一个样品,让用户评价;(2)适合模糊需求;……缺点:(1)方法不规范, 无统一标准;(2)无统一开发环境和工具;……3. 面向对象方法五.传统方法个阶段的要点1.可行性研究阶段1)可行性研究阶的内容·技术可行性(比如技术风险)·经济可行性(比如成本—效益分析)·社会可行性(又称做运行管理或操作可行性)2)可行性研究阶的结论(三种结论)2.需求分析阶段1)需求分析任务2)绘制DFD技术(建模重点)3.总体设计阶段1)模块化设计2)模块独立性及判别准则3)模块独立性原则*4)DFD映射成SC(MSD)技术4.详细设计阶段1)结构化程序设计概念2)详细设计工具3) PAD5.编程和单元测试1)程序设计语言和工具的选择2)编程风格(比如:适当的注释)6.软件测试阶段1)软件测试的目的和原则2)驱动模块和桩模块3)黑盒测试和白盒测试4)软件测试步骤和策略*5)软件复杂度的度量7.软件维护阶段1)软件维护的种类和所占比例2)软件维护内容和副作用六.软件管理1)为什么要进行软件管理?软件管理的内容*2)软件管理的成本估算模型3)进度管理工具(GANTT图、PERT图和工程网络图)4)软件配置项和配置管理(标识对象、版本控制、变化控制、配置审计和状态报告)5)软件能力成熟度模型CMM和CMMI七.软件质量保证(略)八.软件环境1)软件环境概念和核心2)CASE概念第2部分面向对象的基本概念一. 面向对象的技术特征1. 标识(identity)2.分类(Classification)注意:同类对象具有相同的属性一般是指属性名而不是属性值。
只有称作“类属性”的情况才共享属性值。
3.继承(Inheritance)子类自动拥有父类的数据和操作叫继承。
继承可分成单继承(Single inheritance)和多继承(multiple inheritance)。
(请举出实例)4.多态性(Polymorphism)同一消息发给不同对象可产生不同结果。
(或相同的操作应用到不同类中,可以有不同表现形式)二. 面向对象的开发1.面向对象的开发步骤:1)需求表达和系统构思(conception)重点是搞清问题域和系统责任。
2)系统分析—创建模型3)系统设计a)设计一种高层策略—-系统架构b)优化设计—-考虑实现策略问题和临时资源分配问题。
4)设计类a)添加细节b)实现类的数据结构和算法5)实现主要工作是类模型转换成某种编程语言和数据库。
三. OO技术中几个术语1.抽象2.封装3.共享(重用)·同一类中的对象共享·同一应用(不同类)通过继承共享·不同应用通过类库或可重用构件库来共享。
*4.协同(synergy)四.三种模型1.类模型(对象模型)包括:类、对象及实例的概念;类之间的关系:1)关联关系a)关联和链 b)多重性c)关联的角色d)关联类 e)限定关联 f)自反关联g)派生关联2)泛化关系3)聚合关系(整体—部分关系)4)依赖关系5)抽象类和接口(以上概念应能举实例说明)2.状态模型用状态图表示状态模型注意:状态图的几个概念比如:状态图的用途、动作和活动、事件和转移等3.交互模型(1)用例图(Use Case Diagram)(2)交互图(Interaction Diagram)交互图包括:顺序图和协作图(3)活动图(Activity Diagram)活动图显示复杂过程的处理步骤序列、算法和工作流程。
第3部分UML建模部分第2章 UML概述一.何谓UML?UML有何特点?UML(Unified Modeling Language)统一建模语言。
特点:1.统一标准;2.面向对象、可视化(visible);3. 独立于过程,即UML不依赖于特定的软件开发过程;4.建模简单易学,图形结构清晰,易于掌握;5.UML创建的类模型可以有多种实现。
二.UML构成(参见教科书P14-16)其中九种框图应重点掌握。
三.UML的“4+1视图”1.逻辑视图(Logic View)2.进程视图(Process View)(注意:在Rose下无此视图)3.实现视图(Implementation View)4.部署视图(Deployment View)5.Use Case视图(Use Case View)第3章用例和用例图一.用例图中的概念·参与者·用例(Use Case)·关联·脚本(Scenario)注意:脚本是用例的实例,每个用例对应一个主脚本和多个分支脚本。
二.用例之间的三种关系1.泛化关系2.《include》3. 《extend》要求能举出实例来说明三种关系。
三.创建Use Case 图要求能根据需求陈述来绘制Use Case图,并可以合理运用用例之间的三种关系来优化Use Case图。
第4章顺序和协作图一.交互图的概念1.交互图描述对象之间或对象与参与者之间的交互行为;2.交互图包括顺序图和协作图,在Rose下它们可以互相转换。
3.交互图可以补充类中的方法如何具体实现二.顺序图中的概念对象(对象表示方法)、参与者(在顺序图中的排列位置)、生命线、控制焦点以及消息(消息的构成)等。
三.绘制顺序图1.绘制“学生选课系统”中“Select Course”,“Query Course”,“Pay for Course”,“Add Course”,“Modify Course”,“Delete Course”的顺序图。
2. 绘制“图书管理系统”中“Lend Book”(借书)的顺序图。
3.对已绘制好的顺序图,按F5键自动转换成协作图。
第5章类图一.类的概念1.类的表示2.类的属性·类属性和实例属性·派生属性3.类的操作·类范围操作和实例范围操作4.类之间的关系(前面已讲)5.类的三个重要版型(构造型)·边界类·实体类·控制类6.类的抽象层次·概念层·说明层·实现层7.OO设计原则1)开闭原则2)Liskuv替换原则3)依赖倒置原则4)接口分离原则二.创建类图(应用问题的重点)。
三.根据类图写出相关的Java代码。
第6章数据建模一.数据库设计步骤二.UML数据建模的特点(和E-R方法比较)三.在Rose下UML数据建模使用的版型及如何利用UML元素来表示数据库中的概念。
(参见教科书P73表6.1)四.对象模型和数据模型的相互转换的注意事项·以包为单位·将需要转换换的类设置为Persistent属性。
第7章包一.包的概念二.包的依赖关系三.包的设计原则(REP,CCP,CRP,ADP. 注意最后一条原则)四.包的应用·对建模元素分组·数据建模时,用包表示模式和域·对象模型和数据模型转换时,以包为单位·Web建模时,包可以表示虚拟目录·包可作为控制单元,便于团队开发及配置管理。
第8章状态图和活动图一.状态图中的基本概念·状态·事件·转移·动作(活动)二.活动图中的基本概念·活动·泳道·分支·分叉和汇合三.绘制状态图和活动图(以实验内容为主)第9章构件图一.什么是构件?它和类有何区别?构件的特点(属性)是什么?二.类图生成代码时,为何要映射成构件?三.构件之间的最重要的关系是什么?它的含义是什么?第10章部署图一.部署图的构成1.结点(Node)·结点可以代表一个物理设备及运行该设备上的软件系统·两种类型的结点2.连接(Link)·连接表示两个硬件之间的关联关系*二.应用系统的三级结构第12章业务建模一.业务建模的目的和特点1.目的:较准确地捕获用户需求2.特点:·能较准确地捕获用户需求,真实反映企业的业务过程;·为软件分析、设计提供依据;·可以更好地理解、分析、和改善机构的业务过程;·可以帮助定义功能需求和非功能需求。
二.软件模型和业务模型的区别和联系1.区别:·业务模型很简洁,主要突出业务过程没有细节;而软件模型包含细节。
·业务模型可包含手工过程,软件模型不包含手工过程2.联系:·业务模型在软件模型之前创建·软件模型要支持业务模型。
第13章 Web建模一.对MVC框架的理解二.Web应用建模扩展(WAE)Rose中预定义的Web建模的版型有:(见P134表13.1)源端关联的版型目的端Client Page 聚集关系HTML FormHTML Form Submit Server PageClient Page Link Server Page, Client Page Server Page Build Client PageServer Page Include Server Page, Client Page Server Page Forward Server Page (Jsp), Client Page Server Page Redirect Server Page(Asp), Server Page Server Page Use Bean Java Bean (Jsp) Server Page Use COM Object Coclass (Asp)三.对Web应用的正向工程和逆向工程的理解第14章 UML及设计模式一.何谓设计模式?为什么研究设计模式?1.模式:“在某一情景下的问题解决方案”2.研究设计模式的好处·简化并加快设计·便于设计者之间沟通·降低风险二.模式是否能提高生产力?三.模式是否能生成整个系统?四.典型模式分析1.“手柄—本体”设计模式2.“工厂方法”设计模式3.“抽象工厂”设计模式4.“层次结构”(树形结构)设计模式5.其它第15章面向对象实现技术一.几种典型OOPL的特点(Smalltalk、C++、java)二.根据类模型写出Java源代码第16章 RUP软件开发过程一.RUP和UP的关系二.RUP 软件开发生命周期·纵向9个核心工作流·横向多个循环(每个循环包括4个阶段)初始、细化、构造和移交·每个阶段完成的里程碑三.RUP的特点1.用例驱动2.以体系结构为中心3.迭代与增量。