软件工程概述课件一

上传人:第*** 文档编号:52040270 上传时间:2018-08-18 格式:PPT 页数:139 大小:911.50KB
返回 下载 相关 举报
软件工程概述课件一_第1页
第1页 / 共139页
软件工程概述课件一_第2页
第2页 / 共139页
软件工程概述课件一_第3页
第3页 / 共139页
软件工程概述课件一_第4页
第4页 / 共139页
软件工程概述课件一_第5页
第5页 / 共139页
点击查看更多>>
资源描述

《软件工程概述课件一》由会员分享,可在线阅读,更多相关《软件工程概述课件一(139页珍藏版)》请在金锄头文库上搜索。

1、1/154内容摘要内容摘要 软件的概念与特点 软件危机 软件工程 软件生命周期 软件过程 敏捷软件开发 CASE工具与环境第一章 软件工程概述水利工程建筑工程机械工程 软件工程软件工程本章将介绍软件的地位和作用、软件的特点、软件的发展、软件危机、软件工程、软件生命周期以及软件 过程等方面的问题和基本概念传统工程新兴工程气象工程生物工程1.1 软件的概念与特点1、软件softwaresoft+ware软制品 (软体)软件是计算机系统中与硬件相互依存的另一部分。它包括程序、数据及其相关文档的完整集合。2、软件特点. . 软件是一种逻辑实体,而不是具体的物理实体. . 软件的生产与硬件不同 . .

2、在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题磨合 调整磨损 用坏修改点 实际曲线理想曲线硬件失效率曲线时间失 效 率时间失 效 率软件失效率曲线. .软件的成本相当昂贵软件技术的发展落后于需求时间软 件 复 杂 性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件软件1950197019851995硬件3、软件的分类1 1、按软件的、按软件的功能功能进行划分进行划分系 统 软 件支 撑 软 件应 用 软 件支撑软件一般类型一般类型:文本编辑程序文本编辑程序文本格式化程序文本格式化程序支持需求分析支持需求分析:PSL/PSAPSL/PSA问题描问题描 述语言述语言关系数据库管

3、理关系数据库管理 系统系统 支持设计支持设计:图形软件包图形软件包结构化流程图绘结构化流程图绘 图程序图程序支持测试支持测试:静态分析器静态分析器测试覆盖检验程测试覆盖检验程 序序支持实现支持实现:编辑程序编辑程序连接编辑程序连接编辑程序支持管理支持管理:标准检验程序标准检验程序库管理程序库管理程序2 2、按软件的、按软件的规模规模进行划分进行划分按开发软件所需的人力、时间以及完成的源代码行数。类别参加人数研制期限产品规模(源代码行数)微型微型 小型小型 中型中型 大型大型 甚大型甚大型 极大型极大型1 1 1 12-52-5 5-205-20 100-1000100-1000 2000-50

4、002000-50001-41-4周周 1-61-6周周 1-21-2年年 2-32-3年年 4-54-5年年 5-105-10年年约约500500行行 约约20002000行行 5000-500005000-50000行行 5 5万万-10-10万行万行 100100万行万行 10001000万行万行3 3、按软件、按软件开发开发划分划分软 件 项 目 开 发软 件 产 品 开 发上个世纪60年代开始显现出来 的“软件危机”催生了“软件工程” 这门指导计算机软件开发和维护 的工程学科。1、什么是软件危机软件危机是指在计算机软件的 开发和维护过程中所遇到的一系列 严重问题。1.2 软件危机2、

5、 产生软件危机的原因 软件缺乏“可见性”。 对用户需求没有完整准确的认识、不能适应用户 需求的变化。 缺乏对软件产品和开发过程的质量控制。 软件本身的可维护性差、开发商缺乏对维护的重视 和准备、缺乏正确的维护方法。导致“对软件开发成本、工作量、进度的估计 不准确”;导致“用户对已完成的软件系统不满意的现象 经常发生”;导致“软件产品的质量往往靠不住”;导致“软件常常不可维护”; 开发、维护过程中文档化工作做得不好、缺乏配 置管理。 硬件成本逐年下降,但软件成本居高不下。 近10来年,软件开发生产率有较大的提高,但计 算机应用普及深入的速度更快。导致“软件通常不具有良好一致性的文档资料” ;导致

6、“软件成本在计算机系统总成本中所占的比 例逐年上升”;导致“软件开发生产率提高的速度,跟不上计算 机应用普及深入的速度”。3、 解决软件危机的途径首先,应该对软件产品、系统有一个正确的认识 。软件不仅仅是程序。IEEE对软件的定义:Computer programs, procedures, associated documentation and data pertaining to the operation of a computer system.应该充分认识软件开发是一种组织良好、管理严密 、各类人员协同配合、共同完成的工程项目。应该总结软件开发的成功经验,应用软件 工程领域的先进思

7、想、原理、方法、技术 (针对具体公司、项目进行定制)。最后,应该(开发)、采用适当的软 件工具,尤其是CASE工具,来帮助完成软件开发工作。1.3 软件工程1、 软件工程介绍软件工程是指导计算机软件开发和维护的一门 工程学科。采用工程的概念、原理、技术和方法来开发和维护 软件,并融合其他学科、行业(如:管理、建筑、客户服 务)的原理、技术和经验,以规范、高效、可度量、可管 理地开发出高质量的软件并维护它。“经济”?软件工程特性: 更多关注大型程序的构造; 关注对复杂性、风险的控制,关注可度 量、可管理性; 重视软件系统的变化,要求软件系统对 变化的适应性,要求变动控制; 强调软件开发的效率(涉

8、及方法、工具 ); 强调合作开发、团队协作、沟通 重视用户(需求、反馈、技术支持等) ,重视和用户的交流;强调软件系统应 能为用户提供价值、可用性; 强调开发团队应具备相关行业的业务知 识、建立系统语境、通过有效沟通准确 捕获用户需求。2、 软件工程的基本原理Barry W. Boehm总结既有的软件工程准 则,提出了7条软件工程基本原理:1 用分阶段的生命周期计划严格管理;2 坚持进行阶段评审;3 实行严格的产品控制(配置管理);4 采用现代(先进的)程序设计技术;5 结果应能清楚地审查;6 开发小组的成员应该少而精;7 承认不断改进软件工程实践的必要性;3、 软件工程的方法学通常把在软件生

9、命周期全过程中使用的一 整套技术方法的集合称为方法学methodology。软件工程方法学包含3个要素:方法、工具 和过程。* 软件工程传统途径(传统方法学) 把软件生命周期的全过程依次划分为若干 个阶段,顺序地完成每个阶段的任务。每一个阶段的开始和结束都有准则或标准。 采用结构化技术(结构化分析、设计和实 现)来完成软件开发各阶段的各项任务。每个阶段结束前都进行正式的技术审查和管理复 审。技术审查 帮助即时、尽早发现、纠正工程技术方面 的错误;保证软件质量。软件错误的积累和放大效应图 目标主要是各个阶段的工程制品。如:系统范围是否恰当?技术方案是否可行? 架构是否稳定?模型是否正确?管理复审

10、主要任务是对项目的开销、工作量、资 源(人力)、进度、风险等进行审查。帮助决定开发是否继续,帮助对下一阶段的工作进行 计划、对软件开发过程进行改进。* 面向对象方法学客观世界的问题都是由客观世界中的实体 及实体间的关系构成的。用计算机系统解 决客观世界的问 题,希望实现解 法的解空间与问 题空间的结构尽 可能一致。传统语言提供的解空间 对象不能满足要求。面向对象方法学提供的解空 间与客观世界问题空间的结 构更一致。面向对象方法是把数据和处理相结 合的方法。对象是由数据及可以施 加于这些数据的操作所构成的统一 体。面向对象方法把程 序看作是相互协作 而又彼此独立的对 象的集合;而不是 工作在数据

11、上的过 程或函数的集合。要点:1 面向对象方法学认识问题空间,分析、解决 问题是用对象的观点。2 把对象抽象为类,类中定义数据和方法;类 实例化即为对象。3 类层次结构4 对象之间通过传递消息相互联系。1.4 软件生命周期不同时期,不同的目标、任务。* 生命周期各阶段的基本任务:1 问题定义 要解决的问题是什么?性质、范围? 客户的目标?软件系统的价值?最后系统分析员应提交开发方和客户都认可的书面 报告。2 可行性研究对上一阶段提出的问题有可行的解决方 案吗?3 需求分析用户有哪些具体需求?为了满足客户的 需求,系统必须具备哪些功能? 准确、完整地捕获用户需求。 系统分析员要提出经用户确认的系

12、统逻辑模型 。 技术可行性 经济可行性(时间、人员等) 操作可行性4 总体设计 / 架构设计要解决问题、满足用户需求,软件系 统的总体架构是怎样的? 首先,架构设计师应该考虑几种可能的解决方案( Windows/Linux、.Net/J2EE、C/S or B/S、满足不同需 求功能集的不同方案)。 选择、推荐最佳方案。 对确定的方案进行更具体的设计、描述(建立模型 图、说明),包括对软件系统进行模块化,划分子系 统、确定接口。5 详细设计软件系统、子系统/模块 具体应该是怎样的? 算法(PDL语言、流程图等)。 数据结构、函数/过程、类的定义。 建立模型图。6 编码和单元测试 用选定的编程语

13、言书写程序(子系统/模块、类/组 件、函数等),然后编译/翻译/汇编为机器代码。 对这些子系统/模块进行单元测试。7 综合测试软件是否实现了功能需求和非功能需求? 集成测试 系统测试 用户验收测试写:测试计划(测试策略、进度)、测试结果记录 、测试结果分析、评估、报告。维护要求、审查、计划(维护方案)、维护、回归 测试、维护记录、复查验收。8 维护 改正性维护 适应性维护 完善性维护 预防性维护1.5 软件过程软件过程是为了获得高质量软件所需要完成的一系列任务的框 架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁、直观地描述软件开发、运行、维 护的过程。能力成熟度模型能力成熟度模型

14、CMMCMMCMM(Capability Maturity Model)即能 力成熟度模型,是美国卡耐基梅隆大学软件工 程研究所(SEI)在美国国防部资助下于二十 世纪八十年代末建立的,用于评价软件机构的 软件过程能力成熟度的模型。此模型在建立和 发展之初,主要目的在于提供一种评价软件承 接方能力的方法,为大型软件项目的招投标活 动提供一种全面而客观的评审依据。而发展到 后来,又同时被软件组织用于改进其软件过程 。软件组织的成熟与不成熟软件组织的成熟与不成熟 1. 不成熟的软件组织 软件过程一般并不预先计划,而是在项目进 行中由实际工作人员及管理员临时计划 有时,即使软件过程已计划好,仍不按计

15、划 执行 没有一个客观的基准来判断产品质量,或解 决产品和过程中的问题 对软件过程步骤如何影响软件质量,一无所 知,产品质量得不到保证。而且,一些提高 质量的环节,如检查、测试等经常由于要赶 进度而减少或取消 产品在交付前,对客户来说,一切都是不可 见的 没有长远目标,管理员通常只关注解决任何 当前的危机 由于没有实事求是地估计进度、预算,因此 他们经常超支、超时。当最后期限临近,他 们往往在功能性和质量上妥协,或以加班加 点方式赶进度2. 成熟的软件组织 具有全面而充分的组织和管理软件开发和维护过程 的能力 管理员监视软件产品的质量以及生产这些产品的过 程 制定了一系列客观基准来判别产品质量

16、,并分析产 品和过程中的问题 进度和预算可以按照以前积累的经验来制定,结果 可行。预期的成本、进度、功能与性能和质量都能 实现,并达到目的 能准确及时地向工作人员通报实际软件过程,并按 照计划有规则地(前后一致,不互相矛盾)工作 凡规定的过程都编成文档 软件过程和实际工作方法相吻合。必要时, 过程定义会及时更新,通过测试,或者通过 成本-效益分析来改进过程。 全体人员普遍地、积极地参与改进软件过程 的活动。在组织内部的各项目中,每人在软 件过程中的职责都十分清晰而明确,每人各 守其责,协同工作,有条不紊,甚至能预见 和防范问题的发生。软件过程成熟度等级软件过程成熟度等级 CMM提供了一个成熟度等级框架: 1级-初 始级、 2级-可重复级、 3级-已定义级、 4级 -已管理级和5级-优化级。 1.初始(initial)级:软件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号