收藏 分享(赏)

第1章 绪论09125.ppt

上传人:dzzj200808 文档编号:5753500 上传时间:2019-03-15 格式:PPT 页数:70 大小:1.64MB
下载 相关 举报
第1章 绪论09125.ppt_第1页
第1页 / 共70页
第1章 绪论09125.ppt_第2页
第2页 / 共70页
第1章 绪论09125.ppt_第3页
第3页 / 共70页
第1章 绪论09125.ppt_第4页
第4页 / 共70页
第1章 绪论09125.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

1、第一章 绪论,武汉大学 计算机学院 软件工程课程组,软件工程 Software Engineering,课程性质,计算机科学与技术专业 必修课信息安全专业 选修课54学时,3学分教学目的从工程化角度培养学生从事大型软件系统的开发方法、软件测试与管理的能力。 教学方式讲授与学生选择实际软件项目按工程化方法实践相结合,教材,软件工程原理及应用 陈世鸿等 武汉大学出版社,参考书,软件工程导论 张海藩 清华大学出版社,SOFTWARE ENGINEERING A Practitioners Approach Roger S. Pressman 清华大学出版社,评分方式,期末考试 闭卷 70%课程实习

2、+ 课堂提问 30% 课程实习: 每个小组由46人组成: 组 长: 负责制定计划,协调各项工作 系统分析员:负责系统分析,编写系统分析说明书 系统设计员:负责系统设计,编写概要和详细设计说明书 编 码 员: 负责编码,编写主程序 软件测试员:负责测试,编写测试报告 用 户 代表: 负责用户需求,编写用户手册,培训用户 实习报告要求及格式 开发标准:GB8567-88,思考?,什么是软件?在软件开发过程中遇到哪些问题?如何解决这些问题?,第1章 绪论,什么是软件?有何特点?何谓软件危机?如何解决?软件工程是一门什么学科?什么是软件的生存期?有哪些软件开发模型?,计算机系统,硬件摩尔法则软件开发生

3、产率低,质量差难以维护成本上升,软件发展制约了计算机系统发展,软件危机 Software Crisis计算机软件工程学 软件工程 (结构化、面向对象) Software Engineering,一、软件及其发展,软件的组成 软件的特点 软件的发展,1. 软件的组成,software = program software developing = programming/coding,1983年IEEE为软件下的定义是:计算机程序、方法、规则和相关的文档资料以及在计算机上运行所必需的数据。,20世纪50年代:software = program 20世纪60年代:software = progr

4、am + documents 20世纪70年代:software = program + documents + data,1. 软件的组成,software = program + documents + data software developing programming/coding,目前对软件比较公认的解释是:软件是程序,支持程序运行的数据以及与程序有关的文档的完整集合。,程序按事先设计的功能和性能要求执行的指令序列 文档与程序开发,维护和使用有关的图文材料 数据使程序能正常操纵信息的数据结构,程序 用程序设计语言描述的,适合于计算机处理的语句序列,文档,分类开发文档用户文档管理文

5、档,作用记录通信和交流管理和维护,软件(Software),计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。 软件的分类方法很多。,2. 软件的特点,软件是一种逻辑实体,具有抽象性。更依赖于人不磨损、不老化开发成本、进度难估计正确性难保证维护困难 纠错性维护 完善性维护 适应性维护 预防性维护软件的生产与硬件不同,软件一旦研制开发成功,其生产过程变成简单的复制过程。软件对硬件和环境有着不同程度的依赖性。软件本身是复杂的。,软件可长期使用,3. 软件的发展,二、软件危机与软件工程,软件危机(Software Crisis)软件萧条 depression软件困扰 a

6、ffliction,1. 软件危机,含义表现原因克服危机的途径,(1)软件危机的含义,如何开发软件,满足需求如何维护已有软件,(2)软件危机的表现,软件成本高,软件成本在计算机系统中所占比例逐年增长,(2)软件危机的表现,难于控制开发进度进度拖延,成本失去控制损害软件质量,引起用户不满软件开发中人的因素导致,对项目进度和工作量估计的“二八定律”: 一般人主观上认为已经完成了80,但实际上只完成了20。,(2)软件危机的表现,软件工作量估计困难如果有一个软件项目,估计需要12人月工作量。指定由3个人,在4个月内完成。假定第一个月的任务花了两个月才完成,则管理者该怎么办呢?Brooks:“在已拖延

7、的软件项目上,增加人力只会使其更难按期完成。 ”,(2)软件危机的表现,软件质量低1979,US Government Accounting Office对政府项目进行了调查,(2)软件危机的表现,软件修改、维护困难,19761981数据:维护成本约占总成本的67%,“纠正一个错误带来更多新错误 ”“错误发现得越晚,纠正错误所要付出的代价也就越大 ” 维护成本所占比例大,(3)原因,需求问题用户描述不精确开发人员理解不一致、随意性大管理问题“软件开发离不开管理!”方法、工具问题软件本身的特点,(4)克服危机的途径,对计算机软件有一个正确的认识(软件程序) 必须充分认识到软件开发不是某种个体劳动

8、的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目过程。 开发和使用更好的软件工具。 推广使用在实践中总结出来的开发软件的成功技术和方法。 软件工程(Software Engineering,SE)1968,NATO,Fritz Bauer提出 工程的概念、原理、技术和方法以及好的工具进行 软件的开发、管理和维护,2. 软件工程,研究“大型”软件开发和维护的技术、方法、工具、环境和管理的工程学科。,工程,工程是对技术(或社会)实体的分析、设 计、建造、验证和管理。,要解决的问题是什么?,用于解决该问题的实体具有什么范围、特点? 如何实现该实体(解决方案)? 如何建

9、造该实体? 采用什么方法去发现该实体设计和建造过程中产生的错误? 当该实体的用户要求修改、适应和增强时,如何支持这些活动?,软件工程 本质特征,软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐地合作是开发软件的关键 软件必须有效地支持它的用户 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品,软件工程面临的问题,软件生产率:设计方法和开发工具 软件重用 软件的价格 软件可靠性 软件维护,单元测试25%,综合测试20%,需求分析20%,设计15%,编码20%,开发33%,维护67%,开发各个阶段的百分比,开发与维护所

10、占的百分比,软件工程定义 经典定义,“The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software” IEEE 1990软件工程是将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中,并研究上述提到的途径。,本教材中关于软件工程的定义,软件工程是研究“大型”软件开发的技术、方法、工具和管理工程的学科。,软件工程内容,以有组织的质量保证为基础 软件工程过程是进行一系列有组

11、织的活动,从而能够合理地和及时地开发出计算机软件 软件工程方法为软件开发提供“如何做”的技术 软件工具为过程和方法提供自动的或半自动的支持计算机辅助软件工程(CASE,Computer Aided Software Engineering),软件工程方法,传统方法 面向对象的方法,传统方法 (生命周期方法),仍然是使用十分广泛的软件工程方法学。 采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。 从上而下,顺序地完成软件开发的各阶段任务。 数据和行为分离,面向对象的方法,出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接

12、近人类认识问题解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。 它的基本做法是用对象模拟实际问题域中的实体,以对象间的关系刻画实体间的联系。对象通过消息传递相互联系,协同完成某一活动。,软件工程过程,软件过程必须科学、合理,才能开发出高质量 的软件产品。 软件过程是将用户的需求转化成有效的软件的一系列活动。又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关活动的集合。包括:立项、需求分析、设计、编码、测试、交付、维护、退役又加入了:管理各种活动、质量保证环境基础设施配置、文档管理等。,三、软件的生存期(Software Life Cy

13、cle),软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程。,软件生存期的3个时期、6个阶段,维护,软件的生存期,传统的生命周期方法的特点,顺序性、依赖性推迟程序的物理实现 “the sooner you begin writing code, the longer itll take you to get done”质量保证的观点(利于尽早发现错误)阶段文档评审,错误的“积累效应”和“放大效应”,大部分的错误是在编码之前造成的 错误发现、改正得越晚,需付出的代价越高,发现并改正一个错误的开销,四、软件过程模型,软件开发全部过程、活动和任务的结构框架。普遍适用的框架,而非具体

14、的方法作用描述各阶段关系为软件工程管理提供里程碑和进度表里程碑(Milestone) 软件生存期中各开发阶段末尾的特定点为开发过程提供原则和方法,1. 编码修正模型(code and fix model),软件开发只有两个阶段 编写程序代码 修改程序代码作坊式生产方式缺点 低估分析和设计,代码结构差,难修改 不重视需求,开发风险大,用户不满意 难修改、难维护,2. 瀑布模型(Waterfall Model),1970,W. Royce提出软件生存周期模型,流水式过程模型生命周期方法学阶段划分方法 控制复杂性,Definition,Feasibility Study,Requirements A

15、nalysis,System Design,Program Design,Coding & Module Testing,Integration & System Testing,Delivery & Maintenance,System Lifecycle,Waterfall Model,传统的瀑布模型,瀑布模型的特点,基本思想:“分而治之”优点规范管理开发过程 文档驱动、易于维护缺点需求难开始就完全确定文档驱动,风险大 用户必须有耐心 开发效率不高,传统的瀑布模型,带“反馈环”的瀑布模型,瀑布模型的特点,适用范围结构化方法,面向过程的软件开发方法需求变化少开发人员熟悉应用领域低风险项目使用

16、环境稳定,3. 原型模型(Prototyping Model),针对:软件开发初期需求难以确定工程上经常使用的“原型”快速原型法(Rapid Prototyping)基本思想:快速建立原型,完善用户需求快速建立起来的可以在计算机上运行的程序,他所能完成的功能往往是最终产品能完成的功能的一个子集。,原型模型,Prototyping Model,需求的采集和细化,快速设计,建造原型,客户评价原型,针对原型 完善需求,生产样品,开始,停止,快速开发原型的途径,模拟软件系统的人机界面和人机交互方式开发工作原型,实现软件系统的部分功能找来正在运行的类似软件,原型模型的特点,优点 处理模糊需求 用户参与快

17、速缺点快速(弱功能) 资源规划和管理较为困难对开发环境要求高,适用范围 已有产品(原型) 简单而熟悉的领域 有快速原型开发工具 进行产品移植或升级,软件开发的风险,产品交付给用户之后用户可能不满意 到了预定的交付日期软件可能还未开发出来 实际的开发成本可能超过预算 产品完成前一些关键的开发人员可能“跳槽”了 产品投入市场之前竞争对手发布了一个功能相近、价格更低的软件,4. 螺旋模型(Spiral Model),1988,TRW公司BARRY W. Boehm提出风险分析,Waterfall Model,Prototyping Model,Risk Analysis,Spiral Model,螺

18、旋模型的特点,针对:前面的模型没有提供“驾驭软件风险”的功能 基本思想:降低风险 制定计划 planning 风险分析 risk analysis 实施工程 engineering, construction and release 客户评估 customer evaluation,PART ONE The Process,Spiral Model,Risk analy-sis,Prototype 1,Simulations, models, benchmarks,Requirements plan, life-cycle plan,Concept of operation,Prototype

19、 2,Risk analysis,Software requirements,Requirements validation,Develop-ment plan,Risk analysis,Prototype 3,Software product design,Design validation and verification,Integration and test plan,Risk analysis,Operational prototype,Detailed design,Unit test,Code,Integration and test,Acceptance test,Impl

20、ementation,Plan next phases,Develop, verify next-level product,Determine objectives, alternatives, constrains,Evaluate alternatives, identify, resolve risks,Cumulative cost,Progress through steps,Not yet widely used.,螺旋模型的特点,优点 风险驱动 质量保证 利于维护 缺点风险驱动对开发人员要求高 要求用户参与阶段评价,对用户来说比较困难,不易取得好的效果,适用范围 庞大、复杂、高

21、风险的系统 内部开发的大规模软件项目,5 增量模型 ( Incremental Model ),基本思想:遵循递增方式来进行软件开发优点任务或功能模块驱动,可以分阶段提交产品缺点条件比较苛刻,PART ONE The Process,Incremental Model,Core product,More features and functionality, Makes a better use of resources.,增量模型的特点,适用范围 在整个项目开发过程中,需求都可能发生变化,客户接受分阶段交付 分析设计人员对应用领域不熟悉,难以一步到位 中等或高风险项目 用户可参与到整个软件开

22、发过程中 使用面向对象语言或第四代语言 软件公司自己有较好的类库、构件库,6 喷泉模型(Fountain Model),面向对象生命周期模型 特点迭代、演进无缝,7 组合模型(Combining Model),把几种模型组合在一起,配套使用 利用优点,避免不足,五 软件工程的最新动向,软件形式语言的研究 构件技术 质量管理,六 “软件工程”课程与其它软件专业课的区别,立足于系统的整体。讲授系统分析、系统设计、测试及维护的理论和方法。 重在实践和经验的积累。,小 结,软件及其发展软件危机与软件工程软件的生存期软件过程模型,思考题,什么是软件?它具有哪些区别于硬件的特点? 试详细说明“软件生存周期”的概念。 什么是软件危机?产生原因和主要表现是什么?如何解决? 软件工程包含哪些要素?试说明之。 有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。对否?请说明理由。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报