软件工程原理、方法与应用_第1页
软件工程原理、方法与应用_第2页
软件工程原理、方法与应用_第3页
软件工程原理、方法与应用_第4页
软件工程原理、方法与应用_第5页
已阅读5页,还剩133页未读 继续免费阅读

下载本文档

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

文档简介

1、软件工程原理、方法与应用软件工程-原理、方法与应用课程安排n理论n内容:基本原理、方法和技术n形式:讲授、自学、讨论n实践n内容:构造一个应用系统(包括分析、设计、编码、测试)n形式:分组、分阶段文档、编码、集成软件工程的主要内容n软件工程的基本概念n软件开发模型n软件开发各阶段的任务、技术、方法n传统方法、面向对象方法n软件工程管理n软件质量保证n软件工程环境第一章 绪论n软件与软件危机n软件工程学n传统软件工程和面向对象软件工程n软件工程的应用软件n程序、软件与软件产品独唱-小合唱-合唱-万人大合唱 | | |简单程序 较复杂程序 软件n软件定义: 软件=程序+数据+文档程序:按事先设计的

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

3、势 硬件/软件成本变化趋势硬件软件100% 0%19551970202X软件技术进步落后于需求增长软件危机n原因n客观:软件本身特点n逻辑部件n规模庞大n主观:不正确的开发方法n忽视需求分析n错误认为:软件开发=程序编写n轻视软件维护软件危机n解决途径n组织管理n工程项目管理方法n技术措施n软件开发技术与方法n软件工具软件工程学的范畴n软件工程学n指导计算机软件开发和维护的工程学科 n工程管理+开发技术n软件开发技术n软件开发方法学n软件工具n软件工程环境n软件工程管理n软件管理学n软件经济学n软件度量学两种程序设计方法n程序设计的两次飞跃n结构化程序设计n程序=数据结构+算法n面向对象程序设

4、计n程序 = 对象 + 消息 面向过程和面向对象的编码存款取款利 息 结算帐 户 余额帐户余额利息结算存 款取 款两类软件工程方法n传统软件工程n软件分析 总体设计 详细设计 面向过程的编码 测试 n面向对象软件工程n软件分析与对象抽取 对象详细设计 面向对象的编码 测试 软件工程的应用n软件工程指导中小型软件n软件工程指导大型软件n软件工程的成就n软件工程的局限第二章 软件开发模型n传统开发模型n瀑布模型(waterfall model)n快速原型模型(rapid prototype model)n演化开发模型n增量模型(incremental model)n螺旋模型(spiral mode

5、l)n面向对象开发模型n构件集成模型(component integration model) n形式化开发模型n转换模型(transformational model)n净室模型(cleanroommodel)软件生存周期n计划时期n问题定义n可行性分析n开发时期n需求分析n软件设计n编码n测试n运行时期n软件维护瀑布模型问题定义可行性研究需求分析软件设计编码测试维护计划时期开发时期运行时期瀑布模型n特点n阶段的顺序性和依赖性n推迟实现的观点n质量保证n存在问题n不适合需求模糊的系统快速原型模型需求分析原型开发最终系统设计原型评价最终系统实现用户反馈快速原型模型n特点n快速开发工具n循环n低

6、成本n种类n渐进型n抛弃型增量模型规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户规格说明设计实现和集成交付客户增量1增量2增量3增量n增量模型n增量n小而可用的软件n特点n在前面增量的基础上开发后面的增量n每个增量的开发可用瀑布或快速原型模型n迭代的思路螺旋模型螺旋模型n特点n瀑布模型+快速原型+风险分析n迭代过程n一个螺旋式周期 n确定目标,选择方案,选定完成目标的策略 n风险角度分析该策略 n启动一个开发阶段 n评价前一步的结果,计划下一轮的工作 构件集成模型构件集成模型n特点n面向对象n基于构件库n融合螺旋模型特征n支持软件开发的迭代方法 n软

7、件重用面向对象的基本概念n对象Objectn类Classn继承Inheritancen消息Message n面向对象n对象+类+继承+消息通信对象Objectn客观世界中的实体n状态(静态属性 Attributes)n操作(动态行为 Methods)n对象:=nIdentifiernMethod SetnData StructurenMessage Interface对象的特点n以数据为中心n对象是主动的n实现数据封装n本质上有并行性n模块独立性好类Class和实例Instancen类n相同属性和行为的对象的抽象n实例n特定类所描述的一个具体对象n子类直接继承父类的数据和操作n继承的传递性,单

8、继承、多重继承继承(Inheritance)家具桌子椅子衣柜床椅子的实例多态性Polymorphismn概念n不同类层次共享一个方法名n相同的参数特征和返回值类型n多种不同实现nC+中虚函数实现n动态联编重载Overloadingn函数重载n同一作用域n多个名字相同的函数n参数特征不同n静态联编n运算符重载消息Messagen对象间的交互手段n形式:nMessage:dest,op,paranDestination ObjectnOperationnParameters转换模型形式化规格说明与需求比较后修正变换2变换1变换n测试形式化开发记录系统需求目标系统转换模型n特点n形式化软件开发方法

9、n形式化需求规格说明 n变换技术n程序自动生成技术 n确保正确净室模型需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证需求收集盒结构规约形式化设计统计性使用测试正确性证明代码生成与检查测试计划认证增量1增量2增量n净室模型n净室思想n在分析和设计阶段消除错误n在“洁净”状态下实现软件制作n形式化n盒结构表示分析和设计n正确性验证n增量模型小结n软件开发模型是不断发展的n各种软件开发模型各有优缺点n选用时不必拘泥与某种模型n可组合多种模型n也可根据实际创建新的模型第三章 软件需求分析n需求

10、分析的任务与步骤 n需求获取的常用方法 n分析建模 n软件需求说明 n结构化分析方法n面向对象分析方法需求分析的任务和步骤n需求分析的任务n建立分析模型 n编写需求说明 n需求分析的步骤n需求获取 n需求提炼 n需求描述 n需求验证 需求获取的常用方法n联合分析小组 n用户代表、领域专家和系统分析员n客户访谈 n充分准备,寻找共同语言 n循循序渐进、逐步逼近 n问题分析与确认 n多个来回分析建模n结构化分析模型n面向对象分析模型n分析模型描述工具nDFD、DD和PSPEC nCFD、CSPEC和STD nE-R图 n用例图,对象-关系图,对象-行为图 结构化分析模型加工说明数据对象说明CFD,

11、STD图DFD图E-R图DD控制说明面向对象分析模型属性、操作、协作者对象-行为模型对象-关系模型类/对象模型使用实例分析模型描述工具n结构化分析工具nDFD、DD和PSPEC nCFD、CSPEC和STD nE-R图 n面向对象分析工具n用例图,类对象图n对象-关系图n对象-行为图数据流图DFDn描述系统逻辑模型n信息在系统中的流动和处理n用途n交流信息的工具n结构化分析和设计的工具 数据流图DFDn组成符号n圆框代表加工n箭头代表数据流向n方框代表源点和终点n双杠表示数据文件或数据库n分层n从高层到低层n分解前后的数据流必须一致n命名n数据流n处理领书单 进书通知 购书单 缺书单 DFD练

12、习售书系统学生教材购销系统书 库保 管员领书单 进书通知 进书通知 购书单缺书单 DFD练习售书系统 1销售 2采购书库保 管员学生F1教材存量表 F2缺书登记表 数据字典DDnDFD中所有元素的定义的集合n内容n数据流n数据流分量n数据存储n处理(一般不用DD描述)数据字典DDn定义数据的方法n自顶向下分解数据n数据元素的组合方式n顺序:A+Bn选择:A|Bn重复:1A5n可选: (A)数据字典DDnDD的用途n分析阶段的交流工具n包含控制信息n数据库设计的基础n例子nP41加工说明n加工说明PSPECn说明DFD中的每个加工n描述工具n结构化语言n判定表n判定树加工说明例子n结构化语言nP

13、42-43, n判定树nP44, n判定表nP44, CFD和CSPECn适合实时系统的分析n与DFD和PSPEC类似n和DFD与PSPEC配合使用n表示控制流和控制加工CFD和DFD的关系 数据条件控制输入加工激活信号控制输出输入数据加工模型PSPEC控制模型CSPEC输出数据 控制输入CFD的符号表示控制信息或事件引用控制说明DFD和CFD例子-DFD信号半分钟数据光电管采集计数传送工控机处理实时数据显示班数据处理半小时数据班数据DFD和CFD例子-CFD翻屏人工驱动信息时钟半小时半分钟某型号累加物品经过信号半分钟数据光电管采集计数传送工控机处理实时数据显示班数据处理半小时数据班数据STD

14、n描述软件状态变迁n符号表示n矩形-系统状态n箭头-状态转变方向n规则表达式-事件/触发行为状 态1状 态2事件/触发行为STD例子20秒到/翻屏生成最新数据/翻屏半小时到/工控处理半分钟到/传送空闲/采集物品经过/计数采集PLC计数传送工控处理实时翻屏E-R图n用于对复杂数据的用作数据分析和建模n实体、属性和关系n组成符号0:11:10:m1:mE-R图例子电话机生产厂商经销商用户生产购买使用经销用例图n用例:系统和外部角色的交互n符号表示: 系统名称系统用例名用例角色关联Use Case图例子保险商务系统签定保险单销售统计客户统计客户保险销售员用例之间的关系n扩展关系n使用关系n组合关系扩

15、展签保险单签汽车购买契约使用使用签保险单签汽车保险单签房屋保险单对象-关系图n从E-R图演变而来n描述对象间关系学生书出版商购买来自 1:1 0:m 1:1 1:1 对象-行为图n描述对象的动态行为n对象状态转换图n事件轨迹图n事件流图对象状态转换图例子加纸纸用完故障修复打印故障打印完成接到打印命令就绪打印缺纸故障事件轨迹图例子打印机忙保存文件打印机就绪打印文件打印文件打印文件计算机打印服务器打印队列打印机事件流图例子打印机忙保存文件打印机就绪打印文件打印文件计算机打印队列打印服务器打印机软件需求说明(SRS)n引言n信息描述n功能描述n行为描述n质量保证n接口描述n其它结构化分析方法n基本步

16、骤n自顶向下,功能分解n分层DFDn由后向前,定义数据和加工nDD, PSPECn根据需要,分析复杂数据和动态模型nE-R图,CFD,CSPEC,STDn编写SRSDFD的复审n父图和子图不平衡n未区分局部文件和局部外部项n分解的速度太快n不遵守加工编号规则面向对象分析方法n基本步骤n定义系统的用例n领域分析,建立类对象模型n建立对象-关系模型n建立对象-行为模型n编写SRS定义用例n回答问题发现角色n使用系统主要功能的人是谁? n需要借助于系统完成日常工作的人是谁? n谁来维护、管理系统,保证系统正常工作? n系统控制的硬件设备有哪些? n系统需要和哪些其它系统接口? n对系统产生的结果感兴

17、趣的人和事是哪些? 定义用例n回答问题发现用例n角色需要从系统中获得哪种功能?需要角色做什么? n角色需要读取、产生、删除、修改或存储系统中的某种信息吗? n系统中发生的事件需要通知角色吗?角色需要通知系统某件事吗?这些事件能干什么? n系统需要输入/输出的是什么信息?这些输入/输出信息从哪儿来 ?到哪儿去? n系统当前的实现要解决的问题是什么? 领域分析 n目的n发现或创建可广泛应用的类,以便复用 n分析特定的应用领域 n形式n公共对象、类、子集合和框架等类对象建模(一)n确定分析模型中的类对象n考察系统用例n汇总名词、名词短语n得到候选对象n确定类对象n必要的信息、需求、服务n多个属性、公

18、共操作类对象建模(二)n定义类结构与层次n一般-特殊n整体-部分n定义主题和子系统n高层抽象例子电话话筒按键连接线话机人电话人教师大学生小学生学生中学生建立对象关系模型n步骤n复审需求描述和用例陈述n找出表示关系的动词或动词短语n用线连接起来,箭头表示方向n给连接命名,标上基数对象-关系图例子:0::0:1:m0::0:部门流水线工序材料在制品:不良品指标数据:规格实时数据建立对象行为模型n基本过程n评估用例,理解系统中的交互序列n找出驱动交互序列的事件n为每个用例创建事件轨迹n为对象创建状态转换图第四章 软件设计概述n软件设计的任务n软件设计的基本概念n模块化设计n设计需要处理的问题n设计文

19、档及其复审软件设计的任务n分析模型 设计模型 设计文档n回答How to do?n可以分为概要设计、详细设计n软件设计包括n数据设计n体系结构设计n接口设计n过程设计软件设计的任务n数据设计n信息模型 软件数据结构n体系结构设计n定义软件部件间的关系n接口设计n软件内部、外部及与人之间的通信n过程设计n软件组件的过程性描述软件设计的基本概念n模块(module)与构件(component)n模块:定义输入、输出和特性的程序实体n构件:可重复使用的软件组件n抽象(abstract)与细化(refinement)n抽象:分层次考虑和处理问题(数据和过程)n细化:从高到低的逐步分解过程n信息隐藏n对

20、其它模块隐藏模块内部的数据和过程n软件复用nDesign with reuse, design for reuse 模块化设计(modular design)n分解(decomposition)n模块独立性(module independence)n自顶向下(topdown design)n自底向上(bottomup design)分解(decomposition)C (P1+P2)C (P1)+C (P2)E (P1+P2)E (P1)+E (P2) C为问题的复杂度,E为解题需要的工作量 模块数接口成本最小成本区M软件开发工作量总成本模块成本模块独立性(module independenc

21、e)n内聚(cohesion)n模块内部各成分之间n耦合(coupling)n一个模块与其它模块之间n模块的独立性高 n块内联系强 n块间联系弱 内聚 弱 强低内聚中内聚高内聚 内聚 cohesionn.偶然性内聚 coincidental cohesionn.逻辑性内聚 logical cohesionn.时间性内聚 temporal cohesionn.过程性内聚 procedural cohesionn.通讯性内聚 communicational cohesionn.顺序性内聚 sequential cohesionn.功能性内聚 functional cohesion逻辑性模块 读入分

22、数平均/最高?计算平均分计算最高分输出结果耦合 couplingno direct coupling2.数据耦合data coupling3.特征耦合 st coupling4.控制耦合control coupling 5.外部耦合 external coupling6.公共耦合 common coupling7.内容耦合 content coupling弱耦合数据耦合非直接耦合模块2模块1模块4模块3特征耦合(参数表传递数据结构)公共耦合自定向下和自底向上设计自顶向下顶层开始逐步分解由底向上选择关键部分先设计扩展到整个系统设计需要处理的问题n协同设计n谁最合适设计系统的某一方面? n如何使组

23、内成员相互了解别人的设计? n如何协调设计组件使整个系统统一? n用户界面设计n让用户驾驭软件,不是软件驾驭用户 n减少用户的记忆 n保持界面的一致性 n并发系统设计n怎样确保同时执行的组件间对共享数据的一致性 并发处理(顺序执行)1、 组件1查询X是否为空。2、 组件1被告知X不为空。3、 组件2查询X是否为空。4、 组件2被告知X不为空。5、 组件1出栈,删除最后一个元素。6、 组件2想出栈,但X已为空,系统进入非法状态。 并发处理1、 组件1询问栈X是否为空。2、 组件1被告知栈X不为空。3、 组件2询问栈X是否为空。4、 组件2被告知栈X不为空。5、 组件1出栈,删去最后一个元素,并锁

24、住栈X。6、 组件2想出栈,但被告知X已上锁。7、 另一个组件加了一个元素到栈X中。8、 组件2被告知X已开锁(由于外部进程或者因为组件2 再次尝试)9、 组件2出栈。 软件设计文档n软件设计说明书n1) 范围 n2) 数据设计 n3) 体系结构设计n4) 接口设计 n5) 模块的过程设计 n6) 其他 包括测试的考虑,确保设计满足所有需求,设计约束和一些特殊注解等内容。 设计复审(design review)n及早发现设计中的缺陷n差错的传播n复审的内容n概要设计复审 n系统的总体结构,模块划分,内外接口 n详细设计复审 n各个模块的具体设计 设计复审(design review)n复审的方

25、式nFormal reviewnDesign review meetingnInformal reviewnWalk-through第五章 传统的设计方法n结构化设计模型n结构化设计方法n过程设计nJackson方法PSPEC结构化设计的内容数据对象描述CFDDFDE-RDDCSPEC过程设计 接口设计体系结构设计数据设计结构化设计的内容n结构设计概要设计n体系结构设计nSC图n接口设计nSC图n数据库设计n物理数据模型n过程设计详细设计n模块的处理过程nN-S图,PAD,PDL等描述工具SC图nSC图的组成符号 (P88)n矩形框来表示模块 n带箭头的连线表示模块间的调用关系n传入和传出模块

26、的数据流 nSC图中的模块符号n传入n传出n变换n源n漏n控制 SC图中的模块调用n简单调用 n选择调用 n循环调用ABCDABC面向数据流的设计方法nDFD图的类型 n变换型结构 n事务型结构 n从DFD图到SC图的映射 n复审DFD图,必要时可再次进行修改或细化n鉴别DFD图的结构特征:事务?变换?n按照规则,把DFD图为初始的SC图 n改进初始的SC图 变换结构的DFD变换中心传入传出信息传入流传出流 变换流时间事务型结构DFD事务中心接受路径动作路径同时存在两类结构传入变换传出事务中心变换分析变换分析n划分DFD图的边界 n建立初始SC图的框架n顶层都只含一个用于控制的主模块 n第一层包括传入、传出和中心变换三个模块 n分解SC图的各个分支 n分解实质上是“映射” 例子划分DFDPEDCBAWRUVQabcdeprwuv传入部分变换中心传出部分第一级分解MEMTMCMAc,ec,eu,wu,w传入分支的分解GetEAtoBReadDDtoEReadABtoCGetBGetC MAc,ecebbcaabddb传出分支的分解 WriteW UtoV Write V P

温馨提示

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

最新文档

评论

0/150

提交评论