软件工程基础知识.docx

上传人:b****5 文档编号:2778371 上传时间:2022-11-15 格式:DOCX 页数:36 大小:52.14KB
下载 相关 举报
软件工程基础知识.docx_第1页
第1页 / 共36页
软件工程基础知识.docx_第2页
第2页 / 共36页
软件工程基础知识.docx_第3页
第3页 / 共36页
软件工程基础知识.docx_第4页
第4页 / 共36页
软件工程基础知识.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

软件工程基础知识.docx

《软件工程基础知识.docx》由会员分享,可在线阅读,更多相关《软件工程基础知识.docx(36页珍藏版)》请在冰豆网上搜索。

软件工程基础知识.docx

软件工程基础知识

软件工程基础知识

一.什么是软件?

1.满足功能要求和性能的指令或计算机程序集合;

2.处理信息的数据结构;

3.描述程序功能以及程序如何操作和使用所要求的文档;

二.软件危机以及产生软件危机的原因?

1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势。

软件产品“供不应求”。

2.软件成本在计算机系统总成本中所占的比例逐年上升。

3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生。

4.软件产品的质量不容易保证。

5.软件产品常常是不可维护的。

6.软件产品的重用性差,同样的软件多次重复开

发。

7.软件通常没有适当的文档资料。

产生软件危机的原因可归结为两个重要的方面:

软件生产本身存在的复杂性;

软件开发所使用的方法和技术。

三.有哪些软件工程方法学及其要素?

1.使用最广泛的软件工程方法学是结构化方法学和面向对象的方法学。

2.要素:

方法、工具和过程。

四.什么是软件生存周期?

有哪些活动?

4.1软件生存周期

一个软件从提出开发要求开始到软件废弃不用的整个过程。

4.2开发活动

可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:

概要设计和详细设计)、编码、测试和运行维护

4.3各活动阶段主要文档

4.3.1可行行分析和项目开发计划

可性行研究报告

项目开发计划

4.3.2需求分析中的文档

需求规格说明书

初步用户使用手册

确认测试计划

修改完善的软件开发计划

4.3.3概要设计阶段文档

概要设计说明书

数据库说明书

用户手册

修订的测试计划(测试的策略、方法、步骤)

4.4.4详细设计阶段

详细设计说明书

4.4.5系统测试阶段

系统测试计划文档

五.有哪些主要生存期模型?

瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、

5.1瀑布模型

瀑布模型(传统的软件周期模型)严格遵循软件生命周期各阶段的固定顺序:

计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布。

优点:

可强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要进行严格的评审。

与它最相适应的开发方法是结构化方法。

缺点:

不适应用户需求的改动。

5.2原型模型

5.2.1快速原型模型

快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。

主要用于需求分析阶段。

不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。

特征:

简化项目管理、尽快建立初步需求、加强用户参与和决策。

具有广泛技能水平的原型化人员是原型实施的重要保证。

原型化人员应该是具有经验与才干、训练有素的专业人员。

衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。

5.2.2演化模型

在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。

而演化模型应用于整个软件开发过程,是从初始模型逐步演化为最终软件产品的渐进过程。

也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。

5.2.3增量模型

增量模型主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。

新的增量构件不得破坏已经开发出来的产品。

5.2.4原型模型小结

从下面的有关原型化方法的叙述中,选择出正确的叙述:

(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。

(2)在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。

(3)在用户没有明确地肯定其需求的时候,应该使用原型化方法。

(4)在用户不希望把自己的时间花在软件开发过程中的时候,应该使用原型化方法。

(5)使用原型化方法时应该使用第三代编程语言。

(6)原型化加强了开发过程中用户的参与和决策。

(7)原型化方法大致可分为三类:

抛弃式、演化式和递增式。

(8)原型化方法大致可分为演化式和递增式。

(9)采用原型化方法时,软件的开发成本较高。

(10)采用原型化方法时,关键的因素是建立原形的速度,而不是原形运行的效率。

5.3螺旋模型

螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。

螺旋线第一圈的开始点可能是一个概念项目。

从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到软件生命期结束。

5.4喷泉模型

喷泉模型主要用于描述面向对象的开发过程。

喷泉一词体现了面向对象开发过程的迭代和无间隙特征。

六.软件过程基础知识

6.1软件过程

软件过程是指人们用于开发和维护软件及相关产品的一系列活动,包括软件工程过程和软件管理过程。

6.2评估工具

软件过程的评估,通常采用软件能力成熟度

模型(CapabilityMaturityModel,CMM)。

CMM1.1的5个等级(由低级到高级):

初始级

软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式(消防式)的。

可重复级

建立了基本的项目管理过程来跟踪费用、进度和功能特性。

制定了必要的过程纪律,能重复早先类似应用项目取得的成功。

已定义级

已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准化软件过程。

所有项目均使用经标准、裁减的标准软件过程来开发和维护软件。

已管理级

收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。

优化级

加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能持续不断地改进。

七.软件工程项目管理基本知识

软件项目管理开始于任何技术活动之前,并且贯穿于整个的软件生命周期。

软件工程项目管理一般分为时间管理、成本管理、人力资源管理、风险管理。

7.1时间管理

7.1.1Gantt图

是一种简单的水平条形图,它以水平线段表示子任务的工作阶段,线段的起点和终点分别对应着子任务的起始时间,线段长度指示完成该任务所需要的时间。

甘特图的优点:

直观简明、易学易绘、可从图上清楚地标出子任务间的时间对比,但它也有

缺点:

(a)不能显示地描绘各项彼此间的依赖关系;

(b)进度计划的关键部分不明显,难以判断哪些部分应当是主攻和主控的对象;

(c)计划中有潜力的部分以及潜力的大小不明确,往往造成潜力的浪费。

7.1.2PERT网图与关键路径

PERT网图是一个由箭头(标识任务)和结点(标识事件)组成的有向图。

将网络方法用于工作计划安排的评审和检查。

PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的依赖关系,即哪些任务完成后才能开始另一些任务,以及如期完成整个工程的“关键路径”。

关键路径(CriticalPath)是由一连串的任务所组成的链,距离最大的一条路径。

软件项目的管理人员应该密切注视关键任务的进展情况。

如果希望缩短工期,只有往关键任务中增加资源才会有效果。

八.模块化基本知识

模块是指执行某一特定任务的数据和可执行语句程序元素的集合,通常是指可通过名字来访问的过程、函数、子程序或宏调用等。

模块化就是将一个待开发的软件划分成若干个可完成某一子功能的模块,每个模块可独立地开发、测试,最后组装成完整的程序。

8.1模块特性

8.1.1可分解性

如果一种设计方法提供了将问题分解成子问题的系统化机制,它就能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。

8.1.2可组装性

如果一种设计方法使现存的(可复用的)设计构件能被组装成新系统,它就能提供一种不需要一切从头开始的模块化解决方案。

8.1.3可理解性

如果一个模块可以作为一个独立的单位(不用参考其他模块)被理解,那么它就易于构造和修改。

8.1.4连续性

如果对系统需求的微小修改只导致对单个模块,而不是整个系统的修改,则修改引起副作用就会被最小化。

8.1.5保护性

如果模块内部出现异常情况,并且它的影响限制在模块内部,不会影响其他模块,则错误引起的副作用就会被最小化。

8.2模块与模块的耦合性

耦合是对一个软件结构内不同模块之间互连程序的度量。

耦合可以分成下列几种,它们之间的耦合度由高到低排列。

8.2.1内容耦合

直接操作或修改另一模块的数据,或不通过正常入口转入另一个模块。

软件设计时应坚决禁止内容耦合,应设计成单入口、单出口的模块,避免病态连接。

8.2.2公共耦合

多个模块引用同一全局数据区。

8.2.3外部耦合

模块与软件以外的环境有关联。

例如,输入输出把一个模块与特定的设备、格式、通信协议耦合在一起。

8.2.4控制耦合

一模块明显把开关量、名字等信息送入另一模块,控制另一模块的功能。

8.2.5标记耦合

两个模块之间通过传递公共指针或地址相互作用的耦合。

8.2.6数据耦合

模块间通过传递数据交换信息。

8.2.7非直接耦合(无耦合)

模块间无任何关系,独立工作

原则上讲,模块化设计总是希望模块之间的耦合表现为非直接耦合方式。

在以上耦合中,耦合度从高到低,内容耦合度最高,非直接耦合度最低。

8.3模块的内聚性

内聚是指一个模块内各个元素彼此结合的紧密程序,它是信息隐蔽和局部的概念的自然扩展。

设计时应该力求高内聚,理想内聚的模块应当恰好做一件事情。

1).偶然内聚:

一个模块的各成分之间毫无关系。

比如:

一组语句在程序的多处出现,为了节省内存空间,这些语句放在一个模块中,该模块的内聚是偶然内聚的。

2)逻辑内聚:

把几种逻辑上相关的功能组放在同一模块中。

3)瞬时内聚(时间内聚):

一个模块所包含的任务必须在同一时间间隔内执行,例如初始化模块。

4)过程内聚:

一个模块的处理元素是相关的,而且必须按特定的次序执行。

5)通信内聚:

一个模块的所有成分都结合再同一个数据结构上。

6)顺序内聚:

模块的成分同一个功能密切相关,且输出,作为另外一个成分的输入。

7)功能内聚:

模块内的所有成分属于一个整体,完成单一的功能。

在以上的内聚中,内聚度从低到高,偶然内聚度最低,功能内聚度最高。

模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则。

8.4模块的深度、宽度、扇出与扇入

深度:

表示软件结构中控制的层数。

宽度是软件结构中同一个层次上的模块总数的最大值

一个模块的扇入是指直接调用该模块的上级模块的个数。

一个模块的扇出是指该模块直接调用的下级模块的个数。

设计原则:

低扇出、高扇入。

8.5模块作用域和控制域

软件设计时,模块的作用域应在控制域之内。

8.6模块化基础知识小结

通过模块的合并和分解,降低模块的耦合度。

模块的扇入应尽量大,扇出应尽量小。

一个模块的扇入是指直接调用该模块的上级模块的个数。

一个模块的扇出是指该模块直接调用的下级模块的个数。

扇入大表示模块的重用性高,利用率高。

扇出大表示模块的复杂度高。

所以要高扇入,低扇出。

要将模块的作用范围限制在模块的控制范围之内。

降低模块之间的复杂性,避免“病态连接”。

九.什么是软件开发方法?

有哪些主要方法?

软件开发方法:

使用已定义好的技术集及符号表示习惯组织软件生产的过程。

结构化方法、面向对象方法、JACKSON方法。

9.1结构化方法学

结构化方法学也称为生命周期方法学(瀑布模型方法),是一种面向数据流的需求分析方法。

它的基本思想是自顶向下逐层分解。

为了在需求改变时对软件的影响较小,结构化分析时应该使程序结构与问题结构相对应

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1