软件工程概论(完整)ppt课件
合集下载
软件工程导论概要.优秀精选PPT
。这时软件危机出
这个阶段要回答的关键问题是:“对上一阶段所确定的问题有行得通的解决办法吗?” 系统分析员需要进行一次大大压缩和简化了的
现,随之而来人们开始研究消除危机的途径,从而形成一 系统分析和设计的过程,也就是在较抽象的高层次上进行的分析和设计的过程。
这个阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。
通常把在软件生命周期全过程中使用的一整套技术方法 的集合称为方法学(Methodology),也称为范型 (Paradigm)。
软件工程方法学的3要素:方法、工具和过程
一. 传统方法学
也称为生命周期方法学或结构化范型。从时间角度
1)对软件开发成本和进度的估计常常很不准确; 2)用户对完成的软件系统不满意的现象经常发生; 3)软件产品的质量往往靠不住; 4)软件常常是不可维护的; 5)软件通常没有适当的文档资料; 6)软件成本在计算机系统总成本中所占的比例逐年上升; 7)软件开发生产率提高的速度跟不上计算机应用的发展
趋势。
1)软件本身特点造成;
极限编程的整体开发过程:
如何开发门软件新,以的满足学对软科件日—益增—长的软需求件工程学。
软件危机:计算机软件的开发和维护过程中所遇 到的一系列严重问题。(正常、不正常运行软件都 具有这种问题)
软件危机的实质: 如何开发软件,以满足对软件日益增长的需求 如何维护数量不软件工程学:主要应用工程的方法和技术 研究软件开发与维护的方法、工具和管理的一 门交叉学科。
2)程序设计方法学:主要应用数学的方法研 究程序的性质以及程序设计的理论和方法的学 科。
1.2 软件工程
软件工程的介绍 1968年NATO会议:软件工程就是为了经济地获 得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。
软件工程导论(共65张PPT)可编辑全文
–期刊管理系统之借阅子系统
– 学生选课系统 软件
Microsoft Visio; Rational Rose
高级程序语言 作业递交方式:
来信标题注明 :班级 、学号、姓名、章节
第1章 软件工程学概述
1.1 软件危机
软件危机的出现:60年代中期到70年代中期, 许多软件最终成为不可维护的,这就是软件危 机.
不能用象硬件替换部件的方式修复软件的故障 使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
出现了“软件作坊”,软件作为一种产品被广泛使用;
使用个体化开发方式;
软件的发展史_2
随着软件数量的增加及软件需求的日趋复杂, 维护难度与来越大,开发成本高,质量低 导致“软件危机”
➢相同点:都将软件开发划分为分析、设计、编码、 测试等阶段 ➢不同点:思想不同,方法不同。另外,传统软件 工程更关注功能模块,面向对象软件工程更关注对 象的抽取和设计
➢ 两类软件工程方法学没有绝对的替代关系
1.3软件生命周期
生命周期方法学
从时间角度对软件开发和维护的复杂问题进行分解,把软件生命 的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务, 然后逐步完成每个阶段的任务。
关注大型程序的构造 中心问题是控制复杂性 软件经常变化 开发效率非常重要 和谐地合作是开发软件的关键 有效地支持它的用户 具有一种文化背景的人替另一种文化背景的人
创造产品
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组成员应少而精 承认不断改进软件工程实践地必要性
软件工作涉及到很多社会因素。 由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙
– 学生选课系统 软件
Microsoft Visio; Rational Rose
高级程序语言 作业递交方式:
来信标题注明 :班级 、学号、姓名、章节
第1章 软件工程学概述
1.1 软件危机
软件危机的出现:60年代中期到70年代中期, 许多软件最终成为不可维护的,这就是软件危 机.
不能用象硬件替换部件的方式修复软件的故障 使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
出现了“软件作坊”,软件作为一种产品被广泛使用;
使用个体化开发方式;
软件的发展史_2
随着软件数量的增加及软件需求的日趋复杂, 维护难度与来越大,开发成本高,质量低 导致“软件危机”
➢相同点:都将软件开发划分为分析、设计、编码、 测试等阶段 ➢不同点:思想不同,方法不同。另外,传统软件 工程更关注功能模块,面向对象软件工程更关注对 象的抽取和设计
➢ 两类软件工程方法学没有绝对的替代关系
1.3软件生命周期
生命周期方法学
从时间角度对软件开发和维护的复杂问题进行分解,把软件生命 的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务, 然后逐步完成每个阶段的任务。
关注大型程序的构造 中心问题是控制复杂性 软件经常变化 开发效率非常重要 和谐地合作是开发软件的关键 有效地支持它的用户 具有一种文化背景的人替另一种文化背景的人
创造产品
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组成员应少而精 承认不断改进软件工程实践地必要性
软件工作涉及到很多社会因素。 由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙
软件工程概论PPT课件
集成测试
总结词
集成测试是在单元测试的基础上,将多个模块或组件组合在一起进行测试,以验证它们之间的集成是否正常工作。
详细描述
在软件开发过程中,当多个模块或组件完成单元测试后,需要进行集成测试来验证它们之间的交互和集成是否正 常。集成测试的目的是发现模块之间的接口问题和集成后的性能问题,以确保软件的整体功能和性能达到要求。
编码
选择编程语言
根据项目需求和团队技术能力,选择适合的 编程语言进行编码。
编码规范
制定编码规范,确保代码的可读性、可维护 性和可扩展性。
编码实现
按照设计文档和编码规范,编写代码实现各 个模块的功能。
代码审查
对编写的代码进行审查,确保其符合规范和 设计要求,并进行必要的重构和优化。
测试
单元测试
对每个模块进行单元测试,确保其功能正常、符合设计要求。
界面风格与一致性
界面设计应保持一致的风格,以提高用户对软件系统的认知和熟悉 度。
模块设计与划分
模块设计与划分概述
模块设计与划分是指将软件系统划分为一系列相互独立、可复用 的模块。
模块化设计的好处
模块化设计可以提高软件系统的可维护性、可扩展性和可重用性。
模块间的通信与协作
模块间的通信和协作是模块化设计的关键,应确保模块间的松耦 合和低耦合。
05 软件测试工程
单元测试
总结词
单元测试是对软件中的最小可测试单元进行检查和验证,通常以函数或方法为 单位进行测试。
详细描述
单元测试是软件开发过程中的一种测试方法,旨在验证软件的最小单元是否符 合设计要求和功能规范。它通常在编码阶段同步进行,以确保代码的正确性和 可靠性。单元测试的方法包括白盒测试和黑盒测试。
软件工程ppt课件完整版
修改与测试
对软件进行修改,并进行测试以确保 修改的正确性。
版本管理与发布
对修改后的软件进行版本管理,并发 布新版本。
软件演化策略与方法
增量式演化
逐步增加新功能或修改现有功能。
迭代式演化
通过不断迭代改进软件质量。
软件演化策略与方法
组件化演化
将软件拆分为独立组件进行演化。
重构
改进软件内部结构而不改变其外部行为。
处理团队冲突,化解矛盾,促进团队合作
版本控制与文档管理
使用版本控制工具(如Git) 管理项目代码和文档
建立完善的文档管理体系, 包括需求文档、设计文档、 测试文档等
制定版本控制规范,包括 分支管理、代码提交和合 并流程等
定期评审和更新文档,确 保文档与项目实际进展保 持一致
07 软件维护与演化
软件维护类型及流程
版本迁移与数据迁移
将旧版本的数据迁移到新版本,确保数据的 完整性和一致性。
持续集成与持续交付
持续集成
频繁地将代码集成到主干, 并进行自动化测试以快速发 现问题。
持续交付
在持续集成的基础上,将软 件以可发布的状态交付给用 户,以便用户能够快速获得 新功能或修复问题。
自动化测试与部署
监控与反馈
利用自动化工具进行测试和 部署,提高开发效率和质量。
软件工程的发展
软件工程经历了从程序设计、软件 工程方法、软件工程过程到软件工 程学科的逐步成熟过程。
软件工程目标与原则
软件工程的目标
在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护 性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求 的软件产品。
软件工程的原则
软件工程完整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课件
第1章 1.1软件与软件危机
1.1.3 软件危机
2. 软件危机产生的原因
(1)忽视软件开发前期的调研和需求分析工作。 (2)缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定。 (3)开发过程缺乏统一的、规范化的方法论指导。 (4)忽视与用户、开发组成员间的及时有效的沟通。 (5)文档资料不规范或不准确。导致开发者失去工作的基础,管理者失去管理的依据。 (6)没有完善的质量保证体系。
第1章 1.1软件与软件危机
1.1.3 软件危机
3. 软件危机解决途径
要解决软件危机问题,需要采取以下措施: (1)使用好的软件开发技术和方法。 (2)使用好的软件开发工具,提高软件生产率。 (3)有良好的组织、严密的管理,各方面人员相互配合共同完成任务。 为了解决软件危机,既要有技术措施(好的方法和工具),也要有组织管理措施。软件工 程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。
第1章 1.4软件开发模型
1.4.5 螺旋模型
第1章 1.4软件开发模型
1.4.5 螺旋模型
第1章 1.5软件开发方法
1.结构化方法 结构化方法又称传统方法、生存周期法、面向过程的方法、面向功能的方法、面向数据 流的方法。 所谓结构化分析,就是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流 图来建立系统的功能模型,从而完成需求分析。 所谓结构化设计,就是根据模块独立性准则、软件结构准则,将数据流图转换为软件的 体系结构,用软件结构图来建立系统的物理模型,实现系统的总体设计。 所谓结构化程序设计,就是根据结构程序设计原理,将每个模块的功能用相应的标准控 制结构表示出来,从而实现详细设计。
第1章 1.2软件工程
1.2.1 软件工程的定义和目标
一章节软件工程概论-PPT文档资料
5
问题定义
可行性研究 需求分析 概要设计 详细设计 编码 测试 维护
1.3 软件生存周期(5)
定义阶段流程图
软件项目提出 确定工作范围、资源 需求和投资成本; 可行性分析; 制定开发进度表。 修改 评审 通过 未审批
软件计划
软件项目“搁浅”
确定功能、性能要求; 制定有效性验收标准; 编写初步用户手册。
8
1.4 软件开发的方法和技术(2)
二.渐增型 1.渐增型方法是从问题的部分需求出发,先建立一个不完全的系 统,通过测试运行该系统取得经验和信息反馈,加深对软件需 求的理解,进一步使系统扩充和完善。如此反复,直至软件人 员和用户对所设计完成的软件系统满意为止。 2.在渐增型开发下的软件是随软件开发的过程而逐渐形成的。 3.渐增型开发方法适合于知识型软件的开发,设计系统时对用户 需求的认识开始不是很清楚的,需要在开发过程中不断认识、 不断获得新的知识去丰富和完善系统。多数研究性质的试验软 件,一般采用此方法。 开发过程图解如下所示:
修改 技术评审 可接收 进入开发阶段
软件计划 规格说明
6
1.3 软件生存周期(6)
确定的软件需求
开发阶段流程图
编写程序 修改 静态检查 通过 源程序 清单
软件结构 图与模块 功能说明
定义软件结构 与数据结构, 确定模块功能、 调用关系接口 修改
评审 接受 详细设计 描述 确定每个 模块算法
单元测试, 集成测试, 验收测试。
11
1.4 软件开发的方法和技术(5)
原型化开发过程
需求分析
原型开发
用户反馈
原型评价
最终系统设计
最终系统实现
12
1.4 软件开发的方法和技术(6)
问题定义
可行性研究 需求分析 概要设计 详细设计 编码 测试 维护
1.3 软件生存周期(5)
定义阶段流程图
软件项目提出 确定工作范围、资源 需求和投资成本; 可行性分析; 制定开发进度表。 修改 评审 通过 未审批
软件计划
软件项目“搁浅”
确定功能、性能要求; 制定有效性验收标准; 编写初步用户手册。
8
1.4 软件开发的方法和技术(2)
二.渐增型 1.渐增型方法是从问题的部分需求出发,先建立一个不完全的系 统,通过测试运行该系统取得经验和信息反馈,加深对软件需 求的理解,进一步使系统扩充和完善。如此反复,直至软件人 员和用户对所设计完成的软件系统满意为止。 2.在渐增型开发下的软件是随软件开发的过程而逐渐形成的。 3.渐增型开发方法适合于知识型软件的开发,设计系统时对用户 需求的认识开始不是很清楚的,需要在开发过程中不断认识、 不断获得新的知识去丰富和完善系统。多数研究性质的试验软 件,一般采用此方法。 开发过程图解如下所示:
修改 技术评审 可接收 进入开发阶段
软件计划 规格说明
6
1.3 软件生存周期(6)
确定的软件需求
开发阶段流程图
编写程序 修改 静态检查 通过 源程序 清单
软件结构 图与模块 功能说明
定义软件结构 与数据结构, 确定模块功能、 调用关系接口 修改
评审 接受 详细设计 描述 确定每个 模块算法
单元测试, 集成测试, 验收测试。
11
1.4 软件开发的方法和技术(5)
原型化开发过程
需求分析
原型开发
用户反馈
原型评价
最终系统设计
最终系统实现
12
1.4 软件开发的方法和技术(6)
《软件工程知识概述》课件
2 软件项目风险管理
介绍软件项目风险管理的方法和工具,如风险评估、风险控制等。
3 软件开发团队组织与管理
探讨如何组织和管理软件开发团队,包括人员分工、沟通与协作等。
软件质量保证
软件质量保证体系
介绍软件质量保证体系的组成 部分和执行过程。
软件质量度量及评估
讨论软件质量度量和评估的方 法和标准。
软件维护及升级
需求分析建模方法
探讨需求分析建模的常用方法, 如数据流图、状态转换图等。
设计
1
软件设计原则
讨论软件设计的基本原则,如高内聚、
面向对象设计
2
低耦合等。
介绍面向对象设计的思想和常用的设计
模式。
3
软件架构设计
探讨软件架构设计的重要性和常用的架 构模式,如分层架构、微服务架构等。
编码与测试
编码规范和技巧
软件开发生命周期 模型
讨论不同的软件开发生命周 期模型,如瀑布模型、敏捷 开发等,并了解每个阶段的 重要性。
软件过程改进
介绍软件过程改进的方法和 工具,如CMMI、SPICE等。
需求分析
需求获取管理
探讨如何获取和管理软件项目 的需求,包括需求收集和分析 工具的使用。
需求建立技术
介绍需求建立的方法和技术, 如用例分析、面谈等。
探讨软件维护和升级的重要性 以及常用的维护方法。
应用实践
1
软件工程在实际程中的应用
探讨软件工程在实际工程项目中的具体应用场景和案例。
2
典型应用案例分析
分析一些典型的软件工程应用案例,如云计算、物联网等。
3
前沿技术及趋势
介绍当前软件工程的前沿技术和趋势,如人工智能、区块链等。
介绍软件项目风险管理的方法和工具,如风险评估、风险控制等。
3 软件开发团队组织与管理
探讨如何组织和管理软件开发团队,包括人员分工、沟通与协作等。
软件质量保证
软件质量保证体系
介绍软件质量保证体系的组成 部分和执行过程。
软件质量度量及评估
讨论软件质量度量和评估的方 法和标准。
软件维护及升级
需求分析建模方法
探讨需求分析建模的常用方法, 如数据流图、状态转换图等。
设计
1
软件设计原则
讨论软件设计的基本原则,如高内聚、
面向对象设计
2
低耦合等。
介绍面向对象设计的思想和常用的设计
模式。
3
软件架构设计
探讨软件架构设计的重要性和常用的架 构模式,如分层架构、微服务架构等。
编码与测试
编码规范和技巧
软件开发生命周期 模型
讨论不同的软件开发生命周 期模型,如瀑布模型、敏捷 开发等,并了解每个阶段的 重要性。
软件过程改进
介绍软件过程改进的方法和 工具,如CMMI、SPICE等。
需求分析
需求获取管理
探讨如何获取和管理软件项目 的需求,包括需求收集和分析 工具的使用。
需求建立技术
介绍需求建立的方法和技术, 如用例分析、面谈等。
探讨软件维护和升级的重要性 以及常用的维护方法。
应用实践
1
软件工程在实际程中的应用
探讨软件工程在实际工程项目中的具体应用场景和案例。
2
典型应用案例分析
分析一些典型的软件工程应用案例,如云计算、物联网等。
3
前沿技术及趋势
介绍当前软件工程的前沿技术和趋势,如人工智能、区块链等。
软件工程概论-计算机软件基础(ppt 114页)
特点: –尚无软件的概念,程序设计主要围绕硬件 进行开发,规模很小,工具简单,无明确 分工(开发者和用户),程序设计追求节 省空间和编程技巧,无文档资料。主要是 用于科学计算。
第33页
软件设计阶段(1956年~1970年)
特点: –硬件环境相对稳定,出现“软件作坊”的开发组 织形式。开始使用产品软件(可购买),从而建 立了软件的概念。系统规模越来越庞大,高级编 程语言层出不穷,应用领域不断拓宽,开发者和 用户有了明确分工,社会对软件的需求量剧增。 但是软件开发技术没有重大突破,生产效率低下, 从而导致“软件危机”产生。
第38页
软件工程基本原理
自1968年提出“软件工程”的概念以来, 专家学者又陆续突出了100多条关于软件 工程的准则。
软件的作用 软件是今后信息产业发展的 推动力。美国最近在24项高科技领域中 调查结果表明,其中18项与软件有关。
第5页
软件工程学的体系结构
软件开发技术
软件工程学
软件工程管理
软件开发方法学 软件工具 软件工程环境
软件管理学 软件经济学
第6页
问题的由来
软件内在规律。任何事物有它自己的客观规律
和发展轨迹。只有认识了它,才能驾驭它。
软件产品的使用寿命很长。在这期间因功能的增加、 硬件的更新换代,都要对软件进行必要的修改。据 统计数据表明,软件维护的费用占总费用的55%~70%。 软件工程的一个重要目标就是提高软件的可维护性, 减少软件维护的代价。
第30页
解决软件危机的途径
为了解决软件危机就要从技术措施和组织 管理两个方面去研究,不断总结经验教训,
生产能力过剩。
返回
第15页
软件生产率很低
伴随计算机的普及,整个社会对计 算机应用的需求越来越大。
第33页
软件设计阶段(1956年~1970年)
特点: –硬件环境相对稳定,出现“软件作坊”的开发组 织形式。开始使用产品软件(可购买),从而建 立了软件的概念。系统规模越来越庞大,高级编 程语言层出不穷,应用领域不断拓宽,开发者和 用户有了明确分工,社会对软件的需求量剧增。 但是软件开发技术没有重大突破,生产效率低下, 从而导致“软件危机”产生。
第38页
软件工程基本原理
自1968年提出“软件工程”的概念以来, 专家学者又陆续突出了100多条关于软件 工程的准则。
软件的作用 软件是今后信息产业发展的 推动力。美国最近在24项高科技领域中 调查结果表明,其中18项与软件有关。
第5页
软件工程学的体系结构
软件开发技术
软件工程学
软件工程管理
软件开发方法学 软件工具 软件工程环境
软件管理学 软件经济学
第6页
问题的由来
软件内在规律。任何事物有它自己的客观规律
和发展轨迹。只有认识了它,才能驾驭它。
软件产品的使用寿命很长。在这期间因功能的增加、 硬件的更新换代,都要对软件进行必要的修改。据 统计数据表明,软件维护的费用占总费用的55%~70%。 软件工程的一个重要目标就是提高软件的可维护性, 减少软件维护的代价。
第30页
解决软件危机的途径
为了解决软件危机就要从技术措施和组织 管理两个方面去研究,不断总结经验教训,
生产能力过剩。
返回
第15页
软件生产率很低
伴随计算机的普及,整个社会对计 算机应用的需求越来越大。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由于缺乏软件开发的经验 ,主观盲目地制 定计划,执行起来和实际情况有很大差距, 对于工作量估计不准确,进度计划无法遵循, 开发工作完成的期限一拖再拖。已经拖延了 的项目,为了加快进度赶上去而增加人力,
反而更加延误了。
.
• 需求在开发的初期阶段提得不够明确, 或 是未能得到确切的表达。
软件人员和用户又未能及时交换意见,使 得一些问题不能及时解决,造成开发后期矛 盾的集中暴露。然而这时问题既难于分析, 也难于挽回。
.
–应用软件
•商业数据处理软件 •工程与科学计算软件 •计算机辅助设计/制造软件 •系统仿真软件 •智能产品嵌入软件 •医疗、制药软件 •事务管理、办公自动化软件 •计算机辅助教学软件
.
• 按软件规模进行划分:
• 类别 参加人员数 研制期限 源程序行数
• 微型 1
Байду номын сангаас
1~4周
0.5k
• 小型 1
1~6月 1k~2k
• 一次使用 • 频繁使用
.
• 按软件失效的影响进行划分:
• 高可靠性软件 • 一般可靠性软件
.
2
软件的发展
• 程序设计阶段:50-60年代 • 程序系统阶段:60-70年代 • 软件工程阶段:70年代以后
P7 表1.3 计算机软件发展的三个时期 及其特点 back
.
软件开发中的问题
• 计划很难制定致使经费预算常常突破
《软件工程》
近二十年来计算机软件已经成为现代科学研 究和解决工程问题的基础,以及管理部门、生 产部门、和服务行业中的关键因素,渗透到了 各个领域,成为当今世界不可缺少的一部分。
展望二十一世纪,软件仍将成为驱动任何事 情从基础教育到遗传工程取得新进展的动力。
学习研究工程化的软件开发方法,使开发过 程更加规范。
• 软件工程概述 • 教学安排
.
▪ 什么是软件 ▪ 软件的分类 ▪ 软件的发展和软件危机 ▪软件工程过程和软件生存期 ▪ 软件工程的目的和要求
.
over
• 软件是计算机系统中与硬件相互依存 的另一部分,它是包括程序,数据及 其相关文档的完整集合
• 程序是按事先设计的功能和性能要求 执行的指令序列
.
软件工程的定义
• Boehm:运用现代科学技术知识来设计 并构造计算机程序及为开发、运行和 维护这些程序所必需的相关文件资料
• IEEE:软件工程是开发、运行、维护 和修复软件的系统方法
• 开发过程没有统一的、公认的方法论和 规范指导
加之不重视文字资料工作,资料很不完整; 忽视每个人与其他人的接口部分,发现了问 题修修补补,这样的软件很难维护。
.
• 未能充分做好检测工作
在运行中暴露出大量的问题,轻者影响系统 的正常工作,重者发生事故,甚至造成生命财 产的重大损失。
美国IBM公司在1963年至1966年开发的IBM 360机的操作系统。5000人-年的工作量,1000 人投入,近100万行源程序。每次发行的新版 本都是从前一版本中找1000个程序错误,项目 负责人F.D.Brook总结时说:“正像一只逃亡 的野兽落到泥潭中做垂死的挣扎,越是挣扎, 陷得越深。最后无法逃脱灭顶的灾难。”
极大型 2000~5000 5~10年 1M~10M
军事指挥、弹道导弹防御系统。
只是对软件工程技术依赖的. 程度不同而已。
• 按软件工作方式划分:
• 实时处理软件 • 分时软件 • 交互式软件 • 批处理软件
.
• 按软件服务对象的范围划分:
• 项目软件 • 产品软件
.
• 按使用的频度进行划分:
• 按软件的功能进行划分:3类 –系统软件
使计算机系统各个部件、相关软件和数据 协调、高效地工作的软件
• 操作系统 • 数据库管理系统 • 设备驱动程序 • 通信处理程序等
.
–支撑软件
协助用户开发软件的工具软件
• 文本编辑程序 • 文件格式化程序 • 磁盘向磁带进行数据传输的程序 • 程序库系统 • 支持需求分析、设计、实现、测 试和支持管理的软件
数值计算或数据处理,通常没有与其它程序的接口 。需要按一定的标准化技术、正规的资料书写以及 定期的系统审查。只是没有大题目那样严格。
• 中型 2~5
1~2年 5k~50k
软件人员之间、与用户之间的联系、协调的配合 关系。因而计划、资料书写以及技术审查需要比较 严格地进行。应用程序和系统程序。系统的软件工 程方法是完全必要的。
.
.
• 软件的开发和运行常受到计算机系统的 限制,对计算机系统有着不同程度的依 赖性
• 软件的开发至今尚未完全摆脱手工艺的 开发方式
• 软件本身是复杂的 •实际问题的复杂性 •程序逻辑结构的复杂性
• 软件成本相当昂贵 • 相当多的软件工作涉及到社会因素
back
.
.
6
软件的分类(5种划分方式)
.
按工程化的原则和方法组织软件开发是 软件开发中的问题一个主要出路。
软件工程阶段,约为70年代以后。50年代到 60年代时,程序设计曾经被看做是一种任人发 挥创造才能的技术领域。写出的程序通篇充满 了程序技巧,这些程序很难被别人看懂。然而 随着计算机的广泛使用,人们逐渐抛弃了这种 观点。对于稍大的程序,并需要较长时间为许 多人使用的程序,人们要求这些程序容易看懂、 容易使用,并且容易修改和扩充。多个软件人 员分工合作、共同完成;只有在项目的总体要 求和技术规范的约束下充分发挥和施展。
• 数据是使程序能正常操纵信息的数据 结构
• 文档是与程序开发,维护和使用有关 的图文材料
.
软件的特点(8点)
• 软件是一种逻辑实体,而不是具体的 物理实体。因而它具有抽象性
• 软件的生产与硬件不同,在它的开发 过程中没有明显的制造过程
• 在软件的运行和使用期间,没有硬件 那样的机械磨损,老化问题
.
大型 5~20 2~3年 50k~100k
编译程序、小型分时系统、实时控制系统等。二级管理 ,若干小组,每组5人以下。人员调整往往不可避免,新 手的培训。采用统一的标准,实行严格的审查是绝对必要 的。
甚大型 100~1000 4~5年 1M(=1000k)
若干个子项目,每一个子项目都是一个大型软件。子 项目之间具有复杂的接口。如远程通信系统、多任务系统 、大型操作系统、大型数据库管理系统、军事指挥系统通 常现有这样的规模。很显然,这类问题没有软件工程方法 的支持,它的开发工作是不可想象的。
反而更加延误了。
.
• 需求在开发的初期阶段提得不够明确, 或 是未能得到确切的表达。
软件人员和用户又未能及时交换意见,使 得一些问题不能及时解决,造成开发后期矛 盾的集中暴露。然而这时问题既难于分析, 也难于挽回。
.
–应用软件
•商业数据处理软件 •工程与科学计算软件 •计算机辅助设计/制造软件 •系统仿真软件 •智能产品嵌入软件 •医疗、制药软件 •事务管理、办公自动化软件 •计算机辅助教学软件
.
• 按软件规模进行划分:
• 类别 参加人员数 研制期限 源程序行数
• 微型 1
Байду номын сангаас
1~4周
0.5k
• 小型 1
1~6月 1k~2k
• 一次使用 • 频繁使用
.
• 按软件失效的影响进行划分:
• 高可靠性软件 • 一般可靠性软件
.
2
软件的发展
• 程序设计阶段:50-60年代 • 程序系统阶段:60-70年代 • 软件工程阶段:70年代以后
P7 表1.3 计算机软件发展的三个时期 及其特点 back
.
软件开发中的问题
• 计划很难制定致使经费预算常常突破
《软件工程》
近二十年来计算机软件已经成为现代科学研 究和解决工程问题的基础,以及管理部门、生 产部门、和服务行业中的关键因素,渗透到了 各个领域,成为当今世界不可缺少的一部分。
展望二十一世纪,软件仍将成为驱动任何事 情从基础教育到遗传工程取得新进展的动力。
学习研究工程化的软件开发方法,使开发过 程更加规范。
• 软件工程概述 • 教学安排
.
▪ 什么是软件 ▪ 软件的分类 ▪ 软件的发展和软件危机 ▪软件工程过程和软件生存期 ▪ 软件工程的目的和要求
.
over
• 软件是计算机系统中与硬件相互依存 的另一部分,它是包括程序,数据及 其相关文档的完整集合
• 程序是按事先设计的功能和性能要求 执行的指令序列
.
软件工程的定义
• Boehm:运用现代科学技术知识来设计 并构造计算机程序及为开发、运行和 维护这些程序所必需的相关文件资料
• IEEE:软件工程是开发、运行、维护 和修复软件的系统方法
• 开发过程没有统一的、公认的方法论和 规范指导
加之不重视文字资料工作,资料很不完整; 忽视每个人与其他人的接口部分,发现了问 题修修补补,这样的软件很难维护。
.
• 未能充分做好检测工作
在运行中暴露出大量的问题,轻者影响系统 的正常工作,重者发生事故,甚至造成生命财 产的重大损失。
美国IBM公司在1963年至1966年开发的IBM 360机的操作系统。5000人-年的工作量,1000 人投入,近100万行源程序。每次发行的新版 本都是从前一版本中找1000个程序错误,项目 负责人F.D.Brook总结时说:“正像一只逃亡 的野兽落到泥潭中做垂死的挣扎,越是挣扎, 陷得越深。最后无法逃脱灭顶的灾难。”
极大型 2000~5000 5~10年 1M~10M
军事指挥、弹道导弹防御系统。
只是对软件工程技术依赖的. 程度不同而已。
• 按软件工作方式划分:
• 实时处理软件 • 分时软件 • 交互式软件 • 批处理软件
.
• 按软件服务对象的范围划分:
• 项目软件 • 产品软件
.
• 按使用的频度进行划分:
• 按软件的功能进行划分:3类 –系统软件
使计算机系统各个部件、相关软件和数据 协调、高效地工作的软件
• 操作系统 • 数据库管理系统 • 设备驱动程序 • 通信处理程序等
.
–支撑软件
协助用户开发软件的工具软件
• 文本编辑程序 • 文件格式化程序 • 磁盘向磁带进行数据传输的程序 • 程序库系统 • 支持需求分析、设计、实现、测 试和支持管理的软件
数值计算或数据处理,通常没有与其它程序的接口 。需要按一定的标准化技术、正规的资料书写以及 定期的系统审查。只是没有大题目那样严格。
• 中型 2~5
1~2年 5k~50k
软件人员之间、与用户之间的联系、协调的配合 关系。因而计划、资料书写以及技术审查需要比较 严格地进行。应用程序和系统程序。系统的软件工 程方法是完全必要的。
.
.
• 软件的开发和运行常受到计算机系统的 限制,对计算机系统有着不同程度的依 赖性
• 软件的开发至今尚未完全摆脱手工艺的 开发方式
• 软件本身是复杂的 •实际问题的复杂性 •程序逻辑结构的复杂性
• 软件成本相当昂贵 • 相当多的软件工作涉及到社会因素
back
.
.
6
软件的分类(5种划分方式)
.
按工程化的原则和方法组织软件开发是 软件开发中的问题一个主要出路。
软件工程阶段,约为70年代以后。50年代到 60年代时,程序设计曾经被看做是一种任人发 挥创造才能的技术领域。写出的程序通篇充满 了程序技巧,这些程序很难被别人看懂。然而 随着计算机的广泛使用,人们逐渐抛弃了这种 观点。对于稍大的程序,并需要较长时间为许 多人使用的程序,人们要求这些程序容易看懂、 容易使用,并且容易修改和扩充。多个软件人 员分工合作、共同完成;只有在项目的总体要 求和技术规范的约束下充分发挥和施展。
• 数据是使程序能正常操纵信息的数据 结构
• 文档是与程序开发,维护和使用有关 的图文材料
.
软件的特点(8点)
• 软件是一种逻辑实体,而不是具体的 物理实体。因而它具有抽象性
• 软件的生产与硬件不同,在它的开发 过程中没有明显的制造过程
• 在软件的运行和使用期间,没有硬件 那样的机械磨损,老化问题
.
大型 5~20 2~3年 50k~100k
编译程序、小型分时系统、实时控制系统等。二级管理 ,若干小组,每组5人以下。人员调整往往不可避免,新 手的培训。采用统一的标准,实行严格的审查是绝对必要 的。
甚大型 100~1000 4~5年 1M(=1000k)
若干个子项目,每一个子项目都是一个大型软件。子 项目之间具有复杂的接口。如远程通信系统、多任务系统 、大型操作系统、大型数据库管理系统、军事指挥系统通 常现有这样的规模。很显然,这类问题没有软件工程方法 的支持,它的开发工作是不可想象的。