![《软件工程概述》课件_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-9/24/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef1.gif)
![《软件工程概述》课件_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-9/24/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef2.gif)
![《软件工程概述》课件_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-9/24/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef3.gif)
![《软件工程概述》课件_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-9/24/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef4.gif)
![《软件工程概述》课件_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-9/24/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef/a7d4a591-56ca-42bd-98f3-63e1bd2bd6ef5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程与技术,北京联合大学信息学院 廖礼萍 E-Mail: , ,本课程学习的目的 本课程的主要内容 本课程的特点 本课程的教/学及考核方式 主要参考书目 实验安排,课程简介,消除错误地认识 学习软件工程基本理论 学习主流的软件开发方法 熟悉软件开发过程 掌握软件开发全过程中的各重要阶段的任务及相关描述方法 ; 如何分析问题并设计出合理的解决方案 如何保证软件质量 培养软件工程师的基本素质,一、本课程学习目的,1、软件工程的基本概念及软件危机 2、软件生存周期及软件开发模型 3、软件计划 4、软件分析(需求分析) 5、软件系统设计 6、软件测试 7、软件维护 8、面向对象软件工程,返回,二、
2、 主要内容,1、是专业课; 2、属“工程”学科; 3、是一门需不断完善的、发展的、可创新的学科。,返回,三、课程特点,1、主要参考书目: 软件工程技术及应用贾铁军著 机械工业出版社 2、其他参考书目: a.软件工程 杨卫东译 人民邮电出版社 b.实用面向对象软件工程教程 殷人昆等译 电子工业出版社,返回,四、参考教材,第一章 软件工程概述,本章要点,1软件的定义及软件发展过程 2软件危机及软件工程的产生 3软件工程学定义、本课程学习的目的,可执行部分,不可执行部分,一、软件的定义、特点,1软件的定义 程序 + 数据 + 文档 与计算机系统操作有关的程序、数据以及任何与之相关的文档的集合。,程序
3、,1软件的定义: 什么是程序(1/2): 程序: 由程序设计语言所描述的、能为计算机所识别、理解和处理的语句序列 程序例子 Main( ) int i, j; / 变量定义 char Str10; i = i + j ; / 语句说明 ,一、软件的定义、特点,1软件的定义: 什么是程序(2/2) 程序设计语言具有良好、严格语法和语义 目前程序设计语言主要有以下几种类型 面向机器: 如汇编语言、机器语言等 面向过程: 如Fortran, Pascal, C等等 面向对象: 如Java等等 面向问题: 如结构化查询语言SQL等等,一、软件的定义、特点,1软件的定义: 什么是文档: 文档: 记录软件
4、开发活动和阶段性成果、理解软件所必需的阐述性资料 需求分析文档、软件设计文挡、用户文档等 编写文档目的 促进对软件的开发,管理和维护; 便于各种人员(用户,开发人员)的交流,一、软件的定义、特点,一、软件的定义、特点,2软件的特点 不会老化 逻辑产品 (智力, 无形) 维护困难和复杂(完善, 纠错,.) 生产只需复制 软件开发性质如成本、进度等难以估计 软件的开发更加依赖于开发人员的业务素质、智力、人员的合作、组织和管理,二、软件的发展过程 1、20世纪50年代60年代初:程序设计阶段 特点:个体化;只有程序清单;以硬件发展为主 2、20世纪60年代初70年代初:程序系统阶段 特点:作坊式;软
5、件数量剧增;软件维护费用惊人;提 出“软件工厂”概念;出现软件危机 3、 70年代 90年代:软件工程阶段 软件成本剧增;硬件技术 (微电子学)日趋成熟;软件工程时代 4、 90年代至今: 现代信息技术飞速发展(并行计算机处理、三层处理模式、数据仓库、多媒体技术、网络技术、电子商务等)称为:网络时代,三、软件危机,1、软件危机定义: 软件在开发和维护过程中遇到的一系列问题 困扰学术界和工业界 用户对软件开发缺乏信心 软件开发的高投入和高风险,Crisis!,三、软件危机,2、软件危机的表现(1 of 3) 成本高 IBM 360 OS, 5000多人年,耗时4年(19631966),花费2亿多
6、美元 美国空军:1955年软件占总费用(计算机系统)的18%,70年60%,85年达到85 美国全球军事指挥控制系统,硬件1亿美元,软件高达7.2亿美元 计算机软件和硬件费用比,三、软件危机,2、软件危机的表现(2 of 3) 软件质量得不到保证 软件应用面的扩大:科学计算、军事、航空航天、工业控制、企业管理、办公、家庭 软件越来越多的应用于安全犹关(safety critical)的系统,对软件质量提出更高的要求 80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误 美国阿托拉斯火箭的发射失败,原因是软件故障 英国1986年开发的办公室信息系统Folios经4年,因性能达不到要求,1989年取
7、消 日本第5代机因为软件问题在投入50亿美元后于1993年下马 由于软件质量问题导致失败的软件项目非常多,三、软件危机,2、软件危机的表现(3 of 3) 进度难以控制 项目延期比比皆是 由于进度问题而取消的软件项目较常见 只有一小部分的项目能够按期完成 维护非常困难 软件维护的多样性 软件维护的复杂性 软件维护的副作用,三、软件危机,3、软件危机包含两方面问题 一、如何开发软件,以满足不断增长,日趋复杂的需求; 二、如何维护数量不断膨胀的软件产品。 4、软件危机产生的原因 逻辑产品,不同于物理产品 复杂性高 逻辑产品,逻辑复杂性,远高于硬件复杂性 软件的复杂性随规模呈指数级上升 规模大 应用
8、扩大,代码量,1000万行,仍在不断膨胀 影响软件生产率和质量的因素比较复杂 人员的能力和水平 团队合作 缺乏有效、系统原理、原则、方法和工具的指导和辅助:,5、对软件开发的深层次认识: 开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不一样 正如建设一个平房和高楼大厦 建造房屋的过程 确定和分析需求 房子的总体设计(建筑平面图和建筑透视图) 房子的详细设计(建筑平面图的细化以及规格说明) 识别并设计房子的组成部分 建造房子的每一个组成部分 测试房子的每一个组成部分 把房子的各个部分集成在一起,在住户搬进来之前作最后的修改 大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织
9、软件的生产和管理,必须经过分析、设计、实现、测试、维护等一系列软件过程和活动,三、软件危机,6、解决危机的技术途径 20世纪60年代爆发,然而实际上软件危机随着计算机软件的产生而产生,只是在此之前其问题的严重性没有引起人们的关注和重视 提出有效的方法和工具支持软件开发 1968年提出软件工程概念和思想 20世纪70年代的结构化软件开发方法 20世纪80年代的面向对象的软件开发方法 新的技术: 软件重用、快速原型、需求工程 典型技术: COM, Java, C+, J2EE, .Net, . 支撑工具和环境:Jbuilder, Visual Studio, WebLogic, ,三、软件危机,7
10、、技术手段不能完全解决软件危机 到了20世纪90年代,软件危机依然存在,甚至更为严重 应用变得越来越大和复杂,技术变得更加力不从心 错误的观念“只要有好的软件开发方法和工具就能高效率地开发出高质量的软件”,三、软件危机,8、解决危机的管理途径 问题出在哪里? 20世纪80年代末,美国工业界开始认识到管理的重要性 美国的一项研究表明,70%的项目由于管理不善导致难以控制进步、成本和质量; 进一步的研究发现:管理是影响软件项目成功开发的全局性因素,而技术只影响局部 如果软件开发组织不能对软件项目进行有效管理,就不能充分发挥软件开发方法和工具的潜力,也就不能高效率地开发出高质量的软件产品,三、软件危
11、机,四、软件工程的提出,解决软件危机? 硬件发展?开发人员增加?软件开发工具的发展? 软件工程! 由于认识到软件的设计、实现、维护和传统的工程规则有相同的基础。 1967年NATO的研究组织首次提出“软件工程” 1968年NATO软件工程会议正式提出“软件工程”概念 1968-至今, 40余年,四、软件工程的提出,2、软件工程定义 1968年NATO(北大西洋公约组织)会议上首次提出软件工程: 给出了软件工程的早期定义: 软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。(强调软件工程的目标) IEEE: 软件工程是(1)将系统化的、规范的、可度量的方法应
12、用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(2)(1)中所述方法的研究。 计算机科学技术百科全书: 所谓软件工程就是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最先进的技术方法结合起来。,思考:其它更准确的定义?,五、软件工程的发展 1、传统软件工程 管理:希望实现软件开发过程的工程化。这方面最为著名的成果就是提出了大家都很熟悉的“瀑布式”生命周期模型。它是在60年代末“软件危机”后出现的第一个生命周期模型。如下所示: 分析 设计 编码 测试 维护 后来,又有人针对该模型的不足,提出了快
13、速原型法、螺旋模型、喷泉模型等对“瀑布式”生命周期模型进行补充。现在,它们在软件开发的实践中被广泛采用。 认识到了文档的标准以及开发者之间、开发者与用户之间的交流方式的重要性。 方法:侧重与对软件开发过程中分析、设计的方法的研究。这方面的重要成果就是在70年代风靡一时的结构化开发方法,即PO(面向过程的开发或结构化方法)以及结构化的分析、设计和相应的测试方法。,六、软件工程的发展 2、现代软件工程 方法: 面向对象的分析、设计方法(OOA和OOD)的出现使传统的开发方法发生了翻天覆地的变化。随之而来的是面向对象建模语言(以UML为代表)、软件复用、基于组件的软件开发等新的方法和领域。 管理:
14、从企业管理的角度提出的软件过程管理。即关注于软件生存周期中所实施的一系列活动并通过过程度量、过程评价和过程改进等涉及对所建立的软件过程及其实例进行不断优化的活动使得软件过程循环往复、螺旋上升式地发展。其中最著名的软件过程成熟度模型是美国卡内基梅隆大学软件工程研究所(SEI)建立的CMM(Capability Maturity Model),即能力成熟度模型。,3、软件工程三要素 软件程是一种层次化的技术。包含了一个观点,和三要素,如下图: 工具 + 方法 + 过程,软件工程包括两方面内容: 软件开发技术包括软件开发方法学、软件工具和软件工程环境。 软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。 软件工程技术有两个明显的特点: 第一,强调规范化。 第二,强调文档化。,六、克服软件危机的途径,消除 错误的概念和做法 推广使用成功的开发技术和方法 使用软件工具和软件工程支持环境 加强软件管理,七、软件工程的基本原理 严格按照软件生命周期各阶
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工项目合同纠纷处理制度
- 施工日志填写样本建筑物消防设施工程
- 教师招聘语文面试唐诗三首教学设计
- 两位好友合作经营店铺合同模板
- 个人与个人借款合同范本
- 中外合资企业采购合同中英文对照
- 中外合资经营企业合同(适用于零售连锁业务)
- 个人二手房交易合同担保协议书
- 专利交易合同协议
- 个人向企业借款合同样板
- 2025集团公司内部借款合同范本
- 2025年山西地质集团社会招聘高频重点提升(共500题)附带答案详解
- 四川省绵阳市2025届高三第二次诊断性考试思想政治试题(含答案)
- 2023高考语文文言文复习:《说苑》练习题(含答案解析)
- 2023年1月浙江高考英语听力试题及答案(含MP3+录音原文)
- HI-IPDV10芯片产品开发流程V10宣课件
- 房产抵押注销申请表
- 【课件】第三课 蒙娜丽莎 课件高中美术湘美版美术鉴赏
- 象数疗法好疗效
- A320系列飞行训练课程:电子飞行仪表系统概况
- 2020新版个人征信报告模板
评论
0/150
提交评论