软件与软件工程幻灯片PPT

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
巧和创造性,加剧软件产品的个性化。
2021/5/18
36
➢ ⑥软件产品的特殊性和人类智力的局限性 ,使人们处理“复杂问题”困难重重。
所谓“复杂问题”的概念是相对的。一旦人 们采用先进的组织形式、开发方法和工具 提高了软件的开发效率和能力,新的、更 大的、更复杂的问题又摆在人们面前。
2021/5/18
➢ 这些方法支持软件的分析、设计、编码、测试, 给出了指导软件开发活动的基本原则、技术和步 骤。
2021/5/18
41
1.结构化方法
➢ 结构化方法是1970年代初至1980年代中广泛使用的方法
➢ 至今在科学计算、实时嵌入式应用软件开发中仍在发挥作用
➢ 结构化方法是从结构化的程序设计开始逐步扩展为,包 括结构化分析、结构化设计、结构化程序设计的系统方 法。
概念或功能相对独立的一个或一组相关模块定义为一 个软构件。软构件可以在多种场合应用的程度称为构件 的可复用性。
2021/5/18
22
1.1.6 软件的安全与保护
➢ 软件安全是软件控制的系统始终处于不危及人的生命财产 和生态环境的属性。
➢ 软件安全包括两个方面:
(1)关键领域关键部位的计算机软件必须正确、可靠的工 作,要防止因概念、设计和结构等方面的不完善造成的系 统失效,要具有挽回因设计、操作不当造成软件系统失效 的能力。
1.2.2 软件工程的发展
计算机系统4个不同的发展阶段:
时期
主频
软件
第一代 20世纪50年代初到60年
代末
103~105
程序设计阶段 个体化生产
软件危机出现
第二代 20世纪60年代末期到80
年代中期
第三代 20世纪80年代中期到90
年代末期
第四代 2000年至今
105~107 107~108
109
32
➢ ②软件开发人员对用户需求的理解与用户 的本来愿望有差异。
这种差异用户和开发人员可能还不知道,这 必然导致开发出来的软件产品与用户要求 不一致。
2021/5/18
33
➢ ③大型软件项目需要组织一定的人力共同 完成,多数管理人员缺乏开发大型软件系 统的经验,而多数软件开发人员又缺乏管 理经验。
项目

过程
2021/5/18
软件制品
方法工具
28
➢ 2004年ACM和IEEE/CS联合推出的软件工程知识体 SWEBOK系统的定义了软件工程学科的研究目标和 主要内容,包括:
软件需求、设计、构造、
测试、维护、配置管理、
软件工程管理、软件工程过程、
软件工程工具和方法、软件质量
2021/5/18
29
37
软件工程的发展
➢ 综上所述,软件工程发展的主要因素是:信息社 会的广泛需求,软硬件技术的进步,软件从业人 员卓有成效的工作,软件产业的兴起,软件学科 建设和人才培养,各国政府对软件发展的重视等
➢ 四十年来软件工程逐步成熟,伴随硬件的发展, 软件工程向着施工领域更广泛、开发能力更强, 过程更成熟,软件质量、成本、进度更加可控的目 标迈进。
连续控制系统
业务处理系统
危险等级 每小时发生危险故障的次数 请求调用时发生故障的概率
灾难性
10-8 ~ 10-9
10-4 ~ 10-5
重大
10-7 ~ 10-8
10-3 ~ 10-4
较大
10-6 ~ 10-7
10-2 ~ 10-3
较小Biblioteka 10-5 ~ 10-610-1 ~ 10-2
2021/5/18
25
2021/5/18
38
图1.5 影响软件工程发展的关键要素
人 人和 和团 团队 队
软件方法学 和工具
软件项目管理 和过程改进
影响软件工程发展的 关键要素
社会需求
桌面计算技术
投入市场时间
平面显示器
计数器
U/D
B1
Reset
B4
Carry out ENB
微电子 芯片
2021/5/18
网络 39
1.2.3 软件工程的目标和原则
1.1.1软件与软件的组成 ➢ 计算机科学对软件的定义 软件是在计算机系统支持下,能够完成特定 功能和性能的程序、数据和相关的文档
➢ 软件可形式的表示为:
软件= 知识+程序+数据+文档
2021/5/18
13
➢ 程序:用计算机程序设计语言描述的。 ➢ 数据:程序加工的对象和结果。 ➢ 文档:录软件开发的活动和中间制品,记
机系统的限制,即受环境影响大
2021/5/18
16
图1.2 软硬件的故障率曲线
➢ 硬件交付后,初期会暴露产品设计、制造中的问题 ,各零部件需要磨合,经长期使用会发生磨损、老 化,于是故障率曲线呈“浴缸”形(如图1.2a所示) 。
➢ 软件不会磨损、老化,但软件逻辑关系复杂、理解 困难,维护过程中很可能产生新的缺陷(如图1.2b所 示)。
软件要素和属性之间的关系不是独立的,有
些是相关的,甚至是矛盾的。
2021/5/18
19
软件工程8个质量要素:
(1)正确性(correctness)。 软件满足需求规约及完成用户目标的程度。
(2)可用性(usability)。 学习和使用软件的难易程度,包括:操作软件、为软件准 备输入数据,解释软件输出结果等。
各类人员的信息交流不及时、不准确、有时 还会产生误解
人与人的交流比写程序困难得多。
2021/5/18
34
➢ ④软件项目开发人员不能有效地、独立自主地 处理大型软件的全部关系和各个分枝,因此容
易产生疏漏和错误。
2021/5/18
35
➢ ⑤缺乏有力的方法学和工具支持,过分地 依靠程序设计人员在软件开发过程中的技
录软件配置及变更,用于软件专业人员和 用户的交流,用于软件开发、过程管理和 运行阶段的维护。
遵循标准
保持程序、数据和文档的一致性。
2021/5/18
14
1.1.2 软件生存周期
➢ 软件生存周期:软件从概念 形成、进化、运行到退役的 全过程。
需求 设计 编码、调试 软件测试
运行、维护
退役
图1.1传统软件生存周期
(3)可靠性(reliability)。 软件完成预期功能,成功运行的概率。软件可靠性反映了 软件无故障工作的状况。
(4)有效性(efficiency)。 软件系统利用计算机的时间资源和空间资源完成系统功能 的能力。
2021/5/18
20
(5)可维护性(maintainability)。 ➢ 软件制品交付用户使用后,能够对它进行修改,以便改正
(2)对进入软件系统人的身份进行认证、对数据访问进行 控制,阻止计算机病毒、木马的侵入,防止计算机失控, 计算机内的重要信息被盗,给人们的财产和精神造成巨大 损失。
2021/5/18
23
软件的安全与保护
➢ IEC国际标准SC65A-123(草案)把软件危险程 度分成四级,即灾难性、重大、较大、较小。
软件工程师:更关注软件质量的内部属性,通过提高 软件内部属性,如模块化、一致性、简洁性、可测试 性、自文档化等,支持和保证软件外部质量属性的实 现。
➢ 国际标准化协会颁布的ISO 9126(2001) 将软件质量要素确 定为正确性、可靠性、有效性、可使用性、可维护性、可 移植性六个。
➢ 2011年3月国际标准化组织对ISO 9126做了修订和扩充, 发布了ISO/IEC 25010新标准,增加了安全性和兼容性。
2021/5/18
21
(6)可移植性(portability)。 将软件安装在不同计算机系统或环境的难易程度。
(7)安全性(security)。 控制或保护程序和数据不受破坏的机制,以防止程序
和数据受到意外的或蓄意的存取、使用、修改、毁坏或 泄密。在网络环境下计算机犯罪、恶作剧增多,软件安 全受到人们的高度重视。 (8)可复用性(reusebility)。
➢ 结构化分析
➢ 用分层的数据流图和控制流图开发系统的功能模型和数据模型。
➢ 结构化设计
➢ 按照系统功能模型,自顶向下,逐步求精,最终得到组成系统的 模块(子系统)及它们之间的控制关系。
➢ 灾难性
➢ 计算机系统的失效会危及群众的生命,摧毁设备、设施 ,造成巨大的经济损失
➢ 重大
➢ 失效会危及人员生命,部分设备、设施严重损坏,造成 大的经济损失
➢ 较大
➢ 失效会造成人员伤害,给设备、设施造成一定损失
➢ 较小
➢ 不涉及安全性问题
2021/5/18
24
表1.1 IEC SC65A-123不同危险等级软件 的可靠性要求
软件与软件工程幻灯片PPT
本PPT课件仅供大家学习使用 请学习完及时删除处理 谢谢!
为什么要学习软件工程
2021/5/18
2
2021/5/18
3
2021/5/18
4
为什么要学习这门课程
正确理解和认识“软件”的概念及其特点 正确地理解, 领悟和掌握软件工程方法学 掌握软件工程的原则、方法和思想来系统地开 发软件,尤其是复杂、庞大软件的开发 了解和接触各种软件开发技术和工具 培养和他人相互合作进行软件开发、独立解决 问题的能力 培养通过多种手段获取新知识的能力 培养逻辑思维能力, 尤其是抽象能力 软件工程是软件技术和管理人员必备的课程
1.2 软件工程的概念
1.2.1 软件工程的定义 1.2.2 软件工程的发展 1.2.3 软件工程的目标和原则 1.2.4 软件开发的主要方法
2021/5/18
26
1.2.1 软件工程的定义
➢ IEE93给出的软件工程定义: ①将系统的、规范的、可量化的方法应用于软件的 开发、运行和维护的过程; ②及上述方法的研究。
2021/5/18
15
1.1.3 软件的特点
1. 软件是一种逻辑实体,不是物理实体,他具有抽 象性
2. 软件不会磨损和老化 3. 软件主要是研制,生产是简单的拷贝 4. 软件成本昂贵,其开发方式至今尚未摆脱手工方
式 5. 软件维护不同于硬件维修,易产生新的问题 6. 软件具有“复杂性”,其开发和运行常受到计算
潜伏的缺陷、改进性能和其他属性,使软件制品适应环境 的变化等等。 ➢ 由于软件是逻辑产品,只要用户需要可以无限期地使用下 去,软件维护是 不可避免的。 ➢ 软件维护成本约 占整个生命周期 的40%至60%。 软件维护费用高 的问题今天仍然 没有明显改变。
图1.3 软件开发成本比重上升维护成本居高不下
2021/5/18
17
1.1.4 几类常用的软件
1. 系统软件 2. 个人计算机软件 3. 实时嵌入式软件 4. 科学和工程计算软件 5. 事务处理软件 6. 人工智能软件 7. Web应用软件
2021/5/18
18
1.1.5 软件的质量
➢ 不同人对软件质量的关注点和理解是不同的。
用户:关注软件质量的外部属性,如软件的正确性、 可靠性、有效性、完整性、可用性、可维护性、可移 植性、可复用性等。
➢ 软件工程的目标
➢ 在给定成本、进度的前提下,开发出满足用户或市场 需要的高质量的软件产品。
为了达到这些目标,在软件开发过程中必须根据软件 系统,特别是各子系统的功能、特点和实际情况,选
取适宜的开发模型和设计方法,采用有效的软件项目 管理方法。
➢ 过程中必须遵循的软件工程原则: 抽象、信息隐藏、模块化、局部化、一致性、 完全性和可验证性。
2021/5/18
40
1.2.4 软件开发的主要方法
➢ 常用的方法有:结构化方法、面向对象方法、及 形式化开发方法等。
➢ 近年来随着网络技术、多媒体技术的发展和构建 大型复杂软件的需要:
网络的软件开发方法 基于构件的软件开发方法 面向方面AOP的软件开发方法 人机界面及虚拟现实的软件开发方法 敏捷软件开发方法
软件工程这一定义的第一部分要求,软件开发、 运行和维护的过程是“系统的”、“规范的”、 “可量化的”。
软件工程定义的第二部分说明,软件工程需要相 关科学研究做基础,需要方法学的支持。
2021/5/18
27
图1.4 软件工程五要素
➢ 软件工程的项目、人、过程、方法和工具、软件 制品构成了软件工程的五要素,它们既有区别又 有联系(如图1.4所示)
程序系统阶段 作坊式生产
软件工程诞生
软件工程阶段 工程化思想 分布式系统
硬件与软件综合 体系结构 独立学科
➢ 软件危机的原因: 问题出在哪里?
31 2021/5/18
➢ ①用户对软件需求的描述经常出现二义性、 不确定性、遗漏或错误。
软件开发过程中,经常提出变更软件功能、界 面、支撑环境等要求。
2021/5/18
有何意义?
■本课将是学习以下课程的基础
➢ 综合课程设计 ➢ 专业实习 ➢ 毕业设计
■实际应用
➢ 参与单位软件系统建设工作 ➢ 参与软件开发
第一章 软件与软件工程
1.1 软件的概念 1.2 软件工程的概念 1.3 软件过程模型 1.4 敏捷软件开发原则和应用 1.5 软件工程人的因素
9
1.1 软件的概念
相关文档
最新文档