版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程,主讲:岑宇森 Email:,前言,软件和软件工程在信息化社会中的地位和作用,软件是信息化社会和知识经济的基础,它渗透到人们生活、工作的所有领域,并迅速的改变着人们的生活和工作方式,改变着社会的产业结构和面貌。 人们对软件的依靠越来越密切,社会需要大量的丰富多彩的软件,并随着社会的发展不断更新、充实和提高。,第一章 软件与软件工程,软件与软件工程的概念 软件生存周期 软件开发模型 软件工程工具及环境 软件工程组织度量,1.1 软件,软件的概念; 软件的特点; 软件的分类; 软件的发展; 软件危机。,第一章 软件与软件工程,1.1.1 软件的概念,软件是什么?,1.1软件,软件的概念,计
2、算机世界的软件 软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。 软件 = 程序+数据+文档 程序 = 算法+数据结构,1.1软件,1.1.2 软件的特点,软件开发与传统的产品生产存在本质差别; 软件是逻辑产品,而不是物理产品; 软件不会磨损;,1.1软件,软件的描述(13),软件由程序、数据、文档 组成。,1.1软件,软件的描述(23),程序设计语言 面向机器 汇编语言、机器语言等 面向过程 Fortran, Pascal, C等 面向对象 C+, Java等 面向问题 结构化查询语言SQL等,1.1软件,软件的描述(33),数据 用程序设计语言要求的数据结
3、构表示 文档 规范 准确 清晰 简洁 无歧义 自然语言 结构化英语 图表,1.1软件,1.1.3 软件分类,系统软件 实时软件 嵌入式软件 科学和工程计算软件 事务处理软件 人工智能软件 个人计算机软件 CASE工具软件,1.1软件,1.1.4 软件的发展,软件发展的四个阶段 软件发展存在的问题,1.1软件,1)软件发展的四个阶段,1950-1965 没有系统的软件开发方法和管理机制、自定义软件、批处理、有限分布。 1965-1975 产生人机交互的新概念、新技术软件产品、多用户、实时、数据库。,1.1软件,1973-1988 微处理器的出现并广泛应用 分布式系统、嵌入智能、低成本硬件。 19
4、86至今 广域和局域网络迅速普及 强大的桌面系统、面向对象技术、专家系统、人工智能、神经网络、并行计算、网络计算机。,软件发展的四个阶段 (2/2),1.1软件,2) 软件发展存在的问题 (1/2),软件开发能力不能满足人们的需要。 社会对软件的依赖程度加大,人们普遍关注软件的安全和可靠性。 建造高可靠性、高质量软件的任务任重路远。,1.1软件,软件发展存在的问题 (2/2),若干年前开发的应用软件经过几十次修改已无人认识它的内部结构,己经不可维护。 由于经济原因,嵌入式系统存在许多怪现象,企业不愿意投入资源再生产,而采取打补丁+时髦界面的方法。,1.1软件,1.1.5 软件危机,1.软件危机
5、的表现 硬件发展超过软件,硬件潜能没有充分发挥。 软件产业的发展长期滞后,与硬件发展不协调。,1.1软件,软件危机,软件开发成本过高 软件质量得不到保证 软件开发效率低 难以控制开发进度,工作量估计困难 软件不能满足社会发展的需求,成为社会、经济发展的制约因素,1.1软件,2. 软件危机原因,软件的规模加大、复杂性提高、性能增强 软件是逻辑产品, 尚未完全认识其本质和特点 缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法,1.1软件,软件危机原因,用户对软件需求的描述和软件开发人员对需求的理解往往存在差异,用户经常要求修改需求,开发人员很难适应 软件开发的技术人员和管理人员缺乏软件
6、工程化的素质和要求,对工程化的开销认识不足 ,1.1软件,3.软件危机仍在继续 -影响软件质量的糊涂认识(1/3),在项目的初始阶段对系统若明若暗就开始写程序 认为软件是灵活的容易修改,对软件需求的改变不以为然 程序调试成功标志着工作的结束,1.1软件,软件危机仍在继续 -影响软件质量的糊涂认识 (2/3),程序运行前无法评价程序的质量 一个软件项目给客户提交的主要是程序,而软件文档则认为可有可无、可多可少等等。 虽然发布了软件标准和规范,但在实践中执行需要额外的开销,划不来,1.1软件,软件危机仍在继续 -影响软件质量的糊涂认识(3/3),虽然开发了许多软件工具,但很多开发者对使用这些工具兴
7、趣不大 为了开发软件人们不惜用重金购买最新型号的主机和工作站而不愿意购买软件工具 在软件开发过程中,进度滞后,就增派更多的程序员突击,赶进度 ,1.1软件,1.2 软件工程的概念,1968年 NATO 计算机科学会议 软件危机-根源-解决途径 软件工程,第一章 软件与软件工程,软件工程的定义 (3/3),将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程及对上述方法的研究。,1.2软件工程的概念,软件工程三要素 过程、方法和工具(1/5),质量是软件工程的生命线,软件工程以质量保证为基础。 质量管理促进了过程的改进,创造了许多行之有效的软件开发方法和工具。,1.2软件工程的概念,
8、软件工程三要素 过程、方法和工具(2/5),软件工程釆用层次化的方法,每个层次都包括过程、方法、工具三要素。 方法支撑过程和工具;过程和工具促进方法学的研究。,1.2软件工程的概念,软件工程三要素 过程、方法和工具,将系统的、规范的、可量化的方法运用到软件工程的始终,渗透到软件工程的过程、方法和工具中。,1.2软件工程的概念,软件工程,过程,方法,工具,软件工程三要素 过程、方法和工具(3/5),软件工程的过程 过程贯穿软件开发的各个环节,各环节之 间建立里程碑; 管理者在软件工程过程中对软件开发的质量、进度、成本进行评估、管理和控制; 技术人员采用相应的方法和工具生成软件工程产品(模型、文档
9、、数据、报告、表格等)。,1.2软件工程的概念,软件工程三要素 过程、方法和工具(4/5),软件工程的方法 软件工程方法是完成软件工程项目的技术手段。它支持项目计划和估算、系统和软件需求分析、设计、编程、测试和维护。 软件工程方法依赖一组原则,它贯穿软件工程的各个环节。 软件工程方法分两类:传统方法和面向对象方法,1.2软件工程的概念,软件工程三要素 过程、方法和工具 (5/5),软件工程工具 它为软件工程的过程和方法提供自动化或半自动化的工具支持。 将若干工具集成起来,与软件工程数据库和计算机系统构成一个支持软件开发的系统称“计算机辅助软件工程(CASE)”,系统中某一工具的信息加工结果可以
10、作为另一工具的输入。 集成的软件工程工具再加上人的因素构成了软件工程环境。,1.2软件工程的概念,软件开发方法和软件工具,结构化分析方法 结构化程序设计语言 面向对象分折方法 面向对象程序设计语言,1.2软件工程的概念,3. 软件和软件开发过程,软件过程和软件产品密切相关。 大型软件项目没有良好的软件开发过程,不可能建造出用户满意的优质产品;反之,一个好的软件产品隐含着良好的软件开发过程。 计算机软件领域产品和过程不断交替创新,促进软件工程的进步和发展。,1.2软件工程的概念,1.2.2 软件工程目标 (1/6),在给定成本、进度的前提下,开发出具有 可修改性、 有效性 、 可靠性、 可适应性
11、、 可追踪性 、 可移植性、 可互操作性 并满足用户需求的软件产品。,1.2软件工程的概念,软件工程目标 (2/6),有效性 能有效地利用计算机的时间和空间资源 可修改性 容许对系统进行修改而不增加原系统的复杂性,它支持软件的调试与维护。,1.2软件工程的概念,软件工程目标 (3/6),可靠性 具有能够防止因概念、设计和结构等方面的不完善而造成的系统失效,具有挽回因操作不当造成软件系统失效的能力 可理解性 系统具有清晰的结构,能直接反映软件需求。,1.2软件工程的概念,软件工程目标 (4/6),可维护性 便于对软件增加新功能、改进性能、修改错误、移植 可重用性 软件易于被再次使用,1.2软件工
12、程的概念,软件工程目标 (5/6),可适应性 采用流行的程序设计语言、运行环境、标准的术语和格式。 可追踪性 对软件进行正向和反向追踪的能力。,1.2软件工程的概念,软件工程目标 (6/6),可移植性 从一个环境搬迁到另一个环境 可互操作性 多个软件要素相互通讯协同完成任务的能力。,1.2软件工程的概念,1.2.3 软件工程原则 (1/6),在软件开发过程中,为了达到软件开发目标,必须遵循下列原则: 抽象 模块化 信息隐藏 局部化 一致性 完全性 可验证性,1.2软件工程的概念,软件工程原则 (2/6),抽象 关注事物基本、重要的部分,忽略不相关成分 抽象可以使我们的思维聚焦于问题本质,从而简
13、化问题,控制问题复杂度,支持复杂、庞大软件系统的开发 。,1.2软件工程的概念,软件工程原则 (3/6),模块化 模块是程序中一个逻辑上相对独立、具有良好的接口定义的编程单位:过程、函数、类、程序包等 模块化是,将复杂的系统分解为一个个相对独立的模块来加以实现,有助于抽象和信息隐藏以及表示复杂的系统,1.2软件工程的概念,软件工程原则 (4/6),信息隐藏 模块中的软件设计决策信息封装起来的技术,只知道它的功能以及对外的接口,而不知它的内部细节 有助于软件开发人员的注意力集中于更高 的抽象层次,1.2软件工程的概念,软件工程原则 (5/6),局部化 物理模块内集中逻辑上相互关联的计算资源 确保
14、模块内各成分关系密切而模快之间的关系松散,保证模块具有良好的独立性。(高内聚低耦合),1.2软件工程的概念,软件工程原则 (6/6),一致性 整个软件系统均使用统一的符号、概念和术语 完全性 整个软件系统不丢失任何重要的成分,软件完全实现系统所需的功能、行为和性能 可验证性 软件系统应易于检查、测试和评审,1.2软件工程的概念,1.3 软件生存周期,软件产品从形成概念开始,经过开发、运行(使用)和维护直到退役的全过程称为软件生存周期,包括软件定义、开发、使用和维护三部分。 软件工程的目标和原则贯穿整个软件生存周期。,第一章 软件与软件工程,软件的定义和开发过程,问题定义 可行性研究 需求分析
15、软件开发 概要设计 详细设计 实现 组装测试 确认测试,可行性研究,需求分析,概要设计,详细设计,实现,组装测试,确认测试,1.3软件生存周期,1.3.1 问题定义,1.可行性研究 任务 了解用户要求和现实环境 从技术、经济、市场等方面研究并论证开发该软件系统的可行性,1.3软件生存周期,可行性研究 (2/3),技术可行性 当前的软件开发方法和工具能否支持需求的实现; 操作可行性 用户能否在特定的环境下使用这个软件; 经济可行性 开发和使用、维护这个软件的成本能否被用户所接受。,1.3软件生存周期,可行性研究 (3/3),阶段性产品 可行性论证报告 制定初步项目开发计划 (人员,进度),1.3
16、软件生存周期,问题定义,2. 需求分析 任务 确定用户对软件系统的需求: 功能需求 软件必须要完成的功能; 性能需求 软件的安全性、可靠性、可维护性、精度、错误处理、适应性、用户培训等; 运行环境约束 待开发的软件产品必须满足的环境要求,1.3软件生存周期,需求分析 (2/4),重要性 软件开发的依据,软件验收的标准 困难 难以说清、 动态变化、 歧义、复杂、 应用软件的需求分析涉及应用领域的知 识和经验。,1.3软件生存周期,需求分析 (3/4),需求分析过程 需求分析人员必须与用户不断、反复地交流和商讨,使用户需求逐步准确、一致、完全。 方法 面向数据流的分析方法 面向数据流的分析方法 面
17、向对象的分析方法 抽象、问题分解、快速原型等 工具 Rational Rose, WitClass, VisualModel,1.3软件生存周期,需求分析 (4/4),阶段性产品 软件需求规格说明书SRS 用软件需求规格说明语言描述软件系统的功能需求、性能需求、接口需求、设计需求、软件产品的基本结构、采用的开发标准和验收原则等。 用户手册概要。,1.3软件生存周期,1.3.2 软件开发,1. 概要设计 任务 根据SRS建立目标软件系统的总体结构、设计全局数据库和数据结构,规定设计约束,制定组装测试计划等等。,1.3软件生存周期,概要设计 (2/3),方法 根据软件需求规格说明书, 自顶向下、逐
18、步求精、 抽象、 模块化、 局部化、信息隐藏 坚持功能模块内部紧耦合,功能模块之间松耦合的原则(高内聚低耦合); 坚持与需求规格说明书的一致性;,1.3软件生存周期,概要设计 (3/3),工具 面向数据流的设计方法 结构图 面向数据流的设计方法 面向对象的设计方法 Rational Rose 阶段性产品 概要设计规格说明书 数据库或数据结构设计说明书 集成测试计划。,1.3软件生存周期,2.详细设计,任务 细化概要设计所生成的各个模块, 并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计划 阶段新产品 详细设计规格说明书, 单元测试计划,1.3软件生存周期,
19、3. 实现,任务 根据详细设计规格说明书编写源程序,并对程序进行调试、单元测试、系统集成,验证程序与详细设计文档的 一致性,1.3软件生存周期,实现 (2/2),方法 以详细设计规格说明书为依据、基于某种程序设计语言进行编码 结构化程序设计 面向对象程序设计 工具 Visual C+, Visual Java, etc IDE 阶段产品 源程序代码,1.3软件生存周期,4. 组装测试,任务 组装测试应满足概要设计的要求。 途径 测试模块连接的正确性; 测试系统或子系统的I/O; 测试系统的功能和性能。 产品 满足概要设计要求的程序、组装测试报告。,1.3软件生存周期,5. 确认测试,任务 根据
20、软件需求规格说明书,测试软件系统是否满足用户的需求 方法 用户参与,以软件需求规格说明书为依据进行确认测试 工具 专用测试工具 阶段性产品 可供用户使用的软件产品(文档,源程序),1.3软件生存周期,1.3.3 软件的使用、维护和退役,软件的使用 确认测试后的软件安装在用户环境中; 测试通过后移交用户使用; 尽量扩大软件发行量发挥更大的社会和经济效益; 软件使用过程中用户要认真收集软件错误,并撰写软件问题报告和软件维护报告,1.3软件生存周期,软件的使用、维护和退役,软件的维护 软件工作环境不断变化,软件也必然跟着变化,软件必须不断进化以满足客户的需求变化,这是软件产品最根本的特性。 软件维护
21、占用软件开发60%以上的工作量。 正确性维护; 扩充性维护; 适应性维护。 软件产品的新版本,1.3软件生存周期,软件的使用、维护和退役,软件的退役 终止软件运行。,1.3软件生存周期,软件定义开发与测试的关系,1.3软件生存周期,1.4 软件开发模型,软件开发模型是软件开发全过程、软件开发活动以及它们之间关系的的结构框架 为软件项目的管理提供里程碑和进度表 为软件开发提供原则和方法,第一章 软件与软件工程,软件开发模型,三类软件开发模型: 1. 以软件需求完全确定为前提的瀑布模型 2. 在软件开发初期只能提供基本需求所采用的渐进式开发模型如原型模型、螺旋模型 3. 以形式化开发方法为基础的变
22、换模型,1.4软件开发模型,1.4.1 瀑布模型 (1/4),主要思想 软件开发过程与软件生命周期是一致的 相邻二阶段之间存在因果关系 需对阶段性产品进行评审,1.4软件开发模型,瀑布模型 (2/4),1.4软件开发模型,瀑布模型的优点(34),软件生命周期模型,使软件开发过程可以在分析、设计、编码、测试和维护的框架下进行; 软件开发过程具有系统性、可控性,克服了软件开发的随意性 。,1.4软件开发模型,瀑布模型的缺点(44),项目开始阶段用户很难精确的提出产品需求,由于技术进步,用户对系统深入的理解,修改需求十分普遍。 项目开发晚期才能得到程序的运行版本,这时修改软件需求和开发中的错误代价很
23、大。 采用线性模型组织项目开发经常发生开发小组人员“堵塞状态”,特别是项目的开始和结束。,1.4软件开发模型,1.4.2 快速原型模型,用户/客户给出软件产品的一般需求 开发小组和用户共同定义软件总体目标,标识已知需求 对界面、功能、人机交互方式等,进行设计并建造原型,1.4软件开发模型,快速原型模型,强调“快速”,釆用基于构件的软件开发方法,尽量缩短软件开发周期,不宜釆用过多的新技术 用户/客户对原型进行评估 修改需求、更新设计、完善原型直至确定需求。,1.4软件开发模型,原型模型示意图,1.4软件开发模型,1.4.3 螺旋模型,螺旋模型 = 线性模型十迭代原型十系统化 螺旋模型适用于计算机软件整个生命周期,1.4软件开发模型,螺旋模型的结构软件过程的Boehm螺旋模型(1998 IEEE),1.4软件开发模型,螺旋模型的使用,软件工程项目从螺旋中心开始启动,沿
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京市东昌私募基金管理有限公司招聘3人笔试备考试题及答案解析
- 2026年河南科技职业大学单招综合素质笔试参考题库含详细答案解析
- 2026西藏日喀则吉隆县招聘大学生公益性岗位工作人员3人笔试备考试题及答案解析
- 2026广西南宁隆安县雁江镇卫生院医生招聘2人笔试备考题库及答案解析
- 2026年闽北职业技术学院高职单招职业适应性测试备考题库及答案详细解析
- 2026上海松江区中山街道大海公益服务中心招聘文员2人参考考试题库及答案解析
- 2026浙江温州市苍南县交通发展集团有限公司招聘9人笔试备考题库及答案解析
- 2026四川德阳市旌阳区城镇公益性岗位招聘27人笔试备考试题及答案解析
- 2026天津市红桥区卫生健康委所属事业单位招聘事业编制高层次人才笔试备考试题及答案解析
- 2026年青海农牧科技职业学院单招职业技能考试模拟试题含详细答案解析
- 智能网联汽车感知技术与应用 课件 项目1 智能网联汽车感知技术概述
- 低空经济在红河州乡村振兴中的实践与探索报告2025
- 港口复工复产安全培训课件
- 歌颂内蒙古的诗歌
- uom理论考试题库及答案2025
- 2025年文字排版与设计考试试题及答案
- 新能源充电桩施工方案
- 2015-2024年十年高考地理真题分类汇编专题03 地球上的大气(原卷版)
- DLT 572-2021 电力变压器运行规程
- 金相分析原理及技术
- 无责任人道主义赔偿协议书
评论
0/150
提交评论