软件工程复习比较完善市公开课获奖课件省名师优质课赛课一等奖课件_第1页
软件工程复习比较完善市公开课获奖课件省名师优质课赛课一等奖课件_第2页
软件工程复习比较完善市公开课获奖课件省名师优质课赛课一等奖课件_第3页
软件工程复习比较完善市公开课获奖课件省名师优质课赛课一等奖课件_第4页
软件工程复习比较完善市公开课获奖课件省名师优质课赛课一等奖课件_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程--

原理、方法与应用1/144课程安排理论内容:基本原理、方法和技术形式:讲授、自学、讨论实践内容:结构一个应用系统(包含分析、设计、编码、测试)形式:分组、分阶段文档、编码、集成2/144软件工程主要内容软件工程基本概念软件开发模型软件开发各阶段任务、技术、方法传统方法、面向对象方法软件工程管理软件质量确保软件工程环境3/144第一章绪论软件与软件危机软件工程学传统软件工程和面向对象软件工程软件工程应用=4/1441-1什么是软件危机?它有哪些经典表现?为何会出现软件危机?

1-2什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机?

1-3简述结构化范型和面向对象范型关键点,并分析它们优缺点。

1-4什么是软件过程?它与软件工程方法学有何关系?

5/144软件程序、软件与软件产品独唱-->小合唱-->合唱-->万人大合唱

|||简单程序较复杂程序软件软件定义:软件=程序+数据+文档程序:按事先设计功效和性能需求执行指令序列数据:是程序能正常操纵信息数据结构文档:与程序开发、维护和使用相关图文材料6/144软件特征软件是逻辑,而不是物理软件开发与人关系亲密软件开发成本大软件生产是简单拷贝软件不会磨损和老化软件受环境影响大软件维护易产生新问题7/144软件开发发展过程计算机应用发展软件数量多规模大软件成本高质量低个体化软件开发方法软件维护困难软件危机软件工程8/144软件危机定义计算机软件开发和维护过程所碰到一系列严重问题表现对软件开发成本和进度估算很不准确用户很不满意质量很不可靠没有适当文档软件成本比重上升供不应求:软件开发生产率跟不上计算机应用快速深入趋势9/144硬件/软件成本改变趋势

硬件

软件

100%0%19551970198510/144软件技术进步落后于需求增加11/144软件危机原因客观:软件本身特点逻辑部件规模庞大主观:不正确开发方法忽略需求分析错误认为:软件开发=程序编写轻视软件维护12/144软件危机处理路径组织管理工程项目管理方法技术办法软件开发技术与方法软件工具13/144软件工程学范围软件工程学指导计算机软件开发和维护工程学科工程管理+开发技术软件开发技术软件开发方法学软件工具软件工程环境软件工程管理软件管理学软件经济学软件度量学14/144两种程序设计方法程序设计两次飞跃结构化程序设计程序=数据结构+算法面向对象程序设计程序

=对象

+消息

15/144面向过程和面向对象编码存款取款利息结算帐户余额帐户余额利息结算存款取款16/144两类软件工程方法传统软件工程软件分析

总体设计

详细设计

面向过程编码

测试

面向对象软件工程软件分析与对象抽取

对象详细设计

面向对象编码

测试

17/144软件工程应用软件工程指导中小型软件软件工程指导大型软件软件工程成就软件工程局限18/144第二章软件开发模型2-1什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型优缺点,说明每种模型适用范围。2-2什么是面向对象方法学?它有哪些优点?

2-3什么是“对象”?它与传统数据有何异同?

2-4什么是“类”?

2-5什么是“继承”?

2-6什么是模型?开发软件为何要建模?

19/144第二章软件开发模型传统开发模型瀑布模型(waterfallmodel)快速原型模型(rapidprototypemodel)演化开发模型增量模型(incrementalmodel)螺旋模型(spiralmodel)面向对象开发模型构件集成模型(componentintegrationmodel)

形式化开发模型转换模型(transformationalmodel)净室模型(cleanroommodel)20/144软件生存周期计划时期问题定义可行性分析开发时期需求分析软件设计编码测试运行时期软件维护21/144瀑布模型问题定义可行性研究需求分析软件设计编码测试维护计划时期开发时期运行时期22/144瀑布模型特点阶段次序性和依赖性推迟实现观点质量确保存在问题不适合需求含糊系统23/144快速原型模型需求分析原型开发最终系统设计原型评价最终系统实现用户反馈24/144快速原型模型特点快速开发工具循环低成本种类渐进型抛弃型25/144增量模型规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户增量1增量2增量3增量n26/144增量模型增量小而可用软件特点在前面增量基础上开发后面增量每个增量开发可用瀑布或快速原型模型迭代思绪27/144螺旋模型28/144螺旋模型特点瀑布模型+快速原型+风险分析迭代过程一个螺旋式周期

确定目标,选择方案,选定完成目标策略

风险角度分析该策略

开启一个开发阶段

评价前一步结果,计划下一轮工作

29/144构件集成模型30/144构件集成模型特点面向对象基于构件库融合螺旋模型特征支持软件开发迭代方法

软件重用31/144面向对象基本概念对象Object类Class继承Inheritance消息Message面向对象对象+类+继承+消息通信32/144对象Object客观世界中实体状态(静态属性Attributes)操作(动态行为Methods)对象::=<ID,MS,DS,MI>IdentifierMethodSetDataStructureMessageInterface33/144对象特点以数据为中心对象是主动实现数据封装本质上有并行性模块独立性好34/144类Class和实例Instance类相同属性和行为对象抽象实例特定类所描述一个详细对象35/144子类直接继承父类数据和操作继承传递性,单继承、多重继承继承(Inheritance)家俱桌子椅子衣柜床椅子实例36/144多态性Polymorphism概念不一样类层次共享一个方法名相同参数特征和返回值类型各种不一样实现C++中虚函数实现动态联编37/144重载Overloading函数重载同一作用域多个名字相同函数参数特征不一样静态联编运算符重载38/144消息Message对象间交互伎俩形式:Message:[dest,op,para]DestinationObjectOperationParameters39/144转换模型形式化规格说明与需求比较后修正变换2变换1变换n测试形式化开发统计系统需求目标系统40/144转换模型特点形式化软件开发方法

形式化需求规格说明

变换技术程序自动生成技术

确保正确41/144净室模型需求搜集盒结构规约形式化设计统计性使用测试正确性证实代码生成与检验测试计划认证需求搜集盒结构规约形式化设计统计性使用测试正确性证实代码生成与检验测试计划认证需求搜集盒结构规约形式化设计统计性使用测试正确性证实代码生成与检验测试计划认证增量1增量2增量n42/144净室模型净室思想在分析和设计阶段消除错误在“洁净”状态下实现软件制作形式化盒结构表示分析和设计正确性验证增量模型43/144小结软件开发模型是不停发展各种软件开发模型各有优缺点选取时无须拘泥与某种模型可组合各种模型也可依据实际创建新模型44/144第三章软件需求分析3-1为何要进行需求分析?通常对软件系统有哪些需求?

3-2怎样与用户有效地沟通以获取用户真实需求?

45/144第三章软件需求分析3-3银行计算机储蓄系统工作过程大致以下:储户填写存款单或取款单由业务员键入系统,假如是存款则系统统计存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;假如是取款而且存款时留有密码,则系统首先查对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

请用数据流图描绘本系统功效,并用实体-联络图描绘系统中数据对象。

46/144第三章软件需求分析

3-4分析习题2第3题所述机票预订系统。请用实体-联络图描绘本系统中数据对象并用数据流图描绘本系统功效。47/144需求分析任务和步骤需求分析任务建立分析模型

编写需求说明

需求分析步骤需求获取

需求提炼

需求描述

需求验证

48/144需求获取惯用方法联合分析小组

用户代表、领域教授和系统分析员客户访谈

充分准备,寻找共同语言循循序渐进、逐步迫近

问题分析与确认

多个往返49/144分析建模结构化分析模型面向对象分析模型分析模型描述工具DFD、DD和PSPECCFD、CSPEC和STDE-R图

用例图,对象-关系图,对象-行为图

50/144结构化分析模型加工说明数据对象说明CFD,STD图DFD图E-R图DD控制说明51/144面向对象分析模型属性、操作、协作者对象-行为模型对象-关系模型类/对象模型使用实例52/144第3章

需求分析

3-1为何要进行需求分析?通常对软件系统有哪些需求?

3-2怎样与用户有效地沟通以获取用户真实需求?

3-3银行计算机储蓄系统工作过程大致以下:储户填写存款单或取款单由业务员键入系统,假如是存款则系统统计存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;假如是取款而且存款时留有密码,则系统首先查对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

请用数据流图描绘本系统功效,并用实体-联络图描绘系统中数据对象。

3-4分析习题2第3题所述机票预订系统。请用实体-联络图描绘本系统中数据对象并用数据流图描绘本系统功效。

53/144分析模型描述工具结构化分析工具DFD、DD和PSPECCFD、CSPEC和STDE-R图

面向对象分析工具用例图,类对象图对象-关系图对象-行为图54/144数据流图DFD描述系统逻辑模型信息在系统中流动和处理用途交流信息工具结构化分析和设计工具

55/144数据流图DFD组成符号圆框代表加工箭头代表数据流向方框代表源点和终点双杠表示数据文件或数据库分层从高层到低层分解前后数据流必须一致命名数据流处理56/144领书单

进书通知

购书单

缺书单

DFD练习—售书系统学生教材购销系统书库保管员57/144领书单进书通知

进书通知

购书单缺书单

DFD练习—售书系统1销售2采购书库保管员学生F1教材存量表

F2缺书记录表

58/144数据字典DDDFD中全部元素定义集合内容数据流数据流分量数据存放处理(普通不用DD描述)59/144数据字典DD定义数据方法自顶向下分解数据数据元素组合方式次序:A+B选择:[A|B]重复:1{A}5可选:(A)60/144数据字典DDDD用途分析阶段交流工具包含控制信息数据库设计基础例子P41例3.661/144加工说明加工说明PSPEC说明DFD中每个加工描述工具结构化语言判定表判定树62/144加工说明—例子结构化语言P42-43,例3.7,3.8判定树P44,例3.9判定表P44,例3.963/144CFD和CSPEC适合实时系统分析与DFD和PSPEC类似和DFD与PSPEC配合使用表示控制流和控制加工64/144CFD和DFD关系

数据条件控制输入加工激活信号控制输出输入数据加工模型PSPEC控制模型CSPEC输出数据

控制输入65/144CFD符号表示控制信息或事件引用控制说明66/144DFD和CFD例子---DFD信号半分钟数据光电管采集计数传送工控机处理实时数据显示班数据处理半小时数据班数据67/144DFD和CFD例子---CFD翻屏人工驱动信息时钟半小时半分钟某型号累加物品经过信号半分钟数据光电管采集计数传送工控机处理实时数据显示班数据处理半小时数据班数据68/144STD描述软件状态变迁符号表示矩形---系统状态箭头---状态转变方向规则表示式---事件/触发行为状态1状态2事件/触发行为69/144STD例子20秒到/翻屏生成最新数据/翻屏半小时到/工控处理半分钟到/传送空闲/采集物品经过/计数采集PLC计数传送工控处理实时翻屏70/144E-R图用于对复杂数据用作数据分析和建模实体、属性和关系组成符号0:11:10:m1:m71/144E-R图例子电话机生产厂商经销商用户生产购置使用经销72/144用例图用例:系统和外部角色交互符号表示:

系统名称系统用例名用例角色关联73/144UseCase图例子保险商务系统签定保险单销售统计客户统计客户保险销售员74/144用例之间关系扩展关系使用关系组合关系《扩展》签保险单签汽车购置契约《使用》《使用》签保险单签汽车保险单签房屋保险单75/144对象-关系图从E-R图演变而来描述对象间关系学生书出版商购置来自1:10:m1:11:176/144对象-行为图描述对象动态行为对象状态转换图事件轨迹图事件流图77/144对象状态转换图例子加纸纸用完故障修复打印故障打印完成接到打印命令就绪打印缺纸故障78/144事件轨迹图例子[打印机忙]保留文件[打印机就绪]打印文件打印文件打印文件计算机打印服务器打印队列打印机79/144事件流图例子[打印机忙]保留文件[打印机就绪]打印文件打印文件计算机打印队列打印服务器打印机80/144软件需求说明(SRS)引言信息描述功效描述行为描述质量确保接口描述其它81/144结构化分析方法基本步骤自顶向下,功效分解分层DFD由后向前,定义数据和加工DD,PSPEC依据需要,分析复杂数据和动态模型E-R图,CFD,CSPEC,STD编写SRS82/144DFD复审父图和子图不平衡未区分局部文件和局部外部项分解速度太快不恪守加工编号规则83/144面向对象分析方法基本步骤定义系统用例领域分析,建立类对象模型建立对象-关系模型建立对象-行为模型编写SRS84/144定义用例回答下列问题—发觉角色使用系统主要功能人是谁?需要借助于系统完成日常工作人是谁?谁来维护、管理系统,保证系统正常工作?系统控制硬件设备有哪些?系统需要和哪些其它系统接口?对系统产生结果感兴趣人和事是哪些?85/144定义用例回答下列问题—发觉用例角色需要从系统中获得哪种功能?需要角色做什么?角色需要读取、产生、删除、修改或存放系统中某种信息吗?系统中发生事件需要通知角色吗?角色需要通知系统某件事吗?这些事件能干什么?系统需要输入/输出是什么信息?这些输入/输出信息从哪儿来?到哪儿去?系统当前实现要解决问题是什么?86/144领域分析

目标发觉或创建可广泛应用类,方便复用

分析特定应用领域

形式公共对象、类、子集合和框架等87/144类对象建模(一)确定分析模型中类对象考查系统用例汇总名词、名词短语得到候选对象确定类对象必要信息、需求、服务多个属性、公共操作88/144类对象建模(二)定义类结构与层次普通----特殊整体----部分定义主题和子系统高层抽象89/144例子电话话筒按键连接线话机人电话人教师大学生小学生学生中学生90/144建立对象—关系模型步骤复审需求描述和用例陈说找出表示关系动词或动词短语用线连接起来,箭头表示方向给连接命名,标上基数91/144对象-关系图例子1:10:11:11:10:11:m1:11:11:m0:m1:11:10:m1:11:11:m1:11:m1:11:m1:1部门流水线工序材料在制品1:m不良品指标数据1:m1:1规格实时数据92/144建立对象行为模型基本过程评定用例,了解系统中交互序列找出驱动交互序列事件为每个用例创建事件轨迹为对象创建状态转换图93/144第四章软件设计概述软件设计任务软件设计基本概念模块化设计设计需要处理问题设计文档及其复审94/144软件设计任务分析模型设计模型设计文档回答Howtodo?能够分为概要设计、详细设计软件设计包含数据设计体系结构设计接口设计过程设计95/144软件设计任务数据设计信息模型软件数据结构体系结构设计定义软件部件间关系接口设计软件内部、外部及与人之间通信过程设计软件组件过程性描述96/144软件设计基本概念模块(module)与构件(component)模块:定义输入、输出和特征程序实体构件:可重复使用软件组件抽象(abstract)与细化(refinement)抽象:分层次考虑和处理问题(数据和过程)细化:从高到低逐步分解过程信息隐藏对其它模块隐藏模块内部数据和过程软件复用Designwithreuse,designforreuse97/144模块化设计(modulardesign)分解(decomposition)模块独立性(moduleindependence)自顶向下(top—downdesign)自底向上(bottom—updesign)98/144分解(decomposition)C(P1+P2)>C(P1)+C(P2) E(P1+P2)>E(P1)+E(P2)

C为问题复杂度,E为解题需要工作量

模块数接口成本最小成本区M软件开发工作量总成本模块成本99/144模块独立性(moduleindependence)内聚(cohesion)模块内部各成份之间耦合(coupling)一个模块与其它模块之间模块独立性高

块内联络强

块间联络弱

100/144内聚1234567

弱强低内聚中内聚高内聚

101/144内聚cohesion1.偶然性内聚

coincidentalcohesion2.逻辑性内聚

logicalcohesion3.时间性内聚

temporalcohesion4.过程性内聚

proceduralcohesion5.通讯性内聚

communicationalcohesion6.次序性内聚

sequentialcohesion7.功效性内聚functionalcohesion102/144逻辑性模块

读入分数平均/最高?计算平均分计算最高分输出结果103/144耦合coupling1.非直接耦合nodirectcoupling

2.数据耦合datacoupling

3.特征耦合

stampcoupling

4.控制耦合controlcoupling

5.外部耦合

externalcoupling6.公共耦合

commoncoupling7.内容耦合

contentcoupling104/144弱耦合数据耦合非直接耦合模块2模块1模块4模块3特征耦合(参数表传递数据结构)105/144公共耦合DCBANL106/144自定向下和自底向上设计自顶向下顶层开始逐步分解由底向上选择关键部分先设计扩展到整个系统107/144设计需要处理问题协同设计谁最适当设计系统某首先?

怎样使组内组员相互了解他人设计?

怎样协调设计组件使整个系统统一?

用户界面设计让用户驾驭软件,不是软件驾驭用户

降低用户记忆

保持界面一致性

并发系统设计怎样确保同时执行组件间对共享数据一致性

108/144并发处理(次序执行)1、

组件1查询X是否为空。2、

组件1被通知X不为空。3、

组件2查询X是否为空。4、

组件2被通知X不为空。5、

组件1出栈,删除最终一个元素。6、组件2想出栈,但X已为空,系统进入非法状态。

109/144并发处理1、

组件1问询栈X是否为空。2、

组件1被通知栈X不为空。3、

组件2问询栈X是否为空。4、

组件2被通知栈X不为空。5、

组件1出栈,删去最终一个元素,并锁住栈X。6、

组件2想出栈,但被通知X已上锁。7、

另一个组件加了一个元素到栈X中。8、

组件2被通知X已开锁(因为外部进程或者因为组件2再次尝试)9、 组件2出栈。

110/144软件设计文档软件设计说明书1)

范围

2)

数据设计

3)

体系结构设计4)

接口设计

5)

模块过程设计

6)其它

包含测试考虑,确保设计满足全部需求,设计约束和一些特殊注解等内容。

111/144设计复审(designreview)及早发觉设计中缺点差错传输复审内容概要设计复审

系统总体结构,模块划分,内外接口

详细设计复审

各个模块详细设计

112/144设计复审(designreview)复审方式FormalreviewDesignreviewmeetingInformalreviewWalk-through113/144第五章传统设计方法结构化设计模型结构化设计方法过程设计Jackson方法114/144PSPEC结构化设计内容数据对象描述CFDDFDE-RDDCSPEC过程设计

接口设计体系结构设计数据设计115/144结构化设计内容结构设计—概要设计体系结构设计SC图接口设计SC图数据库设计物理数据模型过程设计—详细设计模块处理过程N-S图,PAD,PDL等116/144描述工具—SC图SC图组成符号(P88)矩形框来表示模块

带箭头连线表示模块间调用关系传入和传出模块数据流SC图中模块符号传入传出变换源漏控制117/144SC图中模块调用简单调用

选择调用

循环调用ABCDABC118/144面向数据流设计方法DFD图类型

变换型结构

事务型结构

从DFD图到SC图映射

复审DFD图,必要时可再次进行修改或细化判别DFD图结构特征:事务?变换?按照规则,把DFD图为初始SC图改进初始SC图119/144变换结构DFD变换中心传入传出信息传入流传出流

变换流时间120/144事务型结构DFD事务中心接收路径动作路径121/144同时存在两类结构T传入变换传出事务中心122/144变换分析划分DFD图边界

建立初始SC图框架顶层都只含一个用于控制主模块

第一层包含传入、传出和中心变换三个模块

分解SC图各个分支

分解实质上是“映射”

123/144例子—划分DFDPEDCBAWRUVQabcdeprwuv传入部分变换中心传出部分124/144第一级分解MEMTMCMAc,ec,eu,wu,w125/144传入分支分解GetEAtoBReadDDtoEReadABtoCGetBGetCMAc,ecebbcaabddb126/144传出分支分解WriteWUtoVWriteVPutUMEw,uwuuvv127/144变换中心分解MTRPQepc,prrw,u128/144初始SC图MCMTQPRMEWriteWPutUUtoVWriteVAtoBReadAGetBDtoEReadDBtoCGetCGetEMA129/144事务分析在DFD图上确定边界事务中心接收部分(包含接收路径)发送部分(包含全部动作路径)

画出SC图框架

DFD图三个部分分别映射为事务控制模块,接收模块和动作发送模块

分解和细化接收分支和发送分支

130/144例子—划分DFD传入T变换传出接收部分事务中心动作部分131/144Example----first-levelfactoring发送事务控制接收顶层第一层132/144混合结构C1AC3BC2DLFGEKJabb1b2b3c1c2c3defghjklm133/144优化结构设计指导规则

对模块分割、合并和变动调用关系指导规则

提升内聚,降低耦合后简化模块接口少用全局性数据和控制型信息保持高扇入/低扇出标准

作用域/控制域规则

作用域不要超出控制域范围

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论