2022年软件工程导论知识点概要 .pdf
《2022年软件工程导论知识点概要 .pdf》由会员分享,可在线阅读,更多相关《2022年软件工程导论知识点概要 .pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.1软件危机软件危机的表现软件危机是指在计算机软件的开发、 使用和维护过程中遇到的一系列严重问题。1)成本难以估计、成本高。2)软件开发进度估计不准确,项目延期比比皆是。3)软件质量得不到保证(功能和性能) 。4)用户对“已完成的”软件系统不满意的现象经常发生。5)维护非常困难 (多样性、复杂性、副作用 )。6)软件通常没有适当的文档。7)软件产品供不应求,跟不上计算机普及速度。产生软件危机的原因(1) 与软件本身的特点有关(逻辑复杂,成本高,风险大 ,难于维护 )。(2)与软件开发与维护的方法不正确有关:软件程序(软件是程序、数据及相关文档的完整集合)急于求成 =拔苗助长 (软件从定义、开
2、发、使用和维护、废弃要经历一个漫长的生命周期 )各自为阵无方法学 (应要组织良好、管理严密、各类人员协作共同完成的工程项目)1.2软件工程定义软件工程是应用计算机科学、数学、心理学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量、降低成本和提高效率为目的。软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。软件工程的特性:1. 软件工程关注于大型程序的构造(传统的程序设计技术和工具是支持小型程序设计的)2. 软件工程的中心课题是控制复杂性(问题分解)精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,
3、共 25 页3. 软件经常变化(考虑将来要发生的变化)4. 开发软件的效率非常重要(寻求更好、更有效的工具)5. 和谐地合作是开发软件的关键(运用标准和规程)6. 软件必须有效地支持它的用户(软件要服务于用户)7. 在软件工程领域中通常是由具有一种文化背景的人替具有另一种文化背景的人创造产品软件工程的 7 条基本原理1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性软件工程方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学 (methodo
4、logy),也称为范型 (paradigm)。目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。软件工程方法学包含3 个要素:方法、工具和过程。1.3软件生命周期每阶段的基本任务 : 1. 问题定义2. 可行性研究3. 需求分析4. 总体设计5. 详细设计6. 编码和单元测试7. 综合测试8. 软件维护精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 25 页1.4软件过程软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常包括四种基本的过程活动:()软件规格说明; ()软件开发
5、;()软件确认;()软件演进软件过程模型 : 软件开发程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。几种典型的模型:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、 RUP等。软件过程模型的选择基于项目和应用的性质、采用的方法工具以及需要的控制和交付的产品。瀑布模型 (Waterfall Model ): 传统瀑布模型:规定了各项软件工程活动,包括:制定开发计划、需求分析和说明、软件设计、程序编码、测试、运行维护。并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。特点:1、阶段间具有顺序性和依赖性。
6、2、推迟实现。3、质量保证。优点:1、 可强迫开发人员采用规范的方法 (例如,结构化技术);严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。2、瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。3、瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发 !问题:1、不适应需求经常发生变更的环境:在项目的开发过程精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 25 页中,变更可能会引起混乱。所以,有人形象地把采用线性模型进行商业软件工程称之为 “在沙滩上盖楼房”。 (适合于用
7、户需求明确、完整、无重大变化的软件项目开发)2、线性顺序模型每一步的工作都必须以前一阶段的输出为输入,这种特征会导致工作中发生“阻塞”状态。3、由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。4、是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。在可运行的软件产品交付给用户之前, 用户只能通过文档来了解产品是什么样的。快速原型模型( Rapid Prototype Model)步骤:第一步进行试验开发,得出产品的“原型” ,其目的在于弄清软件需求并探索可行性; 第二步在原型的基础上开发出较为满意的软件产品。该模
8、型克服了瀑布模型的部分缺陷, 减少了软件需求不明确给开发工作带来的风险。前提 :(1)是用户必须积极参与原型的建造, 建造原型仅仅是为了定义需求,之后就必须被全部抛弃(至少是部分抛弃 ),实际的软件必须在充分考虑到软件质量和可维护性之后才被开发。从这个意义上说,原型模型又往往被称为“ 抛弃原型模型 ” 。(2)是必须有快速开发工具可供使用。增量模型 (Incremental Model) 是一种渐进地开发逐步完善的软件版本的模型,该模型一般首先开发产品的基本部,然后再逐步开发产品的附加部分。整个软件产品被分解成许多个增量构件。每个构件由多个相互作用的功能模块构成,并能够完成特定的功能。该增量模
9、型表明:必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计,因此风险较小。优点:是十分有用的一种模型。在克服瀑布模型缺点、减少由于软件需求不明确而给开发工作带来风险方面,确有显著的效果;缩短产品提交时间都能够起到良好的作用。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 25 页困难:1、在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充, 向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。2、开发人员既要把软
10、件系统看作整体。又要看成可独立的构件,因此相互矛盾。除非开发人员有足够的技术能力协调好。3、多个构件并行开发,具有无法集成的风险螺旋模型 (Spiral Model) 优点:对于高风险的大型软件,螺旋模型是一个理想的开发方法。缺点:风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大。适合场合:主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好地识别和对待每一个演化级别上的风险。只有内部开发的项目,才能在风险过大时方便地中止项目。如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。喷泉模型 (Fountain Model) 特点:喷泉模型的各阶
11、段均采用了 “对象”这一统一范式,整个过程看起来像喷泉从喷出到落下再喷出的周而复始过程产生的光滑水柱,体现了软件创建所固有的迭代和无间隙的特征。适合场合:喷泉模型主要用于面向对象的软件项目,软件的某个部分通常被重复多次, 相关对象在每次迭代中随之加入渐进的软件成分。Rational统一软件开发过程RUP软件开发生命周期是一个二维的软件开发模型。横轴代表时间,体现生命周期特征;纵轴代表工作流,体现了开发过程的静态结构。RUP 中的软件生命周期在时间上被分解为四个顺序的阶段:初始、细化、构造和移交。 每个阶段围绕着9 个核心工作流分别精选学习资料 - - - - - - - - - 名师归纳总结
12、- - - - - - -第 5 页,共 25 页迭代。适合场合:可开发或大或小、分布在各个领域的项目,表明了 RUP 的多功能性和广泛适应性。适合于需求不稳定、不全面的软件项目开发。1.5小结软件 =程序+数据+文档软件危机 : 原因,现象,办法 (软件工程学 )软件工程 :指导计算机软件开发和维护的一门工程科学软件工程 3 个要素:方法、工具和过程。软件生命周期 :定义,开发,运行维护软件过程 : 瀑布模型,快速原型模型、增量模型、螺旋模型、喷泉模型、 RUP等2.1 可行性研究目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。2.2 可行性研究的主要内容(1) 技术可行性(2)
13、经济可行性(3) 操作可行性(4) 法律可行性(5) 社会可行性2.3 数据流图1、一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。2、它只是描绘数据在软件中流动和被处理的逻辑过程,是精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 25 页系统逻辑功能的图形表示。3、 设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能。画数据流图的方法:1、自顶向下,逐步求精2、先画顶层DFD ,描绘系统的整体逻辑概貌;顶层流图仅包含一个加工, 它代表被开发系统。 它的输入流是该系统的输入数据
14、,输出流是系统所输出数据。3、其次画中间层流图:对上层父图的处理的细化,形成子图。底层流图是指其加工不需要在做分解的数据流图,它处在最底层。注意:数据流图应该分层,并且在把功能级数据流图细化后得到的处理超过9 个时,应该采用画分图的办法。 当把一个处理分解为一系列处理时, 分解前和分解后的输入输出数据流必须相同!数据流图用途:1、画数据流图的基本目的是利用它作为交流信息的工具。2、分析员把他对现有系统的认识或对目标系统的设想用数精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 25 页据流图描绘出来,供有关人员审查确认。3、由于在数据流图
15、中通常仅仅使用4 种基本符号,而且不包含任何有关物理实现的细节,因此,绝大多数用户都可以理解和评价它。4、数据流图着重描绘系统所完成的功能,其另一个主要用途是作为辅助物理系统的分析和设计的工具。2.4 小结1、可行性研究的任务 : 技术, 经济,社会2、可行性研究过程 : 8 步骤3、数据流图 : 源点或终点,处理,数据存储和数据流4、数据字典 : 是分析阶段的工具,包括流,元素,存储,处理 4 类元素组成。5、成本/效益分析: 从经济角度判断是否继续投资于这项工程的主要依据。3.1 需求分析的具体任务确定对系统的综合要求:1、功能需求2、性能需求3、可靠性和可用性需求4、出错处理需求5、接口
16、需求6、约束7、 逆向需求8、将来可能提出的要求分析系统的数据要求 : 建立数据模型, 用图形化的工具描述数据结构 (如层次方框图和 warnier 图) 。导出系统的逻辑模型数据流图、实体联系图、状态转换图、数据字典等。修正系统开发计划:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 25 页由分析过程准确地估计系统的成本和进度,修正以前制定的开发计划。3.2 与用户沟通获取需求的方法1、访谈2、面向数据流自顶向下逐步求精3、简易的应用规格说明技术4、快速建立软件原型(它应该实现用户看得见的功能,原型要具有快速并容易修改的特点)3.3
17、 数据规范化规范化的目的是:1、消除数据冗余,即消除表格中数据的重复;2、消除多义性,使关系中的属性含义清楚、单一;3、使关系的“概念”单一化,让每个数据项只是一个简单的数或字符串,而不是一个组项或重复组;4、方便操作。使数据的插入、删除与修改操作可行并方便;5、使关系模式更灵活,易于实现接近自然语言的查询方式。3.4 状态转换图 (状态图 ) 通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。状 态1、状态规定了系统对事件的响应方式。2、系统对事件的响应,既可以是做一个(或一系列 )动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。3、可分为:初态 (初始状态 )
18、;终态 (最终状态 );中间状态4、 一张状态图中只能有一个初态, 而终态则可以有 0 至多个。事 件事件就是引起系统做动作或( 和)转换状态的控制信息。符 号精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 25 页1、初态用实心圆表示,终态用一对同心圆(内圆为实心圆 ) 表示2、中间状态用圆角矩形表示,分成上、中、下3 个部分。3、活动表的语法格式:事件名(参数表)/动作表达式(1)“事件名”可以是任何事件的名称。在活动表中经常使用下述 3 种标准事件: entry ,exit和 do。(2) entry事件指定进入该状态的动作,ex
19、it事件指定退出该状态的动作,而do 事件则指定在该状态下的动作。需要时可以为事件指定参数表。(3) 动作表达式描述应做的具体动作。4、事件表达式的语法:事件说明 守卫条件 / 动作表达式(1) 事件说明:事件名(参数表)(2) 动作表达式:当状态转换开始时执行该表达式。(3) 守卫条件是一个布尔表达式,如果既有事件说明又有守卫条件,则当事件发生且守卫条件为真是状态转换才发生,如果只有守卫条件没有事件说明,则守卫条件为真时, 发生状态转换。5.1 设计过程1. 设想供选择的方案; 2. 选取合理的方案; 3. 推荐最佳方案;4. 功能分解; 5. 设计软件结构; 6. 设计数据库; 7. 制定
20、测试计划; 8. 书写文档; 9. 审查和复审精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 25 页5.2 设计原理模块化1、把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能, 这些模块集成起来构成一个整体,可以完成指定的功能以满足用户的需求。2、模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。模块是构成程序的基本构件。3、过程、函数、子程序和宏等,都可作为模块。4、面向对象方法学中的对象是模块,对象内的方法(或称为服务)也是模块。模块化的好处 :1、可以降低软件开发的难度;2、可以使程序结构清晰
21、,增加易读性和易修改性;3、模块化还有利于提高代码的可重用性及团队合作开发大型软件的可行性。抽象抽象是人类在解决复杂问题时经常采用的一种思维方式,它是指将现实世界中具有共性的一类事物的相似的、本质的方面集中概括起来,而暂时忽略它们之间的细节差异。 结构化程序中自顶向下、逐步求精的模块划分思想正是人类思维中运用抽象方法解决复杂问题的体现。逐步求精定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。好处:1、降低了软件开发中每个阶段的工作难度;2、简化了软件的设计和实现过程;3、有助于提高软件的可读性、可测试性和可维护性;4、 在程序设计中运用抽象的方法还能够提高代码的可重用性。信息隐藏和
22、局部化1、信息隐藏:设计和确定模块,使得一个模块内包含的信精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 25 页息(过程和数据 )对于不需要这些信息的模块来说,是不能访问的。目的:主要是为了提高模块的独立性,减少将一个模块中的错误扩散到其他模块的机会。 模块之间的信息传递只能通过合法的调用接口来实现。 信息隐蔽对提高软件的可读性和可维护性都是非常重要的。2、局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。如模块中的局部数据元素是局部化的一个例子。3、局部化和信息隐藏概念是密切相关的,局部化有助于信息隐藏模块独立模块的独立性是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年软件工程导论知识点概要 2022 软件工程 导论 知识点 概要
限制150内