软件工程概述.ppt
合集下载
《软件工程》PPT课件
第四课时
第一章第四课时
喷泉模型 软件工程的任务与研究范围 软件开发的原则与开发方法
返回
喷泉模型
瀑布模型要求在软件开发的初期就完全确定软件的需求,这在很多 情况下往往是做不到的.螺旋模型试图克服瀑布模型的这一不足.SM 把软件开发过程安排为逐步细化的螺旋周期序列,每经历一个周期, 系统就细化和完善一些.SM每—螺旋周期由六个步骤组成: <1> 确定任务目标: 根据初始需求分析项目计划,确定任务目标、可选 方案和限制.<2>选择对象:对各种软硬件设备、开发方法、技术、 开发工具、人员、开发管理等对象进行选择:并决定软件是进行研 制、购买还是利用现有的.<3>分析约束条件:软件开发的时间、经 费等限制条件.<4>风险分析:评估目标、对象、约束条件三者之间 的联系,列出可能出.现的问题及问题的严重程度等,把最重要的问 题作为尚未解决的关键问题的风险.<5>制定消除风险的方法:应有 详尽的说明和周密的计划,并估计可能产生的后果.依此来开发软件, 为制订下一周期的计划打下基础.<6>制定下一周期的工作计划:在 第一个螺旋周期,确定目标、选择对象、分析约束,通过风险分析制 订消除风险的方法,初步开发原型1,制定系统生存周期计划.
软件工程的任务与研究范围
•软件产品的特点 •软件工程的研究内容与方法 •软件工具与软件支撑环境 •软件管理
软件开发的原则与方法
•软件开发的原则 • 自顶向下与模块结构 •软件开发的方法 •1.非自动形式的系统开发方法 •〔1〕系统流程图〔2〕结构分析法〔3〕结构化设计法 •〔4〕数据结构法〔5〕层次输入——处理——输出方法<HIPO法> • 2.半自动形式的系统开发方法 •〔1〕软件需求工程法〔2〕问题说明语言与分析法 • 3. 自动形式的系统开发方法 〔HOS方法〕:由计算机自动确定规 范、自动分析、自动编程、自动执行与模拟,以规范语言AXES、资 源分配工具RTA为工具.能自动进行分析、设计,工作量少、设计规范, 也能自动进行修改和维护.该方法适用于系统分析和设计.
第一章第四课时
喷泉模型 软件工程的任务与研究范围 软件开发的原则与开发方法
返回
喷泉模型
瀑布模型要求在软件开发的初期就完全确定软件的需求,这在很多 情况下往往是做不到的.螺旋模型试图克服瀑布模型的这一不足.SM 把软件开发过程安排为逐步细化的螺旋周期序列,每经历一个周期, 系统就细化和完善一些.SM每—螺旋周期由六个步骤组成: <1> 确定任务目标: 根据初始需求分析项目计划,确定任务目标、可选 方案和限制.<2>选择对象:对各种软硬件设备、开发方法、技术、 开发工具、人员、开发管理等对象进行选择:并决定软件是进行研 制、购买还是利用现有的.<3>分析约束条件:软件开发的时间、经 费等限制条件.<4>风险分析:评估目标、对象、约束条件三者之间 的联系,列出可能出.现的问题及问题的严重程度等,把最重要的问 题作为尚未解决的关键问题的风险.<5>制定消除风险的方法:应有 详尽的说明和周密的计划,并估计可能产生的后果.依此来开发软件, 为制订下一周期的计划打下基础.<6>制定下一周期的工作计划:在 第一个螺旋周期,确定目标、选择对象、分析约束,通过风险分析制 订消除风险的方法,初步开发原型1,制定系统生存周期计划.
软件工程的任务与研究范围
•软件产品的特点 •软件工程的研究内容与方法 •软件工具与软件支撑环境 •软件管理
软件开发的原则与方法
•软件开发的原则 • 自顶向下与模块结构 •软件开发的方法 •1.非自动形式的系统开发方法 •〔1〕系统流程图〔2〕结构分析法〔3〕结构化设计法 •〔4〕数据结构法〔5〕层次输入——处理——输出方法<HIPO法> • 2.半自动形式的系统开发方法 •〔1〕软件需求工程法〔2〕问题说明语言与分析法 • 3. 自动形式的系统开发方法 〔HOS方法〕:由计算机自动确定规 范、自动分析、自动编程、自动执行与模拟,以规范语言AXES、资 源分配工具RTA为工具.能自动进行分析、设计,工作量少、设计规范, 也能自动进行修改和维护.该方法适用于系统分析和设计.
软件工程概述PPT教学课件
描述与定义
设计实现测试 维护产品淘汰2020/12/10
9
方法学
重量级: ISO 9000 CMM 统一软件开发过程(RUP)
轻量级(个体软件工程):
极限编程(XP) 敏捷过程(Agile Processes)
2020/12/10
10
其它软件工程技术
面向方面的程序设计(Aspect Oriented Programming,简称AOP)
财产的损失:软件的错误可能导致巨大的财产损失。欧洲阿里亚娜 火箭的爆炸就是一个最为惨痛的教训。
人员伤亡:由于计算机软件被广泛应用于包括医院等与生命息息相 关的行业。因此软件的错误也有可能会导致人员伤亡。
Therac-25的意外. 在1985年六月到1987年一月之间, 六个已知的医 疗事故来自于Therac-25错误地超过剂量, 导致患者死亡或严重辐射 灼伤
3
软件危机
源于20世纪60,70和80年代,个人英雄主义的软件开发模式面临无法容忍 的问题。有超过半数的软件开发以失败而终,最终可用和可接受的仅占15%。
OS 360操作系统使用了1000人左右的程序员。Fred Brooks在随后他 的大作《人月神话》(The Mythical Man-Month)中曾经承认,在他 管理这个项目的时候,他犯了一个价值数百万美元的错误。
在工业上,某些嵌入式系统导致机器的不正常运转,从而将一些人 推入了险境。
2020/12/10
4
摩尔定律是指IC上可容纳的晶体管数目,约每 隔18个月便会增加一倍,性能也将提升一倍。
计算机硬件的摩尔定律
2020/12/10
5
软件设计
——科学?工程?甚至艺术?
这是一个被争论了很久的问题。实际上,软件开发兼 有三者的特点。但是这并不意味着它们可以被互相混淆。 很多人认为软件工程基于计算机科学和信息科学就如传 统意义上的工程学之于物理和化学一样。在美国,大约 40%的软件工程师具有计算机科学的学位。在世界其他 地方,这个比例也差不多。他们并不一定会每天使用计 算机科学方面的知识,但是他们每天都会使用软件工程 方面的知识。
软件工程概论PPT课件
集成测试
总结词
集成测试是在单元测试的基础上,将多个模块或组件组合在一起进行测试,以验证它们之间的集成是否正常工作。
详细描述
在软件开发过程中,当多个模块或组件完成单元测试后,需要进行集成测试来验证它们之间的交互和集成是否正 常。集成测试的目的是发现模块之间的接口问题和集成后的性能问题,以确保软件的整体功能和性能达到要求。
编码
选择编程语言
根据项目需求和团队技术能力,选择适合的 编程语言进行编码。
编码规范
制定编码规范,确保代码的可读性、可维护 性和可扩展性。
编码实现
按照设计文档和编码规范,编写代码实现各 个模块的功能。
代码审查
对编写的代码进行审查,确保其符合规范和 设计要求,并进行必要的重构和优化。
测试
单元测试
对每个模块进行单元测试,确保其功能正常、符合设计要求。
界面风格与一致性
界面设计应保持一致的风格,以提高用户对软件系统的认知和熟悉 度。
模块设计与划分
模块设计与划分概述
模块设计与划分是指将软件系统划分为一系列相互独立、可复用 的模块。
模块化设计的好处
模块化设计可以提高软件系统的可维护性、可扩展性和可重用性。
模块间的通信与协作
模块间的通信和协作是模块化设计的关键,应确保模块间的松耦 合和低耦合。
05 软件测试工程
单元测试
总结词
单元测试是对软件中的最小可测试单元进行检查和验证,通常以函数或方法为 单位进行测试。
详细描述
单元测试是软件开发过程中的一种测试方法,旨在验证软件的最小单元是否符 合设计要求和功能规范。它通常在编码阶段同步进行,以确保代码的正确性和 可靠性。单元测试的方法包括白盒测试和黑盒测试。
第1章-软件工程概述PPT课件
第1章 概述
教学目标
● 了解软件工程的产生和发展 ● 掌握软件工程的概念、内容和原理 ● 熟悉软件生存周期及阶段任务 ● 掌握软件开发模型
案例1-1 IBM 公司研发初期的OS/360,共约100万条指令,
花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误 多达2000 个以上,系统根本无法正常运行。OS/360 系统的负责 人Brooks 这样描述开发过程的困难和混乱:“像巨兽在泥潭中 垂死挣扎,挣扎得越猛,泥浆沾得越多陷入更深,最后没有一个 野兽能够逃脱淹没在泥潭中的命运” 。
自定 义软
表1-1 软件技术各发展阶段的典型技术
程序 系统 阶段
多 用户
实 时处 理
数 据库
软
软件 工程 阶段
分布 式系 统 嵌入 “智 能” 低成 本硬
创新完 善软 件工程 阶段
强大桌 面系统 面向对 象技术 专家系 统、神 经网络、 8并行计
1.1 软件工程的发展
“软件工程”的发展经历了4个重要阶段: 1.传统软件工程
质量难以保证,甚至在开发过程中就被迫中断。 (3) 软件开发管理差,对成本和进度的估计时常不准确。 (4) 系统时常出现无法维护、升级或更新现象。 (5) 软件开发没有标准、完整、统一规范的文档资料。计算机软件不
仅只是程序,还应当有一整套规范的文档资料和售后服务。 (6) 软件开发效率低,无法满足计算机应用迅速发展与提高的实际需
软件工程原理 软件工程过程
软件工程技术 软件工程方法
软件工程模型 软件工程管理 软件工程度量 软件工程环境 软件工程应用
软件目标、原则、学科基础 开发过程、运作过程、维护过程,如获取、供应、管理、开 发、运作、维护、支持、裁减 开发技术、管理技术、度量技术、维护技术、应用技术
软件工程概述PPT课件
南京理工大学计算机学院
18
前一页 休息
第1章 软件工程概念
软件的神话——管理者的神话
➢ 神话:如果我们已落后于计划,可以增加更 多的程序员来赶上进度。
➢ 事实:软件开发并非像制造一样是一个机械 过程。用Brooks的话来说,“给一个已经延 迟的软件项目增加人手只会使其更加延迟”。 看起来,这句话与人的直觉正好相反。但实 际上,增加新人,原来正在工作的开发者必 须花时间来培训新人,这样就减少了他们花 在项目开发上的时间。人手可以增加,但只 能在计划周密、协调良好的情况下。
2.软件的生产于硬件不同。
3.在软件的运行和使用期间,没有硬件那样的 机械磨损,老化问题。
失
效 磨合
率
调整
磨损 用坏
硬件失效曲线
时间
失 效 率
实际曲线
软件失效曲线
理想曲线 时间
南京理工大学计算机学院
5
前一页 休息
第1章 软件工程概念
软件的特点
4.软件的开发和运行常常受到计算机系统的限 制,对计算机系统有着不同程度的依赖。
南京理工大学计算机学院
17
前一页 休息
第1章 软件工程概念
软件的神话——管理者的神话
➢ 神话:我们已经有了很多很好的软件开发工具, 而且,我们为它们买了最新的计算机。
➢ 事实:为了使用最新型号的计算机、工作站和 PC机去开发高质量的软件,我们已经投入了 太多的费用。实际上,计算机辅助软件工程 (CASE)工具比起硬件而言,对于获得高质 量和高生产率更为重要,但大多数软件开发者 并未使用它们。
13
前一页 休息
第1章 软件工程概念
什么是软件危机
定义:软件危机是计算机软件在它的开发和 维护过程中所遇到的一系列严重问题。
软件工程ppt课件完整版
缺陷跟踪
使用缺陷管理工具对缺陷进行 跟踪,确保每个缺陷都得到处 理。
缺陷修复
开发人员对缺陷进行分析并修 复,然后提交给测试人员进行 验证。
回归测试
对修复后的缺陷进行回归测试 ,确保修复没有引入新的缺陷
。
质量评估与改进
质量评估
定期对软件产品的质量进行评估,包括功能 、性能、安全等方面。
过程改进
对软件开发过程进行持续改进,提高开发效 率和软件质量。
,提高代码的可读性和可维护性。
模块化开发
02
采用模块化开发方式,将系统划分为不同的模块进行开发,提
高开发效率和质量。
错误处理
03
对可能出现的错误进行充分的考虑和处理,包括异常捕获、日
志记录和错误提示等,确保系统的稳定性和可靠性。
05 测试与质量保证
测试类型及方法
功能测试对软件产品的各项功 进行验证,确保符 合需求和设计。
同时引入了风险管理机制。
螺旋模型的主要阶段包括:制 定计划、风险分析、工程实施
和客户评估。
螺旋模型的优点在于其强调风 险分析和迭代开发,能够及时 发现并解决问题,降低项目风 险。
螺旋模型的缺点在于其需要较 高的项目管理能力和技术水平 ,且可能因为过度关注风险而 忽略其他重要因素。
敏捷开发模型
敏捷开发的主要实践包括:短周期迭代开发、 持续集成、持续交付和自动化测试等。
水平。
04
迭代增量模型的优点在于其能够逐步增加系统功能和 性能,降低项目风险,同时也能够及时发现并解决问 题。
03 需求分析与管理
需求获取与整理
确定需求来源
与客户、利益相关者、业务领域 专家等进行沟通,明确需求背景
和范围。
使用缺陷管理工具对缺陷进行 跟踪,确保每个缺陷都得到处 理。
缺陷修复
开发人员对缺陷进行分析并修 复,然后提交给测试人员进行 验证。
回归测试
对修复后的缺陷进行回归测试 ,确保修复没有引入新的缺陷
。
质量评估与改进
质量评估
定期对软件产品的质量进行评估,包括功能 、性能、安全等方面。
过程改进
对软件开发过程进行持续改进,提高开发效 率和软件质量。
,提高代码的可读性和可维护性。
模块化开发
02
采用模块化开发方式,将系统划分为不同的模块进行开发,提
高开发效率和质量。
错误处理
03
对可能出现的错误进行充分的考虑和处理,包括异常捕获、日
志记录和错误提示等,确保系统的稳定性和可靠性。
05 测试与质量保证
测试类型及方法
功能测试对软件产品的各项功 进行验证,确保符 合需求和设计。
同时引入了风险管理机制。
螺旋模型的主要阶段包括:制 定计划、风险分析、工程实施
和客户评估。
螺旋模型的优点在于其强调风 险分析和迭代开发,能够及时 发现并解决问题,降低项目风 险。
螺旋模型的缺点在于其需要较 高的项目管理能力和技术水平 ,且可能因为过度关注风险而 忽略其他重要因素。
敏捷开发模型
敏捷开发的主要实践包括:短周期迭代开发、 持续集成、持续交付和自动化测试等。
水平。
04
迭代增量模型的优点在于其能够逐步增加系统功能和 性能,降低项目风险,同时也能够及时发现并解决问 题。
03 需求分析与管理
需求获取与整理
确定需求来源
与客户、利益相关者、业务领域 专家等进行沟通,明确需求背景
和范围。
软件工程课件(全)ppt
第1章 1.2软件工程
1.2.1 软件工程的定义和目标
为了克服软件危机,1968年10月在北大西洋公约组织(NATO)召开的计 算机科学会议上,Fritz Bauer首次提出“软件工程”的概念。
按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一 条主要出路。
软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。软 件工程的目标是实现软件的优质高产。软件工程的目的是在经费的预算范围内, 按期交付出用户满意的、质量合格的软件产品。
第1章 1.1软件与软件危机
1.1.3 软件危机
2. 软件危机产生的原因
(1)忽视软件开发前期的调研和需求分析工作。 (2)缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定。 (3)开发过程缺乏统一的、规范化的方法论指导。 (4)忽视与用户、开发组成员间的及时有效的沟通。 (5)文档资料不规范或不准确。导致开发者失去工作的基础,管理者失去管理的依据。 (6)没有完善的质量保证体系。
第1章 1.1软件与软件危机
1.1.1 软件的定义及其特点
2.软件具有下列特点:
比硬件发展慢
是逻辑产品
软件
生产与硬件不同 不会磨损和老化
成本高、风险高
手工开发为主
依赖硬件
第1章 1.1软件与软件危机
1.1.2 软件的发展及其分类
1.软件技术的发展
程序设计
程序系统
软件工程
第1章 1.1软件与软件危机
第1章 1.1软件与软件危机
1.1.3 软件危机
3. 软件危机解决途径
要解决软件危机问题,需要采取以下措施: (1)使用好的软件开发技术和方法。 (2)使用好的软件开发工具,提高软件生产率。 (3)有良好的组织、严密的管理,各方面人员相互配合共同完成任务。 为了解决软件危机,既要有技术措施(好的方法和工具),也要有组织管理措施。软件工 程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。
《软件工程介绍》PPT课件
通过模块化设计和良好的文档支持,方便 软件的后期维护和升级。
适应需求变化
通过灵活的开发方法和工具支持,快速响 应和适应需求变化。
02
软件开发过程模型
瀑布模型
01
线性顺序
瀑布模型按照线性顺序进行软件 开发,包括需求分析、设计、编 码、测试和部署等阶段。
02
03
严格阶段划分
易于管理
每个阶段都有明确的输入和输出, 以及相应的评审和验证活动,确 保阶段间的正确过渡。
行业发展趋势预测
智能化开发工具
利用人工智能和机器学习技术,提升软件 开发过程的自动化和智能化水平。
云计算与微服务
借助云计算平台和微服务架构,实现软件 系统的弹性扩展和快速响应能力。
低代码/无代码开发
通过低代码/无代码开发平台,降低软件 开发门槛,提高开发效率和质量。
软件开发与业务融合
加强软件开发与业务的紧密融合,推动软 件工程的持续创新和发展。
增量模型
增量模型将软件产品划分为一系列增量,每个增量都是一个完整 的软件产品子集,逐步构建和完善整个系统。
演化模型
演化模型适用于需求不断变化的项目,通过不断演化现有系统来 满足新的需求。
03
需求分析与管理
需求获取与整理
通过与用户交流、调研和观察,收集原始 需求。
对收集到的需求进行分类、筛选和整理, 去除重复和无效需求。
对需求进行优先级排序,确定核心需求和 次要需求。
需求规格说明书编写
编写清晰、准确、无歧义的需求规格说明 书。
说明书应包含对需求的详细描述、功能要 求、性能要求、安全要求等。
说明书应提供足够的细节,以便开发人员 理解和实现需求。
需求变更管理
适应需求变化
通过灵活的开发方法和工具支持,快速响 应和适应需求变化。
02
软件开发过程模型
瀑布模型
01
线性顺序
瀑布模型按照线性顺序进行软件 开发,包括需求分析、设计、编 码、测试和部署等阶段。
02
03
严格阶段划分
易于管理
每个阶段都有明确的输入和输出, 以及相应的评审和验证活动,确 保阶段间的正确过渡。
行业发展趋势预测
智能化开发工具
利用人工智能和机器学习技术,提升软件 开发过程的自动化和智能化水平。
云计算与微服务
借助云计算平台和微服务架构,实现软件 系统的弹性扩展和快速响应能力。
低代码/无代码开发
通过低代码/无代码开发平台,降低软件 开发门槛,提高开发效率和质量。
软件开发与业务融合
加强软件开发与业务的紧密融合,推动软 件工程的持续创新和发展。
增量模型
增量模型将软件产品划分为一系列增量,每个增量都是一个完整 的软件产品子集,逐步构建和完善整个系统。
演化模型
演化模型适用于需求不断变化的项目,通过不断演化现有系统来 满足新的需求。
03
需求分析与管理
需求获取与整理
通过与用户交流、调研和观察,收集原始 需求。
对收集到的需求进行分类、筛选和整理, 去除重复和无效需求。
对需求进行优先级排序,确定核心需求和 次要需求。
需求规格说明书编写
编写清晰、准确、无歧义的需求规格说明 书。
说明书应包含对需求的详细描述、功能要 求、性能要求、安全要求等。
说明书应提供足够的细节,以便开发人员 理解和实现需求。
需求变更管理
软件工程完整PPT课件
2021/3/9
10
④局部化。要求在一个物理模块内集中逻辑上相互关联 的计算资源,保证模块间具有松散的耦合关系,模块 内部有较强的内聚性,这有助于控制解的复杂性。
⑤确定性。软件开发过程中所有概念的表达应是确定的、 无歧义且规范的。
⑥一致性。包括程序、数据和文档的整个软件系统的各 模块应使用已知的概念,内外部接口应保持一致,系 统规格说明与系统行为应保持一致。
2021/3/9
14
2. 需求分析方法 常见的需求分析方法有:
①结构化分析方法。 ②面向对象的分析方法。
2021/3/9
15
2.2结构化分析方法
(1)关于结构化分析方法 结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,
建立系统的处理流程,以数据流图和数据字典为主要工具,建 立系统的逻辑模型。 结构化分析的步骤如下:
3. 信息隐蔽 信息隐蔽使得一个模块内包含的信息(过程和数据)
对于不需要这些信息的模块来说,是不能访问 的。
2021/3/9
24
4. 模块独立性 每个模块完成一个相对独立的特定子功能,并且 和其他模块之间的接口很简单。
模块的独立程度可以由两个定性标准来衡量,这 两个标准分别称为耦合性和内聚性。藕合衡量不 同模块彼此间互相依赖(连接)的紧密程度;内 聚衡量一个模块内部各个元素彼此间结合的紧密 程度。
⑦完备性。软件系统不丢失任何重要成分,完全实现系 统所需的功能。
⑧可验证性。开发大型软件系统需要对系统自顶向下, 逐层分解。系统分解应遵循容易检查、测评、评审的 原则,以确保系统的正确性。
2021/3/9
11
1.5软件开发工具与软件开发环境
1. 软件开发工具 软件开发工具是指可以用来帮助开发,测试、分 析、维护其他计算机程序及其文档资料,实现软 件生产过程自动化的一类程序。 软件工具主要包括需求分析工具、设计工具、编 码工具、确认工具、维护工具等。
第一单元 软件工程概述PPT课件
软件的开发尚未完全摆脱手工的方式,依然有大量重复性的劳动
开发费用高
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,需要较 高的成本。软件的开发是一个复杂的过程,因而管理是软件开发过程 中必不可少的内容
9
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件开发是一个专业领域的人在为另一个专业领域的 人服务
面向对象分析设计 与统一建模语言UML
duzou@
软件工程概述
面向对象分析设计与统一建模语言UML
1
软件工程概述
2
面向对象技术简介
3
UML语言基础
4
类图和对象图
5
包图
2
软件工程概述
面向对象分析设计与统一建模语言UML
6
用例图
7
交互图
8
活动图
9
状态机图
10
交互概述图
3
软件工程概述
15
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件工程的目标
▪ 付出较低的开发成本 ▪ 达到预期的软件功能 ▪ 取得较好的软件性能 ▪ 使软件易于移植 ▪ 较低的维护费用 ▪ 能按时完成开发工作,及时交付使用
在预算内如期完成 (初级目标)
良好的结构,较好的可维 护性、扩展性、重用性
(高级目标)
在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但软 件也会出现故障,软件维护比硬件维护要复杂得多,与硬件的维修有 着本质的差别
软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同 程度的依赖。为了消除这种依赖,在软件开发中提出了软件移植的问 题,并且把软件的可移植性作为衡量软件质量的因素之一
开发费用高
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,需要较 高的成本。软件的开发是一个复杂的过程,因而管理是软件开发过程 中必不可少的内容
9
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件开发是一个专业领域的人在为另一个专业领域的 人服务
面向对象分析设计 与统一建模语言UML
duzou@
软件工程概述
面向对象分析设计与统一建模语言UML
1
软件工程概述
2
面向对象技术简介
3
UML语言基础
4
类图和对象图
5
包图
2
软件工程概述
面向对象分析设计与统一建模语言UML
6
用例图
7
交互图
8
活动图
9
状态机图
10
交互概述图
3
软件工程概述
15
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件工程的目标
▪ 付出较低的开发成本 ▪ 达到预期的软件功能 ▪ 取得较好的软件性能 ▪ 使软件易于移植 ▪ 较低的维护费用 ▪ 能按时完成开发工作,及时交付使用
在预算内如期完成 (初级目标)
良好的结构,较好的可维 护性、扩展性、重用性
(高级目标)
在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但软 件也会出现故障,软件维护比硬件维护要复杂得多,与硬件的维修有 着本质的差别
软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同 程度的依赖。为了消除这种依赖,在软件开发中提出了软件移植的问 题,并且把软件的可移植性作为衡量软件质量的因素之一
软件工程概述ppt
事实证明这些条件恰恰是难于或无法满足的。
瀑布模型开发软件的优点
① 明确的功能性能需求,加上有效的管理,则 可基本解决软件危机,按时间、按成本、按 需求地完成项目; ② 提供了一套完整的指导思想、开发技术和管 理规程,为其他模型提供了良好的基础; ③ 瀑布模型反映了工程的实际情况,在大型系 统工程项目中用的多。
为什么需要敏捷开发
• 敏捷开发的优势:
-精确
传统瀑布式软件开发通常会在开发产品前对 整个软件的需求进行分析,然后进行概要设计、 详细设计、编码、测试过程,直到软件发布。但 通常用户会发现那已经不是他们想要的东西。而 敏捷方法则是通过短周期“设计-开发-交付”有 用的软件给用户,并从用户那里得到反馈,再根 据用户反馈进行下一周期的“设计-开发-交付”。
为什么需要敏捷开发
• 敏捷开发的优势:
-丰厚的投资回报率
在敏捷开发过程中,最具价值的功能总是被 优先开发,这样能给客户带来最大的投资回报率。
为什么需要敏捷开发
案例:软件缺少适当的文档资料
IBM公司开发OS/360系统
IBM公司的 OS/360系统,共约100万条指令,投 入5000人年,耗资数亿美元,而结果却令人沮丧, 错误多达2000个以上,系统根本无法正常运行。
图1-1 软件、硬件成本变化趋势
软件危机产生的原因:
软件开发和维护过程中存在的许多严重问题,
学习目标
掌握软件、软件工程的概念 了解软件危机、软件生存周期 了解软件开发的各种模型 掌握软件开发的瀑布模型
学习要点
软件、软件工程、软件生存周期、 软件开发的模型(瀑布型和螺旋型)
学习难点
对软件开发模型的理解
1.1 软件与软件危机
1、软件的定义
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、软件危机
5、对软件开发的深层次认识:
➢ 开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不 一样 正如建设一个平房和高楼大厦 建造房屋的过程
确定和分析需求 房子的总体设计(建筑平面图和建筑透视图) 房子的详细设计(建筑平面图的细化以及规格说明) 识别并设计房子的组成部分 建造房子的每一个组成部分 测试房子的每一个组成部分 把房子的各个部分集成在一起,在住户搬进来之前作最后的修改
一、软件的定义、特点
1软件的定义: 什么是程序(2/2) 程序设计语言具有良好、严格语法和语义 目前程序设计语言主要有以下几种类型
面向机器: 如汇编语言、机器语言等 面向过程: 如Fortran, Pascal, C等等 面向对象: 如Java等等 面向问题: 如结构化查询语言SQL等等
一、软件的定义、特点
➢ 大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织 软件的生产和管理,必须经过分析、设计、实现、测试、维护等一系 列软件过程和活动
可执行部分
程序
不可执行部分
文档 1
文档3 文档
2
一、软件的定义、特点
1软件的定义: 什么是程序(1/2): 程序: 由程序设计语言所描述的、能为计算机所识别、理解和处理的语
句序列 程序例子
Main( ) { int i, j; // 变量定义
char Str[10]; i = i + j ; // 语句说明 ……}
二、 主要内容
1、软件工程的基本概念及软件危机
2、软件生存周期及软件开发模型
3、软件计划
4、软件分析(需求分析)
5、软件系统设计
6、软件测试
7、软件维护
8、面向对象软件工程
返回
三、课程特点
1、是专业课; 2、属“工程”学科; 3、是一门需不断完善的、发展的、可创新的学科。
返回
四、参考教材
1、主要参考书目: 《软件工程技术及应用》贾铁军著 机械工业出版社 2、其他参考书目:
软件工程与技术
课程简介
一.本课程学习的目的 二.本课程的主要内容 三.本课程的特点 四.本课程的教/学及考核方式 五.主要参考书目 六.实验安排
一、本课程学习目的
消除错误地认识 学习软件工程基本理论 学习主流的软件开发方法 熟悉软件开发过程 掌握软件开发全过程中的各重要阶段的任务及相
关描述方法 ; 如何分析问题并设计出合理的解决方案 如何保证软件质量 培养软件工程师的基本素质
4、 90年代至今:
现代信息技术飞速发展(并行计算机处理、三层处理模式、数据仓 库、多媒体技术、网络技术、电子商务等)称为:网络时代
三、软件危机
Crisis!
1、软件危机定义:
软件在开发和维护过程中遇到的一系列问题 ➢困扰学术界和工业界 ➢用户对软件开发缺乏信心 ➢软件开发的高投入和高风险
三、软件危机
1软件的定义: 什么是文档: 文档: 记录软件开发活动和阶段性成果、理解软件所必需的阐述性资料
需求分析文档、软件设计文挡、用户文档等 编写文档目的
促进对软件的开发,管理和维护; 便于各种人员(用户,开发人员)的交流
一、软件的定义、特点
2软件的特点 ➢不会老化 ➢逻辑产品 (智力, 无形) ➢维护困难和复杂(完善, 纠错,…...) ➢生产只需复制 ➢软件开发性质如成本、进度等难以估计 ➢软件的开发更加依赖于开发人员的业务素质、智力、人员的合作 、组织和管理
由于软件质量问题导致失败的软件项目非常多
三、软件危机
2、软件危机的表现(3 of 3)
➢ 进度难以控制 项目延期比比皆是 由于进度问题而取消的软件项目较常见 只有一小部分的项目能够按期完成
➢ 维护非常困难 软件维护的多样性 软件维护的复杂性 软件维护的副作用
三、软件危机
3、软件危机包含两方面问题
一、如何开发软件,以满足不断增长,日趋复杂的需求; 二、如何维护数量不断膨胀的软件产品。
4、软件危机产生的原因
➢ 逻辑产品,不同于物理产品 ➢ 复杂性高
逻辑产品,逻辑复杂性,远高于硬件复杂性 软件的复杂性随规模呈指数级上升 ➢ 规模大 应用扩大,代码量,1000万行,仍在不断膨胀 ➢ 影响软件生产率和质量的因素比较复杂 人员的能力和水平 团队合作 ➢ 缺乏有效、系统原理、原则、方法和工具的指导和辅助:
2、软件危机的表现(1 of 3)
成本高
90
IBM 360 OS, 5000多人年,耗时4年 80
70
(1963-1966),花费2亿多美元
60
美国空军:1955年软件占总费用(计算 50
机系统)的18%,70年60%,85年达到 40
30
85%
20
美国全球军事指挥控制系统,硬件1亿 10
美元,软件高达7.2亿美元
0 60年代
计算机软件和硬件费用比
80年代
计算机软件 计3)
软件质量得不到保证 软件应用面的扩大:科学计算、军事、航空航天、工业控制、企 业管理、办公、家庭 软件越来越多的应用于安全犹关(safety critical)的系统,对软件质 量提出更高的要求 80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误 美国阿托拉斯火箭的发射失败,原因是软件故障 英国1986年开发的办公室信息系统Folios经4年,因性能达不到要 求,1989年取消 日本第5代机因为软件问题在投入50亿美元后于1993年下马
a.《软件工程》 杨卫东译 人民邮电出版社 b.《实用面向对象软件工程教程》 殷人昆等译 电子工业出版社
返回
第一章
本章要点
软件工程概述
1软件的定义及软件发展过程 2软件危机及软件工程的产生 3软件工程学定义、本课程学习的目的
一、软件的定义、特点
1软件的定义 程序 + 数据 + 文档
与计算机系统操作有关的程序、数据以及任何与之相关的文档的集合。
二、软件的发展过程
1、20世纪50年代—60年代初:程序设计阶段
特点:个体化;只有程序清单;以硬件发展为主
2、20世纪60年代初—70年代初:程序系统阶段
特点:作坊式;软件数量剧增;软件维护费用惊人;提 出“软件工 厂”概念;出现软件危机
3、 70年代— 90年代:软件工程阶段
软件成本剧增;硬件技术 (微电子学)日趋成熟;软件工程时代