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