版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软软 件件 工工 程程Software Engineering 课程介绍及要求课程介绍及要求教学目标教学目标 为什么要学习这门课程为什么要学习这门课程 正确理解和认识“软件”的概念及其特点; 理解软件开发面临的问题和挑战; 掌握软件工程的原则、方法和思想来系统地开发软件,尤其是复杂、庞大的软件的开发; 了解和接触软件开发所需的各种技术手段。 理解、掌握和运用理解、掌握和运用 理解理解 什么是软件工程? 为什么需要软件工程(产生背景)? 软件工程需要解决那些问题? 软件工程涉及那些方面内容? 掌握掌握 软件工程概念技术过程手段工具 运用运用 运用工程化思想进行软件需求分析软件设计程序设计软件维护
2、 先导要求先导要求 程序设计语言; 最好有一定的软件开发经验。 学习要求学习要求 听理解知识点和思想;将课堂知识与课本知识融会贯通。 做认真完成每个实验和实践教学内容;生科领会软件工程的原则、方法和技术;在实践过程中培养抽象思维能力;通过实践培养独立解决问题的能力;以小组为单位培养合作精神。 读阅读相关课外资料,补充课本知识不足。第一章第一章 软件工程学概述软件工程学概述1.1 1.1 软件危机软件危机 1.2 1.2 软件工程软件工程1.3 1.3 软件生命周期软件生命周期1.4 1.4 软件过程软件过程1.5 1.5 小结小结 软件工程是一门新兴的边缘学科,涉及的学科多,软件工程是一门新兴
3、的边缘学科,涉及的学科多,研究的范围广,研究的主要内容有以下几方面:研究的范围广,研究的主要内容有以下几方面: 软件开发技术软件开发技术 软件管理技术软件管理技术第一章第一章 软件工程学概述软件工程学概述1.1 1.1 软件危机软件危机 6060年代中期以前:通用硬件相当普遍,软件却是为某个年代中期以前:通用硬件相当普遍,软件却是为某个具体的应用而编写的。具体的应用而编写的。 6060年代中到年代中到7070年代中:年代中:软件作坊软件作坊。 “软件危机软件危机”(Software CrisisSoftware Crisis) 出现原因:由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
4、而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力财力,而在开发过程中就夭折。1.1.1 1.1.1 软件危机介绍软件危机介绍 软件危机软件危机(软件萧条、软件困扰):是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。实际上,几乎所有软件都不同程度地存在这些问题。 软件危机包含下述两方面的问题软件危机包含下述两方面的问题: 如何开发软件,满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。软件危机的典型表现:软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”
5、软件系统不满意的现象经 常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐 年上升;(7)软件开发生产率提高的速度,远远跟不上计算 机应用迅速普及深入的趋势 。1.1.2 1.1.2 产生软件危机的原因产生软件危机的原因 1. 与软件本身的特点有关 软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。软件不同于一般程序,它的一个显著特点是软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。 2.与软件开发与维护的方法不正确有关忽视软件需求分析的重要性。对用户要求没有完整准确的认识就匆
6、忙着手编写程序。 认为软件开发就是写程序并设法使之运行。程序只是完整的软件产品的一个组成部分。一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。在软件开发的不同阶段进行修改需要付出的代价是很不相同的,见图1.1图1.1 引入同一变动付出的代价随时间变化的趋势1.1.3 1.1.3 消除软件危机的途径消除软件危机的途径 1、对计算机软件有正确的认识:Software)Program)Data)Document) Software = Program + Data + DocumentSoftware = Program + Data + Document 2、认识到软
7、件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 3、推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。 4、开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 1.2 1.2 软件工程软件工程 1.2.1 1.2.1 软件工程概念软件工程概念 软件工程概念有多种不同的描述软件工程概念有多种不同的描述: 通常的描述:通常的描述:指导计算机软件开发和维护的一门工程学科。就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。 19681968年年NATONATO会议:
8、会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。 19931993年年IEEEIEEE:软件工程是(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程;(2)研究(1)中提到的途径。软件工程的本质特性:软件工程的本质特性: 1. 软件工程是关注于大型程序的构造; 2. 软件工程的中心课题是程序控制的复杂性; 3. 软件常随时态的发展而变化; 4. 提高软件的开发效率非常重要; 5. 协同合作是软件开发的关键; 6. 软件必须有效地支持它的相关用户; 7. 软件开发过程可理解为具有一种文化背景的人替代具有另一种文化背景的人创造产品
9、。1.2.2 1.2.2 软件工程基本原理软件工程基本原理 软件工程的七条基本原理是软件开发过程所应遵软件工程的七条基本原理是软件开发过程所应遵循的最基本的原则,不能互相取代。循的最基本的原则,不能互相取代。1 1. . 用分阶段的生命周期计划严格管理;用分阶段的生命周期计划严格管理;2. 2. 坚持进行阶段评审制度;坚持进行阶段评审制度;3. 3. 实行严格的产品控制;实行严格的产品控制;4. 4. 采用现代程序设计技术;采用现代程序设计技术;5. 5. 结果应能清楚地审查;结果应能清楚地审查;6. 6. 开发小组的人员应该少而精;开发小组的人员应该少而精;7. 7. 承认不断改进软件工程实
10、践的必要性承认不断改进软件工程实践的必要性。1.2.3 1.2.3 软件工程方法学软件工程方法学 软件工程包括技术技术和管理管理两方面的内容,是技术与管理紧密结合所形成的工程学科。 管理管理就是通过计划、组织和控制等一系列活动,合理配置和使用各种资源,以达到既定目标的过程。 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学方法学(Methodology),也称为范型(Paradigm)。 软件工程方法学的3要素:方法、工具和过程。1. 1. 传统方法学:传统方法学: 也称为生命周期方法学或结构化范型。也称为生命周期方法学或结构化范型。 结构化方法(结构化方法(Structure
11、 MethodStructure Method)有:)有: 1)结构化设计方法(SD); 2)结构化分析方法(SA); 3)结构化分析与设计技术(SADT); 4)JACKSON方法(杰克逊); 5)WARNIER方法(瓦尼耶)。2. 面向对象方法学 把数据和对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程。 面向对象的方法 = = 对象(属性与服务的封装) + + 分类 + + 继承 + + 通过消息的通讯 面向对象方法学的优点: 面向对象方法学模拟了人类习惯的思维方式,使软件的开发方法与过程尽可能接近人类认识世界、解决问题的方法与过程。 面向对象方法学开发软件的过程,是
12、一个主动地多次反复迭代的演化过程,保证了在各项开发活动之间的平滑过渡。 促进了软件重用和复用技术。1.3 软件生命周期 软件生命周期软件生命周期:指软件从提出到最终被淘汰的整个存在期,包括三个时期、八个阶段。三个时期:三个时期:八个阶段:八个阶段:软件生命周期软件生命周期软件定义软件定义软件开发软件开发软件维护软件维护问题定义问题定义可行性研究可行性研究需求分析需求分析概要设计概要设计详细设计详细设计编码和单元测试编码和单元测试综合测试综合测试运行维护运行维护系统设计系统设计系统实现系统实现 软件生命周期每个阶段的基本任务1. 问题定义 任务:问题是什么?通过对客户的访问调查,系统分析员扼要地
13、写出关于问题性质、工程目标和工程规模的书面报告。经过讨论和必要的修改之后这份报告应该得到客户的确认。 结果:关于系统规模和目标的报告书 。2. 可行性研究 任务:有可行的解吗?系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程。研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。 结果:系统的高层逻辑模型(数据流图、成本效益分析)。可行性论证报告(立即进行/推迟进行/不能或不值得进行)。3. 需求分析 任务:必须做什么?主要确定目标系统必须具备哪些功能。系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。 结果:系统的逻辑模型(数据流图、数据字典、
14、简要的算法描述)。用规格说明书准确地记录对目标系统的需求。4. 总体设计 任务:如何解决已提出的问题?设计出实现目标系统的几种可能的方案(低、中、高成本)。用适当的表达工具描述每种方案,分析优缺点,推荐一个最佳方案,制定出实现最佳方案的详细计划。设计程序的体系结构。 结果:可能的解法(系统流程图、成本效益分析)。推荐的系统体系结构(层次图或结构图)。5. 详细设计 任务:怎样具体实现该系统?详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。 结果:每个模块的算法和数据结构(程序流程图、PAD图、N-S图等)。6. 编码和单元测试 任务:得到正确的程序模块选取一种适当的高级程序设计语言
15、(必要时用汇编语言),把详细设计的结果翻译成用选定的语言书写的程序;并且仔细测试编写出的每一个模块。 结果:代码和测试报告 。7. 综合测试 任务:得到符合要求的软件通过集成测试、验收测试、现场测试、平行运行等方法对目标系统进一步测试检验。通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求,也可以决定测试和调试过程什么时候可以结束。 结果:测试计划、详细测试方案以及实际测试结果。完整一致的软件配置 。8. 软件维护 任务:使系统持久地满足用户的需要改正性维护:诊断和改正在使用过程中发现的软件错误;适应性维护:修改软件以适应环境的变化;完善性维护:根据用户的要求改进或扩充
16、软件;预防性维护:修改软件为将来的维护活动做准备。每一项维护活动实质上是经历了一次压缩和简化了的软件定义和开发的全过程。 结果:完整准确的维护记录 。各类维护工作量所占比例维护工作量在软件生命周期所占比例1.4 1.4 软件过程软件过程软件过程: 为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 给出了什么人(Who)、在什么时候(When)、做什么事(What)、以及怎样做(How)这些事的一个特定具体目标。ISO9000对软件过程定义: 使用资源将输入转化为输出的活动所构成的系统。 过程定义了运用方法的顺序、应交付的文档资料、为保证质量和协调变化应才去的管理
17、措施、各个阶段任务完成的节点。 当过程结束时,将把输入信息(如软件需求)转化为输出结果 (如软件产品)。传统的瀑布模型实际的瀑布模型1.4.1 1.4.1 瀑布模型瀑布模型( (Waterfall Model )瀑布模型的特点: 1. 1. 阶段间具有顺序性和依赖性阶段间具有顺序性和依赖性 两重含义:(1)前一阶段的工作完成之后,才能开始后一阶段的工作;(2)前一阶段的输出文档就是后一阶段的输入文档。 2. 2. 推迟实现的观点推迟实现的观点 对于大规模的软件项目,编码开始得越早,最终完成开发工作所需要的时间越长。 3. 3. 质量保证的观点质量保证的观点 (1)每个阶段都必须完成规定的文档,
18、没有交出合格的文档就是没有完成该阶段的任务。 (2)每个阶段结束前都要对所完成的文档进行评审,尽早发现问题,改正错误。瀑布模型的优点: 可强迫开发人员采用规范的方法; 严格地规定了每个阶段必须提交的文档; 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。瀑布模型的缺点: 瀑布模型是由“文档驱动的”这个事实也是它的一个主要缺点。 实际项目很少按照该模型给出的顺序进行; 用户常常难以清楚地给出所有需求; 用户必须有耐心,等到系统开发完成。快速原型模型1.4.2 1.4.2 快速原型模型快速原型模型 快速原型快速原型(Rapid Prototype Model) : 是快速建立起来的可以
19、在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。 快速原型模型的特点: 快速原型模型不带反馈环,软件产品的开发基本上是线性顺序进行的。 快速原型的本质是“快速”。应该尽可能快地建造出原型系统,以加速软件开发过程,节约成本。原型模型存在的问题: 为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。 为了演示可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。 开发过程不便于管理。 有效的使用原型模式: 建造原型仅是为了定义需求,之后就被抛弃(或被部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。1.4.3 1.4
20、.3 增量模型增量模型 增量模型增量模型(Incremental Model): 把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。 在增量模型开发过程中,第一个增量构件往往是软件的基本需求。 增量模型增量模型项目日历时间项目日历时间软软件件功功能能性性和和特特征征1 12 23 34 45 5第第2 2次增量发布次增量发布增量增量2 21 12 23 34 45 5第第n n次增量发布次增量发布增量增量n n1 12 23 34 45 5第第1 1次增量发布次增量发布增量增量1 15 5部署(发布,反馈)部署(发布,反馈)4 4
21、构造(编码,测试)构造(编码,测试)3 3建模(分析,设计)建模(分析,设计)2 2计划计划1 1交流交流增量模型的优点:人员分配灵活,刚开始不需投入大量人力资源。 当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。增量模型的难点:软件体系结构必须是开放的。模型本身是自相矛盾的。整体独立构件。不同的构件并行进行有可能加快工程进度,但是要冒无法集成到一起的风险。1.4.4 1.4.4 螺旋模型螺旋模型 螺旋模型(Spiral Model):将原型及其他方法结合起来尽量降低风险。也可把它看作在快速原型模型的每个阶
22、段之前都增加了风险分析过程。如右图所示。 简化的螺旋模型完整的螺旋模型螺旋模型的优点:主要优势在于它是风险驱动的;对可选方案和约束条件的强调有利于对已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试或测试不足所带来的风险;维护只是模型的另一个周期,维护和开发之间没有本质区别。螺旋模型的缺点:采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。 过多的迭代次数会增加开发成本,延迟提交时间。 螺旋模型适用于:特别适用于庞大、复杂并具有高风险的系统。适用于内部开发的大规模软件项目。1.4.5 1.4.5 喷
23、泉模型喷泉模型 喷泉模型(Fountain Model) :是典型的面向对象生命周期模型。 “喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图中的中心垂线)作为总目标。 喷泉模型的优点:该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。多次反复地增加或明确目标系统,而不是本质性的改动,降低了错误的可能性。喷泉模型的缺点:由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理。要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情
24、况。喷泉模型适用于:适用于面向对象的软件开发过程。基于构件的开发模型:支持软件复用。利用预先包装好的软件构件来构造应用系统。领域分析领域分析构件可变性构件可变性分析分析构建构建可复用构件可复用构件领域模型领域模型领域基准领域基准体系结构图体系结构图可复用可复用构件库构件库分析分析体系结构设体系结构设计计获取构件获取构件构件特化构件特化和修改和修改评价评价构件组装构件组装和测试和测试开发未找到开发未找到构件的部分构件的部分应用系统工程应用系统工程应用系统应用系统领域工程领域工程1.4.6 Rational1.4.6 Rational统一过程统一过程 Rational统一过程(Rational Unified Proce
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市政工程施工方案
- 2025年安徽省滁州市南谯区乌衣镇国民经济和社会发展第十五个五年规划
- 校长在学校行政班子会上讲话-:以“四力”强素养以实干担使命
- 上饶市人民医院碘-131治疗适应证与随访管理考核
- 芜湖市人民医院泌尿系统病理诊断考核
- 连云港市人民医院消毒效果监测考核
- 镇江市人民医院新型内镜应用考核
- 萍乡市人民医院头颈部神经监测考核
- 抚州市人民医院过敏性休克的紧急救治流程考核
- 宜春市中医院激光安全防护知识考核
- 礼修于心 仪养于行 课件-2023-2024学年高一上学期文明礼仪在心中养成教育主题班会
- 自用充电桩巡查记录表
- 2023年广东省妇幼保健院高层次卫技人才招聘考试历年高频考点试题含答案解析
- 机动车检测站质量手册
- 2023年黑龙江八一农垦大学考研英语练习题100道(附答案解析)
- 忻州市静乐县霍州煤电集团汾源煤业有限公司矿产资源开发利用、地质环境保护与治理恢复、土地复垦方案
- 人教版初中数学七年级上册教学课件多项式
- 弱电智能化工程售后服务方案
- 高三家长会班主任发言稿15篇
- TY/T 2001-2015国民体质测试器材通用要求
- 新人教版五年级上册数学(新插图)练习八 教学课件
评论
0/150
提交评论