版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2022-4-29国防科技大学计算机学院1前言前言 软件和软件工程在信息化社会中软件和软件工程在信息化社会中的地位和作用的地位和作用2022-4-29国防科技大学计算机学院2八十年代初科学家的预言八十年代初科学家的预言(1/2)oOsborne 1979 将迎来将迎来” 新的工业革命新的工业革命”oToffler 1980 微电子的发展是人类历史上的微电子的发展是人类历史上的”第三次浪潮第三次浪潮”o80年代初年代初 美国商业周刊杂志在头版刊登大标题:美国商业周刊杂志在头版刊登大标题: “软件:新的驱动力软件:新的驱动力” 当时人们还没有意识到他们的预见是多么的正确。当时人们还没有意识到他们的
2、预见是多么的正确。2022-4-29国防科技大学计算机学院3八十年代初科学家的预言八十年代初科学家的预言(2/2)oNaisbitt 1982 人类社会将人类社会将“从工业社会向信息社会转变从工业社会向信息社会转变”oFeigenbaum 1983 计算机控制的信息和知识将成为计算机控制的信息和知识将成为20世纪表现能力的世纪表现能力的焦点焦点oStoll 1989 网络和软件产生的网络和软件产生的“电子社会电子社会”是实现全球知识交是实现全球知识交流的关键。流的关键。2022-4-29国防科技大学计算机学院4二十年后的现实二十年后的现实 1. 计算机的发展与普及计算机的发展与普及 2. 计算
3、机软件的发展与普及计算机软件的发展与普及 3. 计算机网络的发展与普及计算机网络的发展与普及2022-4-29国防科技大学计算机学院5观察与思考观察与思考 因为普及了计算机、软件和因为普及了计算机、软件和网络网络迎来了信息化社会和知识经济。迎来了信息化社会和知识经济。2022-4-29国防科技大学计算机学院6软件在信息化社会中的地位和作用软件在信息化社会中的地位和作用o软件与经济软件与经济o软件与政治软件与政治o软件与军事软件与军事o软件与文化软件与文化o软件与教育软件与教育o软件与法律道德软件与法律道德2022-4-29国防科技大学计算机学院7结论结论 软件是信息化社会和知识经济的基础,它渗
4、透软件是信息化社会和知识经济的基础,它渗透到人们生活、工作的所有领域,并迅速的改变着到人们生活、工作的所有领域,并迅速的改变着人们的生活和工作方式,改变着社会的产业结构人们的生活和工作方式,改变着社会的产业结构和面貌。和面貌。 人们对软件的依靠越来越密切,社会需要大量人们对软件的依靠越来越密切,社会需要大量的丰富多彩的软件,并随着社会的发展不断更新、的丰富多彩的软件,并随着社会的发展不断更新、充实和提高。充实和提高。2022-4-29国防科技大学计算机学院8教材教材2022-4-29国防科技大学计算机学院9教材和参考书教材和参考书2022-4-29国防科技大学计算机学院10第一章第一章 软件与
5、软件工程软件与软件工程o软件与软件工程的概念软件与软件工程的概念 o软件生存周期软件生存周期 o软件开发模型软件开发模型 o软件工程工具及环境软件工程工具及环境o软件工程组织度量软件工程组织度量2022-4-29国防科技大学计算机学院111.1 软件软件o软件的概念;软件的概念;o软件的特点;软件的特点;o软件的分类;软件的分类;o软件的发展;软件的发展;o软件危机。软件危机。第一章第一章 软件与软件工程软件与软件工程2022-4-29国防科技大学计算机学院121.1.1 软件的概念软件的概念 软件是什么软件是什么?1.1软件软件2022-4-29国防科技大学计算机学院13软件的概念软件的概念
6、o软件是计算机系统的重要组成部分;软件是计算机系统的重要组成部分;o软件是逻辑产品,需要计算机硬件和系统软件的软件是逻辑产品,需要计算机硬件和系统软件的支撑;支撑;o软件是计算机控制系统的指挥中枢;软件是计算机控制系统的指挥中枢;o软件是信息转换器,它能对信息进行加工、处理软件是信息转换器,它能对信息进行加工、处理或变换;或变换;o软件是工具,在人们的生活、工作、休闲,在社软件是工具,在人们的生活、工作、休闲,在社会的经济、军事、政治、文化、科学技术、教育会的经济、军事、政治、文化、科学技术、教育中发挥具大作用;中发挥具大作用;1.1软件软件2022-4-29国防科技大学计算机学院14软件软件
7、的概念的概念计算机世界的软件计算机世界的软件 软件是能够完成预定功能和性能,并对相应数据进软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。行加工的程序和描述程序及其操作的文档。 软件软件 = 程序程序+数据数据+文档文档 程序程序 = 算法算法+数据结构数据结构1.1软件软件2022-4-29国防科技大学计算机学院151.1.2 软件的特点软件的特点o软件开发与传统的产品生产存在本质差别;软件开发与传统的产品生产存在本质差别;o软件是逻辑产品,而不是物理产品;软件是逻辑产品,而不是物理产品;o软件不会磨损;软件不会磨损;1.1软件软件2022-4-29国防科技
8、大学计算机学院16 软件的描述软件的描述(13) 软件由程序、数据、文档软件由程序、数据、文档 组成。组成。 1.1软件软件2022-4-29国防科技大学计算机学院17软件的描述软件的描述(23)程序设计语言程序设计语言o面向机器面向机器 汇编语言、机器语言等汇编语言、机器语言等o面向过程面向过程 Fortran, Pascal, C等等o面向对象面向对象 C+, Java等等o面向问题面向问题 结构化查询语言结构化查询语言SQL等等1.1软件软件2022-4-29国防科技大学计算机学院18软件的描述软件的描述(33)数据数据 用程序设计语言要求的数据结构表示用程序设计语言要求的数据结构表示文
9、档文档 规范规范 准确准确 清晰清晰 简洁简洁 无歧义无歧义 自然语言自然语言 结构化英语结构化英语 图表图表 1.1软件软件2022-4-29国防科技大学计算机学院191.1.3 软件分类软件分类系统软件系统软件 实时软件实时软件 商务软件商务软件 工程和科学计算软件工程和科学计算软件 嵌入式软件嵌入式软件 人工智能软件人工智能软件 个人计算机软件个人计算机软件1.1软件软件2022-4-29国防科技大学计算机学院201.1.4 软件的发展软件的发展o软件发展的四个阶段软件发展的四个阶段o软件发展存在的问题软件发展存在的问题1.1软件软件2022-4-29国防科技大学计算机学院211)软件发
10、展的四个阶段)软件发展的四个阶段o1950-1965 没有系统的软件开发方法和管理机制、自定义软没有系统的软件开发方法和管理机制、自定义软件、批处理、有限分布。件、批处理、有限分布。o1965-1975 产生人机交互的新概念、新技术软件产品、多用产生人机交互的新概念、新技术软件产品、多用户、实时、数据库。户、实时、数据库。1.1软件软件2022-4-29国防科技大学计算机学院22o1973-1988 微处理器的出现并广泛应用微处理器的出现并广泛应用 分布式系统、嵌入智能、低成本硬件、消费分布式系统、嵌入智能、低成本硬件、消费者的影响。者的影响。o1986-2000 广域和局域网络迅速普及广域和
11、局域网络迅速普及 强大的桌面系统、面向对象技术、专家系统、强大的桌面系统、面向对象技术、专家系统、人工智能、神经网络、并行计算、网络计算机。人工智能、神经网络、并行计算、网络计算机。软件发展的四个阶段软件发展的四个阶段 (2/2)1.1软件软件2022-4-29国防科技大学计算机学院232) 软件发展存在的问题软件发展存在的问题 (1/2)o软件开发能力不能满足人们的需要。软件开发能力不能满足人们的需要。o社会对软件的依赖程度加大,人们普遍关注软件的社会对软件的依赖程度加大,人们普遍关注软件的安全和可靠性。安全和可靠性。o建造高可靠性、高质量软件的任务任重路远。建造高可靠性、高质量软件的任务任
12、重路远。1.1软件软件2022-4-29国防科技大学计算机学院24软件发展存在的问题软件发展存在的问题 (2/2)o若干年前开发的应用软件经过几十次修改已无人认若干年前开发的应用软件经过几十次修改已无人认识它的内部结构,己经不可维护。识它的内部结构,己经不可维护。o由于经济原因由于经济原因,嵌入式系统存在许多怪现象,企业不嵌入式系统存在许多怪现象,企业不愿意投入资源再生产,而采取打补丁愿意投入资源再生产,而采取打补丁+时髦界面的时髦界面的方法。方法。1.1软件软件2022-4-29国防科技大学计算机学院251.1.5 软件危机软件危机1.软件危机的表现软件危机的表现o硬件发展超过软硬件发展超过
13、软件,硬件潜能没件,硬件潜能没有充分发挥。有充分发挥。o软件产业的发展软件产业的发展长期滞后,与硬长期滞后,与硬件发展不协调。件发展不协调。1.1软件软件2022-4-29国防科技大学计算机学院26软件危机软件危机o软件开发成本过高软件开发成本过高o软件质量得不到保证软件质量得不到保证o软件开发效率低软件开发效率低o难以控制开发进度,工作量估计困难难以控制开发进度,工作量估计困难 软件不能满足社会发展的需求,成为社会、经软件不能满足社会发展的需求,成为社会、经济发展的制约因素济发展的制约因素1.1软件软件2022-4-29国防科技大学计算机学院27程序规模、工作量与成本的关系程序规模、工作量与
14、成本的关系1.1软件软件2022-4-29国防科技大学计算机学院282. 软件危机原因软件危机原因o软件的规模加大、复杂性提高、性能增强软件的规模加大、复杂性提高、性能增强o软件是逻辑产品软件是逻辑产品, 尚未完全认识其本质和特点尚未完全认识其本质和特点o缺乏有效的、系统的开发、维护大型软件项缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法目的技术手段和管理方法1.1软件软件2022-4-29国防科技大学计算机学院29软件危机原因软件危机原因o用户对软件需求的描述和软件开发人员对需求用户对软件需求的描述和软件开发人员对需求的理解往往存在差异,用户经常要求修改需求,的理解往往存在差异
15、,用户经常要求修改需求,开发人员很难适应开发人员很难适应o软件开发的技术人员和管理人员缺乏软件工程软件开发的技术人员和管理人员缺乏软件工程化的素质和要求,对工程化的开销认识不足化的素质和要求,对工程化的开销认识不足o1.1软件软件2022-4-29国防科技大学计算机学院303.软件危机仍在继续软件危机仍在继续 -影响软件质量的糊涂认识影响软件质量的糊涂认识(1/3)o在项目的初始阶段对系统若明若暗就开始写程在项目的初始阶段对系统若明若暗就开始写程序序o认为软件是灵活的容易修改,对软件需求的改认为软件是灵活的容易修改,对软件需求的改变不以为然变不以为然o程序调试成功标志着工作的结束程序调试成功标
16、志着工作的结束1.1软件软件2022-4-29国防科技大学计算机学院31软件危机仍在继续软件危机仍在继续 -影响软件质量的糊涂认识影响软件质量的糊涂认识 (2/3)o程序运行前无法评价程序的质量程序运行前无法评价程序的质量o一个软件项目给客户提交的主要是程序,而软一个软件项目给客户提交的主要是程序,而软件文档则认为可有可无、可多可少等等。件文档则认为可有可无、可多可少等等。o虽然发布了软件标准和规范,但在实践中执行虽然发布了软件标准和规范,但在实践中执行需要额外的开销,划不来需要额外的开销,划不来1.1软件软件2022-4-29国防科技大学计算机学院32软件危机仍在继续软件危机仍在继续 -影响
17、软件质量的糊涂认识影响软件质量的糊涂认识(3/3)o虽然开发了许多软件工具,但很多开发者对使虽然开发了许多软件工具,但很多开发者对使用这些工具兴趣不大用这些工具兴趣不大o为了开发软件人们不惜用重金购买最新型号的为了开发软件人们不惜用重金购买最新型号的主机和工作站而不愿意购买软件工具主机和工作站而不愿意购买软件工具o在软件开发过程中,进度迟后就增派更多的程在软件开发过程中,进度迟后就增派更多的程序员突击,赶进度序员突击,赶进度o1.1软件软件2022-4-29国防科技大学计算机学院331.2 软件工程的概念软件工程的概念 1968年年 NATO 计算机科学会议计算机科学会议 软件危机软件危机-根
18、源根源-解决途径解决途径 软件工程软件工程第一章第一章 软件与软件工程软件与软件工程2022-4-29国防科技大学计算机学院34 1.2.1. 软件工程的定义软件工程的定义 (1/3) 软件工程软件工程 Fritz Bauernau69 为了经济的获得为了经济的获得可靠的可靠的,在实际机器上,在实际机器上高效运高效运行的行的软件,而建立和使用的好的软件,而建立和使用的好的工程原则。工程原则。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院35软件工程的定义软件工程的定义 (2/3) 软件工程软件工程 教材教材o软件工程是运用工程、科学和数学的原则与方法研软件工程是运用
19、工程、科学和数学的原则与方法研制、维护计算机软件的有关技术和管理的方法。制、维护计算机软件的有关技术和管理的方法。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院36软件工程的定义软件工程的定义 (3/3) 软件工程软件工程IEE93(1)将将系统的、规范的、可度量系统的、规范的、可度量的方法应用于软件的的方法应用于软件的开发、运行和维护的过程;开发、运行和维护的过程;(2) 上述方法的研究。上述方法的研究。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院37软件工程三要素软件工程三要素 过程、方法和工具过程、方法和工具(1/5)o质量是软件
20、工程的生命线,软件工程以质量保证为质量是软件工程的生命线,软件工程以质量保证为基础。基础。o质量管理促进了过程的改进质量管理促进了过程的改进,创造了许多行之有效的创造了许多行之有效的软件开发方法和工具。软件开发方法和工具。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院38软件工程三要素软件工程三要素 过程、方法和工具过程、方法和工具(2/5)o软件工程釆用层次化的方法软件工程釆用层次化的方法,每个层次都包括过程、每个层次都包括过程、方法、工具三要素。方法、工具三要素。o方法支撑过程和工具、过程和工具促进方法学的研方法支撑过程和工具、过程和工具促进方法学的研究。究。1
21、.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院39软件工程三要素软件工程三要素 过程、方法和工具过程、方法和工具o将将系统的、规范的、可量化的系统的、规范的、可量化的方法运用到软件工程方法运用到软件工程的始终,渗透到软件工程的过程、方法和工具中。的始终,渗透到软件工程的过程、方法和工具中。1.2软件工程的概念软件工程的概念软件工程软件工程过程过程方法方法工具工具2022-4-29国防科技大学计算机学院40软件工程三要素软件工程三要素 过程、方法和工具过程、方法和工具(3/5) 软件工程的过程软件工程的过程 o过程贯穿软件开发的各个环节,各环节之过程贯穿软件开发的各个环
22、节,各环节之 间建立间建立里程碑;里程碑;o管理者在软件工程过程中对软件开发的管理者在软件工程过程中对软件开发的质量、进度、质量、进度、成本成本进行评估、管理和控制;进行评估、管理和控制;o技术人员采用相应的方法和工具生成软件工程产品技术人员采用相应的方法和工具生成软件工程产品(模型、文档、数据、报告、表格等)。(模型、文档、数据、报告、表格等)。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院41软件工程三要素软件工程三要素 过程、方法和工具过程、方法和工具(4/5) 软件工程的方法软件工程的方法o软件工程方法是完成软件工程项目的技术手段。它软件工程方法是完成软件工
23、程项目的技术手段。它支持项目计划和估算、系统和软件需求分析、设计、支持项目计划和估算、系统和软件需求分析、设计、编程、测试和维护。编程、测试和维护。o软件工程方法依赖一组原则,它贯穿软件工程的各软件工程方法依赖一组原则,它贯穿软件工程的各个环节。个环节。o软件工程方法分两类:传统方法和面向对象方法软件工程方法分两类:传统方法和面向对象方法1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院42软件工程三要素软件工程三要素 过程、方法和工具过程、方法和工具 (5/5) 软件工程工具软件工程工具o它为软件工程的过程和方法提供自动化或半自动它为软件工程的过程和方法提供自动化或半
24、自动化的工具支持。化的工具支持。o将若干工具集成起来,与软件工程数据库和计算将若干工具集成起来,与软件工程数据库和计算机系统构成一个支持软件开发的系统称机系统构成一个支持软件开发的系统称“计算机计算机辅助软件工程辅助软件工程(CASE)”,系统中某一工具的信息,系统中某一工具的信息加工结果可以作为另一工具的输入。加工结果可以作为另一工具的输入。o集成的软件工程工具再加上人的因素构成了软件集成的软件工程工具再加上人的因素构成了软件工程环境。工程环境。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院43软件开发方法和软件工具软件开发方法和软件工具o结构化分析方法结构化分析
25、方法o结构化程序设计语言结构化程序设计语言o面向对象分折方法面向对象分折方法o面向对象程序设计语言面向对象程序设计语言1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院443. 软件和软件开发过程软件和软件开发过程o软件过程和软件产品密切相关。软件过程和软件产品密切相关。o大型软件项目没有良好的软件开发过程,不可能建大型软件项目没有良好的软件开发过程,不可能建造出用户满意的优质产品;反之,一个好的软件产造出用户满意的优质产品;反之,一个好的软件产品隐含着良好的软件开发过程。品隐含着良好的软件开发过程。o计算机软件领域产品和过程不断交替创新,促进软计算机软件领域产品和过程
26、不断交替创新,促进软件工程的进步和发展。件工程的进步和发展。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院451.2.2 软件工程目标软件工程目标 (1/6) 在给定成本、进度的前提下,开发出具有在给定成本、进度的前提下,开发出具有 可修改性、可修改性、 有效性有效性 、 可靠性、可靠性、 可适应性、可适应性、 可追踪性可追踪性 、 可移植性、可移植性、 可互操作性可互操作性 并满足用户需求的软件产品。并满足用户需求的软件产品。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院46软件工程目标软件工程目标 (2/6)o有效性有效性 能有效地利
27、用计算机的时间和空间资源能有效地利用计算机的时间和空间资源o可修改性可修改性 容许对系统进行修改而不增加原系统的容许对系统进行修改而不增加原系统的复杂性,它支持软件的调试与维护。复杂性,它支持软件的调试与维护。 1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院47软件工程目标软件工程目标 (3/6)o可靠性可靠性 具有能够防止因概念、设计和结构等方面的不完具有能够防止因概念、设计和结构等方面的不完善而造成的系统失效,具有挽回因操作不当造成软善而造成的系统失效,具有挽回因操作不当造成软件系统失效的能力件系统失效的能力 o可理解性可理解性 系统具有清晰的结构,能直接反映软
28、件系统具有清晰的结构,能直接反映软件 需求。需求。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院48 软件工程目标软件工程目标 (4/6)o可维护性可维护性 便于对软件增加新功能、改进性能、修便于对软件增加新功能、改进性能、修改错误、移植改错误、移植 o可重用性可重用性 软件易于被再次使用软件易于被再次使用1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院49软件工程目标软件工程目标 (5/6)o可适应性可适应性 采用流行的程序设计语言、运行环境、标准的采用流行的程序设计语言、运行环境、标准的术语和格式。术语和格式。o可追踪性可追踪性 对软件
29、进行正向和反向追踪的能力对软件进行正向和反向追踪的能力 1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院50软件工程目标软件工程目标 (6/6)o可移植性可移植性 从一个环境搬迁到另一个环境从一个环境搬迁到另一个环境 o可互操作性可互操作性 多个软件要素相互通讯协同完成任务的多个软件要素相互通讯协同完成任务的能力能力 1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院511.2.3 软件工程原则软件工程原则 (1/6) 在软件开发过程中,为了达到软件开发目标,必在软件开发过程中,为了达到软件开发目标,必须遵循下列原则:须遵循下列原则: 抽象抽象
30、 模块化模块化 信息隐藏信息隐藏 局部化局部化 一致性一致性 完全性完全性 可验证性可验证性1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院52软件工程原则软件工程原则 (2/6)o抽象抽象n关注关注事物基本、重要的部分,忽略不相关事物基本、重要的部分,忽略不相关成分成分 n抽象可以使我们的思维聚焦于问题本质,抽象可以使我们的思维聚焦于问题本质,从而简化问题,控制问题复杂度,支持复从而简化问题,控制问题复杂度,支持复杂、庞大软件系统的开发杂、庞大软件系统的开发 。1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院53 软件工程原则软件工程原则
31、(3/6)o模块化模块化n模块是程序中一个逻辑上相对独立、具有模块是程序中一个逻辑上相对独立、具有良好的接口定义的编程单位:过程、函数、良好的接口定义的编程单位:过程、函数、类、程序包等类、程序包等 n模块化是模块化是, ,将复杂的系统分解为一个个相将复杂的系统分解为一个个相对独立的模块来加以实现,有助于抽象和对独立的模块来加以实现,有助于抽象和信息隐藏以及表示复杂的系统信息隐藏以及表示复杂的系统 1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院54 软件工程原则软件工程原则 (4/6)o信息隐藏信息隐藏n模块中的软件设计决策信息封装起来的技模块中的软件设计决策信息封
32、装起来的技术,只知道它的功能以及对外的接口,而术,只知道它的功能以及对外的接口,而不知它的内部细节不知它的内部细节 有助于软件开发人员的注意力集中于更高有助于软件开发人员的注意力集中于更高 的抽的抽象层次象层次 1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院55 软件工程原则软件工程原则 (5/6)o局部化局部化n物理模块内集中逻辑上相互关联的计算资物理模块内集中逻辑上相互关联的计算资源源 n确保模块内各成分关系密切而模快之间的确保模块内各成分关系密切而模快之间的关系松散,保证模块具有良好的独立性关系松散,保证模块具有良好的独立性 1.2软件工程的概念软件工程的概念
33、2022-4-29国防科技大学计算机学院56软件工程原则软件工程原则 (6/6)o一致性一致性 整个软件系统均使用统一的符号、概念和术语整个软件系统均使用统一的符号、概念和术语o完全性完全性 整个软件系统不丢失任何重要的成分,软件完全整个软件系统不丢失任何重要的成分,软件完全实现系统所需的功能、行为和性能实现系统所需的功能、行为和性能o可验证性可验证性 软件系统应易于检查、测试和评审软件系统应易于检查、测试和评审1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院57软件开发目标软件开发目标 在给定成本、进度和满足用户需求的前提下,开在给定成本、进度和满足用户需求的前提下
34、,开发的软件产品应具有发的软件产品应具有 可修改性可修改性 有效性有效性 可靠性可靠性 适应性适应性 可追踪性可追踪性 可移植性可移植性 可互操作性可互操作性1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院58软件开发原则软件开发原则 在软件开发过程中,为了达到软件开发目标,在软件开发过程中,为了达到软件开发目标,必须遵循下列原则:必须遵循下列原则: 抽象抽象 模块化模块化 信息隐藏信息隐藏 局部化局部化 一致性一致性 完全性完全性 可验证性可验证性1.2软件工程的概念软件工程的概念2022-4-29国防科技大学计算机学院591.3 软件生存周期软件生存周期o软件产品
35、从形成概念开始,经过开发、运行(使软件产品从形成概念开始,经过开发、运行(使用)和维护直到退役的全过程称为软件生存周期,用)和维护直到退役的全过程称为软件生存周期,包括软件定义、开发、使用和维护三部分。包括软件定义、开发、使用和维护三部分。o软件工程的目标和原则贯穿整个软件生存周期。软件工程的目标和原则贯穿整个软件生存周期。第一章第一章 软件与软件工程软件与软件工程2022-4-29国防科技大学计算机学院60 软件的定义和开发过程软件的定义和开发过程o问题定义问题定义 可行性研究可行性研究 需求分析需求分析o软件开发软件开发 概要设计概要设计 详细设计详细设计 实现实现 组装测试组装测试 确认
36、测试确认测试可行性研究可行性研究需求分析需求分析概要设计概要设计详细设计详细设计实现实现组装测试组装测试确认测试确认测试1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院611.3.1 问题定义问题定义 1.可行性研究可行性研究任务任务 了解用户要求和现实环境了解用户要求和现实环境 从技术、经济、市场等方面研究并论证开发该软从技术、经济、市场等方面研究并论证开发该软件系统的可行性件系统的可行性1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院62可行性研究可行性研究 (2/3)o技术可行性技术可行性 当前的软件开发方法和工具能否支持需求的实现;当前的软件
37、开发方法和工具能否支持需求的实现;o操作可行性操作可行性 用户能否在特定的环境下使用这个软件;用户能否在特定的环境下使用这个软件;o经济可行性经济可行性 开发和使用、维护这个软件的成本能否被用户所接开发和使用、维护这个软件的成本能否被用户所接受。受。1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院63 可行性研究可行性研究 (3/3) 阶段性产品阶段性产品n可行性论证报告可行性论证报告n制定初步项目开发计划制定初步项目开发计划 (人员人员,进度进度)1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院64问题定义问题定义2. 需求分析需求分析任务任务确定
38、用户对软件系统的需求:确定用户对软件系统的需求:n功能需求功能需求 软件必须要完成的功能;软件必须要完成的功能;n性能需求性能需求 软件的安全性、可靠性、可维护性、精度、错软件的安全性、可靠性、可维护性、精度、错误处理、适应性、用户培训等;误处理、适应性、用户培训等;n运行环境约束运行环境约束 待开发的软件产品必须满足的环境要求待开发的软件产品必须满足的环境要求1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院65需求分析需求分析 (2/4)o重要性重要性软件开发的依据,软件验收的标准软件开发的依据,软件验收的标准o困难困难难以说清、难以说清、 动态变化、动态变化、 歧义、
39、复杂、歧义、复杂、 应用软件的需求分析涉及应用领域的知应用软件的需求分析涉及应用领域的知识和经验。识和经验。1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院66 需求分析需求分析 (3/4)o需求分析过程需求分析过程n需求分析人员必须与用户不断、反复地交流和需求分析人员必须与用户不断、反复地交流和商讨,使用户需求逐步准确、一致、完全。商讨,使用户需求逐步准确、一致、完全。n方法方法 面向数据流的分析方法面向数据流的分析方法 面向数据流的分析方法面向数据流的分析方法 面向对象的分析方法面向对象的分析方法抽象、问题分解、快速原型、多视点等抽象、问题分解、快速原型、多视点等n工
40、具工具 Rational Rose, WitClass, VisualModel1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院67 需求分析需求分析 (4/4)o阶段性产品阶段性产品n软件需求规格说明书软件需求规格说明书SRS 用软件需求规格说明语言描述软件系统的功用软件需求规格说明语言描述软件系统的功能需求、性能需求、接口需求、设计需求、软能需求、性能需求、接口需求、设计需求、软件产品的基本结构、采用的开发标准和验收原件产品的基本结构、采用的开发标准和验收原则等。则等。n用户手册概要。用户手册概要。1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院
41、681.3.2 软件开发软件开发1. 概要设计概要设计o任务任务 根据根据SRS建立目标软件系统的总体结构、设计建立目标软件系统的总体结构、设计全局数据库和数据结构,规定设计约束,制定组装全局数据库和数据结构,规定设计约束,制定组装测试计划等等。测试计划等等。1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院69 概要设计概要设计 (2/3)方法方法o根据软件需求规格说明书,根据软件需求规格说明书, 自顶向下、逐步求精、自顶向下、逐步求精、 抽象、抽象、 模块化、模块化、 局部化、信息隐藏局部化、信息隐藏 o坚持功能模块内部紧耦合,功能模块之间松耦合的坚持功能模块内部紧耦合
42、,功能模块之间松耦合的原则;原则;o坚持与需求规格说明书的一致性坚持与需求规格说明书的一致性 1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院70概要设计概要设计 (3/3)o工具工具 面向数据流的设计方法面向数据流的设计方法 结构图结构图 面向数据流的设计方法面向数据流的设计方法 面向对象的设计方法面向对象的设计方法 Rational Roseo阶段性产品阶段性产品 概要设计规格说明书概要设计规格说明书 数据库或数据结构数据库或数据结构设计设计说明书说明书 集成测试计划。集成测试计划。1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院712.详细设计
43、详细设计o任务任务 细化概要设计所生成的各个模块细化概要设计所生成的各个模块, , 并详细描述程并详细描述程序模块的内部细节序模块的内部细节( (算法,数据结构等算法,数据结构等) ),形成,形成可编程的程序模块,制订单元测试计划可编程的程序模块,制订单元测试计划o阶段新产品阶段新产品 详细设计规格说明书详细设计规格说明书, 单元测试计划单元测试计划1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院723. 实现实现o任务任务 根据详细设计规格说明书编写源程序,并对根据详细设计规格说明书编写源程序,并对程序进行调试、单元测试、系统集成,验证程程序进行调试、单元测试、系统集成
44、,验证程序与详细设计文档的序与详细设计文档的 一致性一致性1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院73 实现实现 (2/2)o方法方法o以详细设计规格说明书为依据、基于某种程序设计以详细设计规格说明书为依据、基于某种程序设计语言进行编码语言进行编码 结构化程序设计结构化程序设计 面向对象程序设计面向对象程序设计o工具工具nVisual C+, Visual Java, etc IDEo阶段产品阶段产品n源程序代码源程序代码1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院74 4. 组装测试组装测试任务任务 o组装测试应满足概要设计的要求。组装
45、测试应满足概要设计的要求。途径途径o测试模块连接的正确性;测试模块连接的正确性;o测试系统或子系统的测试系统或子系统的I/O;o测试系统的功能和性能。测试系统的功能和性能。产品产品o满足概要设计要求的程序、组装测试报告。满足概要设计要求的程序、组装测试报告。1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院755. 确认测试确认测试 任务任务 根据软件需求规格说明书,测试软件系统是否根据软件需求规格说明书,测试软件系统是否满足用户的需求满足用户的需求 方法方法 用户参与,以软件需求规格说明书为依据进行用户参与,以软件需求规格说明书为依据进行确认测试确认测试工具工具 专用测试
46、工具专用测试工具 阶段性产品阶段性产品 可供用户使用的软件产品可供用户使用的软件产品(文档,源程序文档,源程序)1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院761.3.3 软件的使用、维护和退役软件的使用、维护和退役软件的使用软件的使用o确认测试后的软件安装在用户环境中;确认测试后的软件安装在用户环境中;o测试通过后移交用户使用;测试通过后移交用户使用;o尽量扩大软件发行量发挥更大的社会和经济效益;尽量扩大软件发行量发挥更大的社会和经济效益;o软件使用过程中用户要认真收集软件错误,并撰写软软件使用过程中用户要认真收集软件错误,并撰写软件问题报告和软件维护报告件问题报告
47、和软件维护报告1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院77软件的使用、维护和退役软件的使用、维护和退役软件的维护软件的维护 软件工作环境不断变化,软件也必然跟着变化,软软件工作环境不断变化,软件也必然跟着变化,软件必须不断进化以满足客户的需求变化,这是软件件必须不断进化以满足客户的需求变化,这是软件产品最根本的特性。产品最根本的特性。 软件维护占用软件开发软件维护占用软件开发60%以上的工作量。以上的工作量。o正确性维护;正确性维护;o扩充性维护;扩充性维护;o适应性维护。适应性维护。 软件产品的新版本软件产品的新版本 1.3软件生存周期软件生存周期2022-4-
48、29国防科技大学计算机学院78软件的使用、维护和退役软件的使用、维护和退役软件的退役软件的退役o终止软件运行。终止软件运行。1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院79软件定义开发与测试的关系软件定义开发与测试的关系1.3软件生存周期软件生存周期2022-4-29国防科技大学计算机学院801.4 软件开发模型软件开发模型o软件开发模型是软件开发全过程、软件开发活动以软件开发模型是软件开发全过程、软件开发活动以及它们之间关系的的结构框架及它们之间关系的的结构框架o软件项目的管理提供里程碑和进度表软件项目的管理提供里程碑和进度表o为软件开发提供原则和方法为软件开发提供
49、原则和方法第一章第一章 软件与软件工程软件与软件工程2022-4-29国防科技大学计算机学院81 软件开发模型软件开发模型三类软件开发模型三类软件开发模型1. 以软件需求完全确定为前提的以软件需求完全确定为前提的瀑布模型瀑布模型2. 在软件开发初期只能提供基本需求所采用的渐进式在软件开发初期只能提供基本需求所采用的渐进式开发模型如开发模型如原型模型、螺旋模型原型模型、螺旋模型3. 以形式化开发方法为基础的以形式化开发方法为基础的变换模型变换模型1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院821.4.1 瀑布模型瀑布模型 (1/4) 主要思想主要思想n软件开发过程与软件
50、生命周期是一致的软件开发过程与软件生命周期是一致的n相邻二阶段之间存在因果关系相邻二阶段之间存在因果关系n需对阶段性产品进行评审需对阶段性产品进行评审1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院83瀑布模型瀑布模型 (2/4)1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院84瀑布模型的优点瀑布模型的优点(34)o软件生命周期模软件生命周期模型型,使软件开发过程可以在分析、使软件开发过程可以在分析、设计、编码、测试和维护的框架下进行;设计、编码、测试和维护的框架下进行;o软件开发过程具有系统性、可控性,克服了软件开软件开发过程具有系统性、可控性,
51、克服了软件开发的随意性发的随意性 。1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院85瀑布模型的缺点瀑布模型的缺点(44) o项目开始阶段用户很难精确的提出产品需求,由项目开始阶段用户很难精确的提出产品需求,由于技术进步,用户对系统深入的理解,修改需求于技术进步,用户对系统深入的理解,修改需求十分普遍。十分普遍。o项目开发晚期才能得到程序的运行版本,这时修项目开发晚期才能得到程序的运行版本,这时修改软件需求和开发中的错误代价很大。改软件需求和开发中的错误代价很大。o采用线性模型组织项目开发经常发生开发小组人采用线性模型组织项目开发经常发生开发小组人员员“堵塞状态堵塞状态
52、”,特别是项目的开始和结束。,特别是项目的开始和结束。1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院861.4.2 快速原型模型快速原型模型o用户用户/客户给出软件产品的一般需求客户给出软件产品的一般需求o开发小组和用户共同定义软件总体目标,标识已知开发小组和用户共同定义软件总体目标,标识已知需求需求o对界面、功能、人机交互方式等,进行设计并建造对界面、功能、人机交互方式等,进行设计并建造原型原型1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院87快速原型模型快速原型模型o强调强调“快速快速”,釆用基于构件的软件开发方法,釆用基于构件的软件开发方法
53、,尽尽量缩短软件开发周期量缩短软件开发周期,不宜釆用过多的新技术不宜釆用过多的新技术o用户用户/客户对原型进行评估客户对原型进行评估o修改需求、更新设计、完善原型直至确定需求。修改需求、更新设计、完善原型直至确定需求。1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院88原型模型示意图原型模型示意图 初初 步步 需需 求求分分 析析 快快 速速 设设 计计 建建 造造 原原 型型 用用 户户 评评 估估 原原型型( 新新 需需 求求 ) 对对 原原 型型 加加 工工 开开 发发 产产 品品 开开 始始 结结 束束 1.4软件开发模型软件开发模型2022-4-29国防科技大学
54、计算机学院89RAD模型的开发过程模型的开发过程(13)o业务建模业务建模 按照下列问题建立业务功按照下列问题建立业务功能的信息流模型:什么信能的信息流模型:什么信息驱动业务流程息驱动业务流程? ?生成什么生成什么信息信息? ?谁生成该信息谁生成该信息? ?该信该信息流往何处息流往何处? ?谁处理它谁处理它? ?o数据建模数据建模 精化信息流,形成一组支精化信息流,形成一组支持该业务所需的数据对象。持该业务所需的数据对象。标识出每个对象的特征标识出每个对象的特征( (称称为属性为属性) ),并定义这些对象,并定义这些对象间的关系。间的关系。业务建模业务建模数据建模数据建模过程建模过程建模应用生
55、成应用生成测试修正测试修正1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院90RAD模型的开发过程模型的开发过程(23)o过程建模过程建模 对定义的数据对象进行变对定义的数据对象进行变换,实现一个业务功能所换,实现一个业务功能所需的信息流。需的信息流。 创建过程描述以增加、修创建过程描述以增加、修改、删除或检索一个数据改、删除或检索一个数据对象。对象。业务建模业务建模数据建模数据建模过程建模过程建模应用生成应用生成测试修正测试修正1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院91RAD模型的开发过程模型的开发过程(33)o应用生成应用生成 采用第四
56、代技术创建软件、重采用第四代技术创建软件、重用已有的程序构件或创建可重用已有的程序构件或创建可重用的构件。使用自动化工具辅用的构件。使用自动化工具辅助软件建造。助软件建造。o测试修正测试修正 RAD RAD过程强调重用,许多程序过程强调重用,许多程序构件已经过测试,但所有新构构件已经过测试,但所有新构件和接口必须测试。件和接口必须测试。业务建模业务建模数据建模数据建模处理建模处理建模应用生成应用生成测试修正测试修正1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院92原型模型的优点原型模型的优点o原型模型支持软件需求开发,帮助用户和开发人员理原型模型支持软件需求开发,帮助用
57、户和开发人员理解需求,是软件需求工程的关键。解需求,是软件需求工程的关键。o它产生的正式需求文挡,是软件开发的基础。它产生的正式需求文挡,是软件开发的基础。o如果开发的原型是可运行的,它的若干高质量的程序如果开发的原型是可运行的,它的若干高质量的程序片段和开发工具可用于工作程序的开发。片段和开发工具可用于工作程序的开发。o原型的开发和评审是系统分析员和用户原型的开发和评审是系统分析员和用户/客户共同参客户共同参予的迭代过程,每个迭代循环都是线性过程。予的迭代过程,每个迭代循环都是线性过程。1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院93原型模型的原型模型的缺缺点点o对
58、于大型软件项目,对于大型软件项目,原型模型原型模型需要足够的人力资源需要足够的人力资源以建立足够的以建立足够的原型原型组。组。o原型模型原型模型要求开发者和客户在一段时间内共同完成要求开发者和客户在一段时间内共同完成原型原型系统的开发,如果任何一方没有实现承诺,会系统的开发,如果任何一方没有实现承诺,会导致导致原型原型开发的失败。开发的失败。o如果系统难以模块化,建造如果系统难以模块化,建造原型原型所需构件就有问题;所需构件就有问题;如果高性能是一个指标,如果高性能是一个指标,原型模型原型模型也可能不奏效。也可能不奏效。o原型模型原型模型不适合采用很多新技术的项目不适合采用很多新技术的项目1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院94原型模型的应用原型模型的应用o建造原型定义系统需求建造原型定义系统需求 一旦原型通过评审,达到预期目的后,应以确定一旦原型通过评审,达到预期目的后,应以确定的软件需求为目标进行软件开发,以便保证软件质的软件需求为目标进行软件开发,以便保证软件质量和可维护性;量和可维护性;o建造原型为客户提供初始的版本建造原型为客户提供初始的版本1.4软件开发模型软件开发模型2022-4-29国防科技大学计算机学院951.4.3 螺旋模型螺旋模型Boehm在在1988年提出年提出 螺旋模型螺旋模型 = 线性模型十
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 容器逃逸检测标准制定课程设计
- 编绳手工编织课程设计
- 初中完形阅读课程设计
- 搜索引擎数据清洗课程设计
- 基于SPI的Flash读写控制器在应用详解课程设计
- UWB室内定位仿真案例分析课程设计
- 基于MATLABSimulink的倒立摆参数调整课程设计
- UWB数据处理课程设计课程设计
- 保龄球游戏课程设计
- 除杂质课程设计
- 2024版防火涂料施工承包合同范本
- 小升初专项训练-诗歌鉴赏课件(完美版)
- 《无人机组装、调试与维护》课程标准(高职)
- 临床营养科管理制度汇编
- 小班数学《拼一拼-数一数》
- 乡镇街道安全生产监管实务
- 大学语文(第三版)教案 孔子论孝
- 初三开学第一课主题班会ppt
- (完整版)支气管哮喘入院记录首次病程记录及出院记录
- 教师口语表达训练
- 学校三年一体化教学管理方案
评论
0/150
提交评论