1、1,软件工程,课时计划表与学时 教学要求 考查形式 教材和参考书,主讲:何丽萍,2,课时计划表,授课内容 28实验内容 4 (+4),总学时 28+4:,3,教学要求,课前预习、课后复习 大课、上机辅导课不得缺席 作业按时完成,4,考查形式,平时成绩共占 30 分。 期末考试占 70 分。 课程总成绩为上述成绩之和,参考书,1郑人杰、殷人昆、陶永雷;实用软件工程(第二版)。清华大学出版社,1997版。2屠立德、屠祁:软件工程方法,机械工业出版社,1996版。3王博、晓龙:面向对象的建模、设计技术与方法。北京希望电脑公司,1996版。4冯玉琳、黄涛、倪彬:对象技术导论。科学出版社,1998版。
2、5朱三元 钱乐秋 宿为民:软件工程概论。 科学出版社,2002.1,1 ROGER S PRESSMAN著, 梅宏译. 软件工程:实践者的研究方法(Software Engineering: A Practitioner Approach)第5版,机械工业出版社 20022 Ian Sommerville著Software Engineering, 6th Edition,机械工业出版社(影印版)2003-043 Software Engineering:Theory and Practice, Second Edition Shari L.Pfleeger 高等教育出版社(影印版) 2001
3、.8,7,我的联系方法:,email: 办公电话: 83492083,8,1.1 计算机软件概念1.2 软件的发展1.3 软件危机与软件问题1.4 软件工程与开发准则1.5 软件生命周期1.6 软件开发模型1.7 小结,第1章 软件工程概述,软件 是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合 程序 是按事先设计的功能和性能要求执行的指令序列 数据 是使程序能正常操纵信息的数据结构 文档 是与程序开发,维护和使用有关的图文材料,10,软件的特点,软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性 软件的生产与硬件不同,在它的开发过程中没有明显的制造过
4、程 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,11,硬件的故障率曲线演示,12,软件的故障率曲线演示,软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工艺的开发方式 软件本身是复杂的 实际问题的复杂性 程序逻辑结构的复杂性 软件成本相当昂贵 相当多的软件工作涉及到社会因素,14,15,软件技术面临的问题,规模复杂性生产率,例:Windows95有1000万行代码Windows2000有5000万行代码, 3000多个工程师,几百个小团队。Exchange2000和 Windows2000开发人员结构,17,软件危机的主要特征
5、,软件开发周期大大超过规定 日期;软件开发成本严重超标;软件质量难于保证。,成功的标准:,用户在用 用户可很容易做完要做的事失败的根本原因: 开发人员写出的东西达不到 用户要求(人的问题.技术问题),19,新世纪软件产业的趋势,网络化趋势:计算机与通信的融合趋势万维网智能网络 服务化趋势:“打包式”软件 “服务式”软件 全球化趋势:共享,处在十字路口的中国软件产业,主权大国必须建立基于自主技术的、 完整的软件产业体系。软件本国提供率:中国1/3左右,美国97%“印度模式”还是“中国模式”软件人才结构不合理缺乏中高级软件人才; 软件人员缺乏软件工程化的概念。,21,1968年由NATO (北大西
6、洋公约组织)在德国Garmish召开的学术会议上,Feitz Bauer首先提出了“软件工程”概念,引入了现代软件开发的方法,希望用工程化的原则和方法来克服软件危机。,软件工程的背景和历史,22,软件工程的定义,Fritz Bauer在NATO会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。”,23,软件工程的定义,IEEE【IEE83】给出的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法。”,24,软件工程的定义,IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的
7、开发、运行和维护的过程,即将工程化应用于软件中。”,25,软件工程的定义,软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。,软件工程是一门交叉学科,软件工程的主要研究内容 软件开发技术:软件开发方法学软件开发过程软件工具和软件工程环境 软件工程管理:软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。,软件工程 一种层次化技术,工具,方法,过程,质量焦点,Software engineering layers,软件工程三个要素:方法、工具、过程,软
8、件工程框架,可,用,性,性,性,确,正,合,算,选取适宜的开发模型,采用合适的设计方法,提供高质量的工程支持,重视软件工程的管理,基本过程,原则,目标,过,程,支 持 过 程,组 织 过 程,29,两种程序设计方法,程序设计的两次飞跃结构化程序设计 程序=数据结构+算法面向对象程序设计 程序 = 对象 + 消息,30,面向过程和面向对象的编码,31,两类软件工程方法,传统软件工程 软件分析 总体设计 详细设计 面向过程的编码 测试 面向对象软件工程 软件分析与对象抽取 对象详细设计 面向对象的编码 测试,32,软件工程的应用,软件工程指导中小型软件 软件工程指导大型软件 软件工程的成就 软件工
9、程的局限,33,软件开发模型,传统开发模型 瀑布模型(waterfall model) 快速原型模型(rapid prototype model) 演化开发模型 增量模型(incremental model) 螺旋模型(spiral model) 面向对象开发模型 构件集成模型(component integration model) 形式化开发模型 转换模型(transformational model) 净室模型(cleanroommodel),34,软件生存周期,(Software Life Cycle) 软件产品或软件系统从设计、投入使用到被淘汰的全过程。,35,软件生存周期,计划时期
10、 问题定义 可行性分析 开发时期 需求分析 软件设计 编码 测试 运行时期 软件维护,新的国际标准定义的软件生存过程 (1995 ISO/IEC 12207),软件生存期过程,支持过程,组织过程,主要过程,获 取 过 程,供 应 过 程,开 发 过 程,运 行 过 程,维 护 过 程,文 档 编 制 过 程,配 置 管 理 过 程,质 量 保 证 过 程,验 证 过 程,确 认 过 程,联 合 评 审 过 程,审 核 过 程,问 题 解 决 过 程,管 理 过 程,基 础 设 施 过 程,改 进 过 程,培 训 过 程,37,只考虑 编写程序,涉及整个 软件生存 周期,扩展到,软件工作的范围,
11、传统软件开发模型,软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型软件生存周期模型软件工程范型,39,1)瀑布模型,计划时期,开发时期,运行时期,40,瀑布模型演示,41,瀑布模型,特点 阶段间的顺序性和依赖性 推迟实现的观点 质量保证 存在问题 不适合需求模糊的系统,2)原型模型(快速原型模型 Rapid Prototype Model),建造/修改原型,用户测试 运行原型,听取用户意见,43,快速原型模型,44,快速原型模型,特点 快速开发工具 循环 低成本 种类 渐进型 抛弃型,
12、45,演化模型,由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次 第一次只是试验开发,其目标只是在于探索可行性,弄清软件需求 第二次则在此基础上获得较为满意的软件产品,46,1)增量模型(递增模型),先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。系统的总体设计在初始子集设计阶段就应作出设想。,47,增量模型,规格说明,设计,实现和集成,交付客户,规格说明,设计,实现和集成,交付客户,规格说明,设计,实现和集成,交付客户,规格说明,设计,实现和集成,交付客户,增量
13、1,增量2,增量3,增量n,48,增量模型,增量 小而可用的软件 特点 在前面增量的基础上开发后面的增量 每个增量的开发可用瀑布或快速原型模型 迭代的思路,2)螺旋模型,风险 分析,工程 实施,用户通信,用户 评估,产品维护项目,产品增强项目,新产品开发项目,概念开发项目,计划,建造及发布,“基于版本发布”的特点,V1.0,功 能,时间,V2.0,V1.1,Trade-off Decision (折中决定),可 靠 性,发布日期,功 能,最优,约束范围,可接受,正确的Trade-off 决定,52,螺旋模型,53,螺旋模型,特点 瀑布模型+快速原型+风险分析 迭代过程 一个螺旋式周期 确定目标
14、,选择方案,选定完成目标的策略 风险角度分析该策略 启动一个开发阶段 评价前一步的结果,计划下一轮的工作,54,面向对象的基本概念,对象Object 类Class 继承Inheritance 消息Message 面向对象 对象+类+继承+消息通信,55,对象Object,客观世界中的实体 状态(静态属性 Attributes) 操作(动态行为 Methods) 对象:= Identifier Method Set Data Structure Message Interface,56,对象的特点,以数据为中心 对象是主动的 实现数据封装 本质上有并行性 模块独立性好,57,类Class和实例I
15、nstance,类 相同属性和行为的对象的抽象 实例 特定类所描述的一个具体对象,58,子类直接继承父类的数据和操作继承的传递性,单继承、多重继承,继承(Inheritance),家具,桌子,椅子,衣柜,床,椅子的实例,59,多态性Polymorphism,概念 不同类层次共享一个方法名 相同的参数特征和返回值类型 多种不同实现 C+中虚函数实现 动态联编,60,重载Overloading,函数重载 同一作用域 多个名字相同的函数 参数特征不同 静态联编 运算符重载,61,消息Message,对象间的交互手段 形式: Message:dest,op,para Destination Objec
16、t Operation Parameters,62,可重用部件组装模型(构件集成模型),使用重用技术的软件工程模型 构件(components):可重用的软件成份 可复用性(Reusability) 集成化软件开发环境(ISEE),63,构件集成模型,基于构件的软件工程(CBSE)过程模型,构 件 开 发 分析 设计 编程 测试,领域分析,系统 测试,构件提交,领域专家经验,现有系统资料,领域构 件需求,构件/构架库,领域构架,领 域 构 件,系统 开发,系统专用构件,应用 系统,构件生产线,领域构架,领域构件,问题域,用户需求,系统生产线,系 统 组 装分析 设计 编程,构架细化,专 用 构
17、 件 开 发 分析 设计 编程 测试,软件生产线,66,构件集成模型,特点 面向对象 基于构件库 融合螺旋模型特征 支持软件开发的迭代方法 软件重用,67,2.5 形式化方法模型,转换模型(Transformational Model) 净室模型(Cleanroom Model),68,1 )转换模型,69,转换模型,特点 形式化软件开发方法 形式化需求规格说明 变换技术 程序自动生成技术 确保正确,70,2) 净室模型,需求 收集,盒结构 规约,形式化 设计,统计性使 用测试,正确性 证明,代码生成 与检查,测试计划,认证,需求 收集,盒结构 规约,形式化 设计,统计性使 用测试,正确性 证明,代码生成 与检查,测试计划,认证,需求 收集,盒结构 规约,形式化 设计,统计性使 用测试,正确性 证明,代码生成 与检查,测试计划,认证,增量1,增量2,增量n,71,净室模型,净室思想 在分析和设计阶段消除错误 在“洁净”状态下实现软件制作 形式化 盒结构表示分析和设计 正确性验证 增量模型,72,小结,软件开发模型是不断发展的 各种软件开发模型各有优缺点 选用时不必拘泥与某种模型 可组合多种模型 也可根据实际创建新的模型,