软件工程笔记1.0

2019-03-04 13:53

软件危机

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

软件危机的主要表现

1)软件开发无计划性 2)软件需求不充分

3)软件开发过程无规范 4)软件产品无测评手段

//软件的的特点

软件具有的独创性(即原始性)、无形性、复制性及复杂性等特点。

软件生命周期

软件生命周期是软件的产生直到报废或停止使用的生命周期

信息隐蔽

信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。

//应该让模块仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。

//信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。

回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

模块独立

模块独立是指每个模块完成一个相对独立的子功能,并且与其他模块之间的联系简单。

//衡量模块独立程度的度量标准有两个:耦合和内聚。

软件质量

与明确定义的功能和性能需求的一致性

? 与明确成文的开发标准的一致性

? 与所有专业开发的软件所期望的隐含的特性(如:健壮性、可维护性、良好的界面风格、可移植性等)的一致性

? 软件的质量因素:如正确性,性能、可靠性、容错性、易用性、灵活性、可扩充性、可理解性、可维护性

软件复用

软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。

软件工程

软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。它由方法、工具和过程三部分组成。

//软件工程是建立和使用一套合理的工程原则,从而经济地获得可靠的,可以在实际机器上//高效运行的软件。

数据字典

数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。

耦合性

耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。

//耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。

内聚性

内聚性,又称块内联系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。

完善性维护

在系统的使用过程中,用户往往要求扩充原有系统的功能,增加一些在软件需求规范书中没有规定的功能与性能特征,以及对处理效率和编写程序的改进。

更正性维护

由于系统测试不可能揭露系统存在的所有错误,因此在系统投入运行后频繁的实际应用过程中,就有可能暴露出系统内隐藏的错误

适应性维护

适应性维护时为了使系统适应环境的变化而进行的维护工作。

预防性维护

系统维护工作不应总是被动地等待用户提出要求后才进行,应进行主动的预防性维护,即选择那些还有较长使用寿命,目前尚能正常运行,但可能将要发生变化或调整的系统进行维护,目的是通过预防性维护为未来的修改与调整奠定更好的基础。

多态性

同一操作作用于不同的类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,得到不同的结果。

为什么要把软件分解为模块

采用模块化原理使软件结构清晰,不仅容易设计,也容易阅读和理解;模块化使软件容易测试和调试,因而有助于提高软件的可靠性;模块化可以提高软件的可修改性;模块化有助于开发过程的组织和管理; //模块分解的目的是将系统“分而治之”,以降低问题的复杂性,使软件结构清晰易阅读、//易理解、易于测试和调试,因而也有助于提高软件的可靠性

什么是软件生存周期模型

软件生命周期模型是软件开发的全部过程、活动和任务的结构框架。软件生命周期模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目开发的基础。

白盒测试和黑盒测试的特点和主要区别

白盒测试方法按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能。

黑盒测试并不涉及程序的内部结构和内容特性,主要根据规格说明,只依靠被测试程序的输入和输出之间关系或程序的功能来设计测试用例。

.非渐增式测试与渐增式测试有什么区别? 答:(1)非渐增式方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。而渐增式测试往往把单元测试和集成测试合在一起,同时完成。

(2)非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量少。

(3)渐增式可以较早地发现接口之间的错误,非渐增式最后组装时才发现。

(4)渐增式有利于排错,发生错误往往和最近新加入的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。 (5)渐增式比较彻底,已测试的模块和新的模块再测试。 (6)渐增式点用时间较多,但非渐增式所需更多的驱动模块和桩模块也占用一些时间。

(7)非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义

软件开发模型

? 瀑布模型(经常发生阻塞状态于开始和结束时)

? 增量开发模型(具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。)

? 原型法(尽快开发一个简化的系统原型版本。用于用户和开发人员学习和交流)

? 螺旋模型(将瀑布模型和增量模型结合起来,并加入了风险分析)

? 喷泉模型(适用于面向对象技术该模型中各阶段的界线不是明显分开的,而是相互重叠的)

? 智能模型 (特点是必须建立知识库,并将模型本身、软件工程知识、特定领域知识放入知识库。)

瀑布模型(Waterfall Model)

它将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

优点:1)有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。

缺点:1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

2) 与用户见面晚,从而增加了开发的风险; 3) 早期的错误可能要等到开发后期的测试阶段才能发现,发现问题越晚代价越高

传统\瀑布模型\的主要缺陷是什么?试说明造成缺陷的原因。 答:“瀑布模型是文档驱动的”。在项目的早期,用户常常很难清楚地给出所有需求,瀑布模型却要求如此。由于瀑布模型的特点,早期的错误直到开发晚期才能被发现,开发的风险较大。

适用范围:

瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。应用有一定的局限性。

原型模式

在项目开发的早期尽快开发一个简化的系统原型版本。用于用户和开发人员学习和交流。 ?多次分析和设计

?针对事先不能完成定义需求的软件开发


软件工程笔记1.0.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:三活动三提高五建设

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: