1、软件工程导论 (第4版),普通高校本科计算机专业特色教材精选,张海藩 编著,授课教师:殷 锋 西南民族大学计算机科学与技术学院,授课教师简介,殷锋,男,侗族,博士,副教授。34岁,贵州榕江县人。计算机软件工程教研室主任,四川省计算机用户协会理事,中国计算机学会高级会员。 1993年参加工作,曾被四川省人民政府授予教学成果奖1项,西南民族大学科研成果奖3项。近年来主要从事计算机数据挖掘、中间件、分布式计算、软件测试等方向的研究工作,曾主持和参与校级科研项目二十余项,主持完成省级课题1项、参与完成2项。于2004年度获得“四川省青年软件创新基金”资助。已在中文核心期刊及相关学术杂志上发表学术论文4
2、0余篇,多篇被美国权威索引“EI”检索。长期担任“软件工程”、“计算机科学与技术”专业多门专业课、跨系专业课等的教学工作。系我校首批应用电子课件进行教学和首批实施“双语”教学的教师。2007年被评为 “西南民族大学青年优秀骨干教师”。,E-mail:yf_ 作业提交FTP:/211.83.242.122(用户名:yfstu 密码:yfstu),考勤:10 平时作业:20 期末:70,考核标准,总 目 录,第1章 软件工程学概述第2章 可行性研究第3章 需求分析第4章 形式化说明技术第5章 总体设计第6章 详细设计第7章 实现,总 目 录,第8章 维护第9章 面向对象方法学引论第10章 面向对象
3、分析第11章 面向对象设计第12章 面向对象实现第13章 软件项目管理,第1章 软件工程学概述,1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题,1.1 软件危机,1.1.1 软件危机介绍1968年由NATO (北大西洋公约组织)在德国Garmish召开的学术会议上,Fritz Bauer首先提出了“软件工程”概念。,软件技术面临的问题,复杂性生产率,例:Windows95有1000万行代码Windows2000有5000万行代码 Exchange2000和 Windows2000开发人员结构,软件危机的主要特征,软件开发周期大大超过规定 日期;软
4、件开发成本严重超标;软件质量难于保证。,衡量一个软件成功的标准在于:,用户在用 用户可很容易地做完要做的事 失败的根本原因: 开发人员写出的东西达不到用户的要求(人的问题.技术问题),处在十字路口的中国软件产业,主权大国必须建立基于自主技术的、 完整的软件产业体系。软件本国提供率:中国1/3左右,美国97%“印度模式”还是“中国模式”(1)、(2)软件人才结构不合理,缺乏中高级软 件人才;此外,软件人员缺乏软件工程化的概念也是问题之一。,1.1.2 产生软件危机的原因,在软件开发和维护的过程中存在这么多严重问题,原因主要在于:一方面与软件本身的特点有关 另一方面也和软件开发与维护的方法不正确有
5、关,1.1.3 消除软件危机的途径,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,第1章 软件工程学概述,1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题,1.2.1 软件工程的介绍,Fritz Bauer在NATO会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。”,软件工程的定义,IEEE【IEE83】给出的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法
6、。”,IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”,综合以上得软件工程的定义为:,软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。,软件工程是一门交叉学科,软件工程的主要研究内容 软件开发技术: 软件开发方法学软件开发过程软件工具和软件工程环境 软件工程管理: 软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的, 随着人们对软件系统的研制开发和生产的理解。 应该用发展的眼光来看待它。,软件工程的本质特性,1. 软
7、件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中是用具有一种文化背景的人的思维去取代具有另一种文化背景的人的工作方式,1.2.2 软件工程的基本原理,1. 用分阶段的生命周期计划严格管理 2. 坚持进行阶段评审 3. 实行严格的产品控制 4. 采用现代程序设计技术 5. 结果应能清楚地审查 6. 开发小组的人员应该少而精 7. 承认不断改进软件工程实践的必要性,1.2.3 软件工程方法学,软件生命周期全过程中使用的一整套技术方法的集合称为
8、方法学(methodology),也称为范型(paradigm)。,软件工程 一种层次化技术,工具,方法,过程,质量焦点,Software engineering layers,软件工程三个要素:方法、工具、过程,软件工程框架,可,用,性,性,性,确,正,合,算,选取适宜的开发模型,采用合适的设计方法,提供高质量的工程支持,重视软件工程的管理,基本过程,原则,目标,过,程,支 持 过 程,组 织 过 程,软件工程与一般工程的差异,软件是逻辑产品而不是实物产品 软件的功能依赖于硬件和软件的运行环境以及人们对它的操作 软件设计的复杂性 软件特征: 功能的多样性实现的多样性能见度低软件结构合理性差
9、智力密集及知识产权保护,软件工程知识结构,软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量,“软件工程”课程 与其它软件专业课的区别,(1) 立足于系统的整体。 (2) 讲授系统分析、系统设计、测试及维护的理论和方法。 (3) 构筑一个软件系统,实践软件开发全过程。,“软件工程”课程教学与实践的目标,转变对软件的认识:上升程序 系统转变思维定式:上升程序员 系统工程师(系统分析员)工程化训练,“一个好的工业,应有一套 良好的标准来配套”,软件的工业化生产过程应具备的特点: 明确的工作步骤 详细具体的规范化文档 明确的质量评价标准,软件工程技
10、术的两个明显特点:,软件产品的标准化,软件开发过程的标准化,第1章 软件工程学概述,1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题,1.3 软件生命周期(Software Life Cycle)软件产品或软件系统从设计、投入使用到被淘汰的全过程。,软件生存期的阶段划分,(1)可行性研究与计划 (2)需求分析 (3)总体设计 上游 (4)详细设计 (5)实现 (6)集成测试 (7)确认测试 下游 (8)使用和维护 (根据国标计算机软件开发规范),只考虑 编写程序,涉及整个 软件生存 周期,扩展到,软件工作的范围,第1章 软件工程学概述,1.1 软件
11、危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题,1.4 软件过程,软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型软件生存期模型软件工程范型,1. 瀑布模型 (线形顺序模型),可行性研究与计划,需求分析,设计,编码,运行维护,测试,定义 阶段,开 发 阶 段,维护阶段,按照传统瀑布模型开发软件的特点,1.阶段间具有顺序性和依赖性。 2.推迟实现的观点。 3.每
12、个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。,2. 原型模型(快速成型模型),建造/修改原型,用户测试 运行原型,听取用户意见,原型范型,采用原型模型的软件生存周期,分析定义 系统需求,生成 原型,系统 设计,程序 设计,编码,测试,运 行 和维护,原型化,含原型化的 软件生存期,1.4.3 增量模型(递增模型),先完成一个系统子集的开发,再按同样的开发步骤增加功能 (系统子集),如此递增下去直至满足全部系统需求。系统的总体设计在初始子集设计阶段就应作出设想。,分析,增量模型,设计,编码,测试,分析,设计,编码,测试,分析,设计,编码,测试,分析,设计,编码,测试,增量1,增量2,增量3,增量n,增量1 交付客户,增量2 交付客户,增量3 交付客户,增量n 交付客户,日历时间,1.4.4 螺旋模型,风险 分析,工程 实施,用户通信,用户 评估,产品维护项目,产品增强项目,新产品开发项目,概念开发项目,计划,建造及发布,第1章 软件工程学概述,1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题,