软件工程主要知识点

Posted 是一个小迷糊吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程主要知识点相关的知识,希望对你有一定的参考价值。

软件工程主要知识点

试题类型:

一、选择题:10小题,20分。
二、判断题:10小题,20分。
三、简答题:6小题,30分。
四、应用题:2小题,30分。

需要重点掌握的内容:

一、“雨课堂”中第1、2章小测验;第3、4、5章小测验;第6、7、8章小测验。

二、重要概念:

软件工程:

软件工程是以借鉴传统工程的原则,方法,以提高质量,降低成本为目的指导计算机软件开发和维护的工程学科

软件过程:

*软件过程又称为软件生命周期过程,是软件生命周期内为达到一定目标而必须实施的一系列相关过程的集合。

需求获取技术:

收集并明确用户需求的过程。需求获取,属于软件工程中的一部分,包括需求来源和获取需求的技术。它是软件设计的第一阶段,其本质主要是人的活动,涉及软件设计人员如何与客户建立有效的沟通。

需求分析:

分为需求获取、分析建模、需求描述和需求验证4步。

软件需求说明书:

P42;本文档是进行项目策划、概要设计和详细设计的基础,也是软件企业测试部门进行内部验收测试的依据

软件实现:

软件实现就是将代码利用编译器编译生成的软件。

软件测试:

软件测试的目的是为了发现软件产品中存在的软件缺陷,进而保证软件产品的质量,软件测试是为了发现错误而执行程序的过程

UML:

即统一建模语言,是一种标准图形化的建模语言。它主要用于软件的分析与设计,用定义完善的符号来图形化的展现一个软件系统。

用例图:

用例描述的是外部行为者所理解的系统功能。用例应用于需求分析阶段,他建立的是系统开发者和用户反复讨论的结果,描述了开发者和用户对需求规格所达成的共识;

顺序图:

顺序图描述对象之间的动态交互关系,着重表现对象间消息传递的时间顺序。顺序图有两个坐标轴:纵坐标轴表示时间,横坐标轴表示不同的对象。

面向对象:

面向对象的方法主要是把事物给对象化,包括其属性和行为。

类:

类就是对具有相同数据和相同操作的一组相似对象的定义,是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明;

对象:

在应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。

继承:

继承是子类自动地共享父类中定义的数据和方法的机制

封装:

把数据和实现操作的代码集中起来放在对象内部。

多态:

指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象

软件维护类型:

在软件产品交付给用户之后,为了弥补软件测试阶段未发现的缺陷,改进软件产品的性能,补充软件产品的新功能等所进行的修改软件的过程

软件估算方法:

自顶向下估算法(估算人员参照以前完成的项目所耗费的总成本或总工作量,来推算将要开发的软件的总成本或总工作量,然后把它们按阶段、步骤和工作单元进行分配)

自底向上估算法(将每部分的估算工作交给负责该部分的人来做)

差别估算法(将软件开发项目与一个或多个已完成的类似项目相比较,找出与类似项目的不同之处,并估算每个不同之处对成本的影响,从而估算出开发项目的总成本。)

专家估算法(根据一个或多个专家对软件开发项目进行估算,其准确度取决于专家对软件想你定性参数的了解和他们的经验)

类估算法(用自顶向下法,将软件开发项目与类似项目进行直接比较,得到结果;用自底向下的方法,在具有相似条件的相同工作阶段之间进行比较,得到结果)

算式估算法(有两种基本类型。理论导出型和经验得出型)

三、一些基本问题:

1、软件工程研究的主要内容。

答:
○1方法与技术(主要讨论开发的各种方法及其工作模型,它包括多方面的任务,如软件系统需求分析、总体设计,以及如何构建良好的软件结构、数据结构及算法设计等,同时讨论具体实现的技术。
○2软件工具与环境,为软件工程方法提供方法提供支持,研究计算机辅助软件工程,建立软件工程环境。
○3软件工程管理技术,是指对软件工程全过程的控制和管理,包括计划安排、成本估算、项目管理、软件质量管理。
○4软件工程标准与规范,使得各项工作有章可循,以保证软件生产效率和软件质量的提高。软件工程标准可分为4个层次:国际标准、行业标准、企业规范和项目规范。

2、软件产品的生命周期6个阶段。

答:
○1可行性研究
此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
○2需求分析
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。“唯一不变的是变化本身。”,同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
○3软件设计
此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。
○4编码
此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
○5软件测试
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
○6软件维护
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。

3、常见软件开发生命周期模型。

答:
○1瀑布模型
它是一种线性的开发模型,具有不可回溯性
○2快速原型模型
它是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
○3增量模型
它是把代开发的软件系统模块化,经每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。
○4螺旋模型
○5喷泉模型
迭代是软件开发过程中普遍存在的一种内在属性。

4、良好的编程实践主要体现在哪三个方面。

答:模块化设计、面向抽象编程、有效的软件测试

5、敏捷过程的核心价值观有哪些?

答:
○1“个体和交互”胜过“过程和工具”
○2“可以使用的软件”胜过“面面俱到的文档”
○3“客户合作”胜过“合同谈判”
○4“响应变化”胜过“遵循变化”

6、如何进行结构化需求分析,其建模方法有哪些?

答:(1)建立当前系统的“具体模型”:系统的“具体模型”就是现实环境的忠实写照,这样的表达与当前系统完全对应,因此用户容易理解
(2)抽象出当前系统的逻辑模型:分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得当前系统的“逻辑模型”
(3)建立目标系统的逻辑模型:分析目标系统与当前系统逻辑上的差别,从而进一步明确目标系统“做什么”,建立目标系统的逻辑模型。
(4)为了对目标系统进行完整的描述,还需要考虑人机界面和其他一些问题

7、结构化分析方法的基本思想。

答:它是基于“分解”和“抽象”的基本思想,逐步建立目标系统的逻辑模型,进而描述出满足用户要求的软件系统

8、什么是抽象?当考虑问题的模块化解法时,你对抽象层次怎么理解?

答:随着分解自顶向下的进行,才会逐渐考虑到越来越具体的细节。这种用最本质的属性表示一个软件系统的方法就是“抽象”
理解:最顶层描述了整个目标系统X,中间层将目标系统划分为若干模块,每个模块完成一定的功能,而最底层是对每个模块实现方法的细节性描述

9、为什么说“高内聚、低耦合”的设计有利于提高系统的独立性?

答:降低模块之间的耦合程度的原因是
*模块之间的耦合程度越低,相互影响越小,发生异常后产生连锁反应的概率就越小
*在修改一个模块时,低耦合的系统可以把修改范围尽量控制在最小的范围内
*对一个模块进行维护时,其他模块的内部程序的正常运行不会受到较大的影响。
模块的高内聚通常意味着低耦合。尽量提高模块的内聚程度,使模块内部的各个组成部分都相互关联,使其为了完成一个特定的功能而结合在一起。

10、人机界面设计的三条“黄金原则”。

答:
1、置用户于控制之下:以不强迫用户进入不必要或不希望的动作的方式来定义交互模式;提供灵活的交互;允许用户交互可以被中断和撤销;当技能级别增长时可以使交互流水化并允许定制交互,使用户隔离内部技术细节,设计应允许用户和出现在屏幕上的对象直接交互
2、减少用户的记忆负担:减少对短期记忆的要求;建立有意义的缺省;定义直觉性的捷径;界面的视觉布局应该基于真实世界的隐喻;以不断进展的方式揭示信息
3、保持界面一致:允许用户将当前任务放入有意义的语境;在应用系列内保持一致性;如果过去的交互模式已经建立起了用户期望,不要改变它,除非迫不得已的理由

11、为什么软件开发人员不能同时完成测试工作?

答:一款软件的开发,测试是贯彻始终的
前期的单元测试和集成测试都是由程序员来完成了
测试小组并不参与
到系统测试的时候程序员才退出测试过程,而负责修改软件缺陷.
这些缺陷往往是由测试小组发现的,因为程序员对他们的程序很了解,知道怎么操作不会出现BUG,而测试小组则不然,怎么能引出BUG他就怎么去操作,相当于找茬.只有这样才能通过最后客户的验收测试.

12、常用的软件测试模型。软件测试的目的是什么?

答:软件测试的目的是:为了发现软件产品中存在的软件缺陷,进而保证软件产品的质量
V模型:描述了基本的开发过程和测试行为。非常明确的标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系
W模型:V模型基础上,增加开发阶段的同步测试
H模型:软件测试模型的活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行。

13、软件测试应该划分为几个阶段?软件测试各个阶段应重点测试的内容是什么?

答:
大体上来说可分为单元测试,集成测试,系统测试,验收测试,每个阶段又分为以下五个步骤:测试计划,测试设计,用例设计,执行结果,测试报告
初始测试集中在每个模块上,保证源代码的正确性,该阶段成为单元测试主要用白盒测试方法。接下来是模块集成和集成以便组成完整的软件包。
集成测试集中在证实和程序构成问题上。主要采用黑盒测试方法,辅之以白盒测试方法。
软件集成后,需要完成确认和系统测试。
确认测试提供软件满足所有功能、性能需求的最后保证。确认测试仅仅应用黑盒测试方法。
单元测试对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基
本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。
集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。
系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。
验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。 它的测试数据通常是系统测试的测试数据的子集.
回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。

14、面向对象分析的类图,类结构之间的关系?

答:类图(ClassDiagram)是用来显示系统中的类、接口、协作以及它们之间的静态结构和关系的一种静态模型。它主要用于描述软件系统的结构化设计,帮助人们简化对软件系统的理解,它是系统分析与设计阶段的重要产物,也是系统编码与测试的重要模型依据。
UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

15、UML有哪几部分组成?UML图可以分为五个类别。

答:由视图、图、模型元素、通用机制等组成,
五个类别:用例图、静态图、行为图、交互图、实现图

16、简述面向对象设计的7条原则?

答:模块化、抽象、信息隐藏、弱耦合、强内聚、可复用

17、常见的软件体系结构风格?

答:
数据流风格:批处理序列;管道/过滤器。
调用/返回风格:主程序/子程序;面向对象风格;层次结构。
独立构件风格:进程通讯;事件系统。
虚拟机风格:解释器;基于规则的系统。
仓库风格:数据库系统;超文本系统;黑板系统

18、掌握自动售货机的用例图分析。P206

19、掌握因果图、决策表进行用例设计的方法。P138

20、请画出ATM取款流程场景法分析图,设计每个场景的测试用例。P141

以上是关于软件工程主要知识点的主要内容,如果未能解决你的问题,请参考以下文章

在浙学刷视频刷作业刷测验软件分享

行政职业能力测验,多选题怎么计分

第六周测验

jQuery测验

如何在多项选择(mcq)测验中显示正确/错误的符号

C++编写程序实现小学生数学测验功能