一.判断题:
1.如果决定将软件全部包给第三方公司开发.(×
2.有了对系统的目标有了大致的了解,就可以开始开发项目,以后的在开发中继续了解。(×)
3.对于一个成功的软件项目,可执行程序是唯一交付的东西.(×)
4.直到程序运行,才评估软件系统的质量。 (×)
5.如果未能按时完成任务,我们可以通过增加程序员来加快完成任务。     (×)
6.虽然软件需求不断变更,但因软件比硬件有弹性,所以我们经常可以变更它.(×
7.软件工程将导致我们产生大量的无用文档,降低工作效率。(×
8.在面向对象建模中,主题划分提供了在更高一层上描述.(主题划分是指UML中将一组关联比较强的类的集合。则上百个类可划分为几个主题)(
9.面向对象的开发,对象分解取代功能分解。()
10.软件中80%的错误存在20%的模块中。(
11.结构化分析方法在建立系统模型时,使用一般――特殊结构(实际上没有这种关系)来处理信息。                            (×)
12.开发软件就是编程。(×
13.需求规格说明书说明了(
14.结构化方法,建立系统模型时使用一般连接组织信息。(×)
15.敏捷过程模型选用小而高激励的团队使用而不适用于大团队。(
二.简答题
1.软件工程是层次化的,其四个层次是?
答:方法,工具,过程,质量保证
软件工程是一种层次化的技术(如图2-1所示)。任何工程方法(包括软件工程)必须以有组织的质量保证为基础。全面的质量管理和类似的理念刺激了不断的过程改进,正是这种改进导致了更加成熟的软件工程方法的不断出现。支持软件工程的根基就在于对质量的关注。
  软件工程的基层是过程层.软件工程过程是将技术层结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发出来。过程定义了一组关键过程区域的框架(KPAs)[PAY93],这对于软件工程技术的有效应用是必须的.关键过程区域构成了软件项目的管理控制的基础,并且确立了上下各区域之间的关系,其中规定了技术方法的采用、工程产品(模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证及变化的适当管理。
软件工程的方法层提供了建造软件在技术上需要“如何做"。方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护.软件工程方法依赖于一组基本原则,这些原则控制了每一个技术区域,且包含建模活动和其他描述技术。
软件工程的工具层对过程和方法提供了自动的或半自动的支持。当这些工具被集成起来使得一个工具产生的信息可被另外一个工具使用时,一个支持软件开发的系统就建立了,称为计算机辅助软件工程(CASE)。CASE集成了软件、硬件和一个软件工程数据库(一个仓库,其中
包含了关于分析、设计、编程和测试的重要信息),从而形成了一个软件工程环境,它类似于硬件的CAD/CAE(计算机辅助设计/工程)。
软件工程必须以有组织的质量保证为基础
软件质量保证就是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量的活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。
2.软件工程的框架是?
答:沟通,策划,建模,构建,部署
通用过程框架
通用过程框架可适用于绝大多数的软件项目,该框架由沟通、策划、建模、构造和部署5个通用框架活动组成。
(1) 沟通。这项框架活动包含系统分析员与客户之间大量的交流和协作,还包括需求获取以
及其他相关活动。
(2) 策划.策划活动协助软件开发团队定义全局目标,并为后续的软件工程工作制定计划。策划活动包括一系列管理和技术实践,如描述需要执行的技术任务、可能的风险、资源需求、工作产品和工作进度计划。
(3) 建模.建模的目的是为了更好地理解需要构建的实体。
在软件工程中,要创建两类模型:分析模型和设计模型。
分析模型通过描述软件的信息域、功能域及行为域来表达客户的需求;
设计模型描述软件架构、用户界面及构件细节,从而帮助开发者高效地开发软件.
(4) 构造.构造活动包括一系列构件组装、编码和测试任务,从而为向客户和最终用户交付可运行软件做好准备。
(5) 部署。部署活动是将软件(全部或者完成的部分)交付给用户,用户对其进行评测并给出反馈意见。
部署活动包括三个动作:交付、支持和反馈。
3.一个模块的三个基本要素有哪些?
答:功能,状态,逻辑(程序流程图描述逻辑的一个方法)
功能:指模块实现什么功能(包括所调用的子模块的功能),做什么事情
逻辑:描述模块内部怎么做
状态:指该模块使用时的环境和条件
4.不同的对象收到同一个消息,产生不同的结果这种现象叫多态。
多态性含义
把相同的操作施加于不同类型的对象,获得不同的行为效果和结果。
C++中,多态性是通过虚函数(Virtual)实现的。
动态联编(Dynamic binding),滞后联编.
5.模块的基本要素:功能,状态,逻辑
6.面向对象建模需要识别五个层次:
a.类与对象层  b.属性层  c。结构层(类与类之间的关系)  d.方法层  e。主题层(为多个类划分主题)
主题层:它相当于高层的模块或子系统
类与对象层:它们是对问题域概念的抽象,可以从用户需求或其它规格说明书中到。
结构层:描述类之间的整体与部分、一般与特殊的关系.
属性层:它们是类所保存的信息,同时要给出各个类之间的实例连接。
服务层:它们是类可提供的操作,同时要根据需要的功能给出各个操作之间的消息连接。
软件测试的四个阶段:
      a。单元测试  b。集成测试  c。确认测试  d.系统测试
单元测试(模块测试):目的是保证每个模块作为一个单元能正确运行。主要测试编码和详细设计阶段的错误。
子系统测试:把经过单元测试的模块放在一起形成子系统。注重模块接口。
系统测试(集成测试):测试由子系统组成的整个系统,不仅测试模块间的协调和通信能力。还要测试设计错误、需求说明中的功能错误。
验收测试:确认系统能够满足用户的需求,方法同系统测试,主要强调用户的参与(alpha测试),测试需求说明中的功能错误.
平行运行、beta测试
测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。
开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
组装测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试.
单元测试又称模块测试,是针对软件设计的最小单位─程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。
单元测试需要从程序的内部结构出发设计测试用例.多个模块可以平行地独立进行单元测试。
组装测试 (集成测试、联合测试)
通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:
在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;
一个模块的功能是否会对另一个模块的功能产生不利的影响;
确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致.
对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础.
确认测试一般采用黑盒测试,其测试范围与系统测试略有不同,如弱化一些技术性的测试,强化用户所关心的功能和性能测试等.
确认测试一般包括
有效性测试(强调由专家进行)
软件配置复查
α测试和β测试
验收测试(强调由用户进行)
功能测试
性能测试(响应时间、处理速度、容量开销等)
强度测试(对强负荷的承受能力)
对文档配置的复审
系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试.
系统测试的目的在于通过与系统的需求定义作比较,  发现软件与系统的定义不符合或与之矛盾的地方.
将软件周期化为8个阶段(瀑布模型):
      a.可行性研究  b。需求分析  c.概要测试  d.详细测试  e.编码  f。测试
      g.维护  h。问题定义
正确的顺序为:h  a  b  c  d  e  f  g
P 12-14页书上。
7.对于一个流图(程序流程图退化为流图),它的基本路径的独立之路的上限是V(G)。(VG):强连通图中线性无关的环的个数)
P157页书上
8.自上往下集成测试:不需要编写驱动程序;自下往上集成测试对象模型是什么:不需要编写桩程序
P147-148书上。
9.单元测试针对模块哪些方面?
接口信息,主要功能,边界,错误处理,主要路径。P143页
10.题目:比较经典的软件工程开发过程模型(是对这三个模型化比较分析)-—瀑布模型、原型模型、螺旋模型。
 瀑布模型从可行性研究开始,逐步进行阶段性变换,直至通过确认测试并得到用户确认的软件产品为止。瀑布模型上一阶段的变换结果是下一阶段变换的输入,相邻两个阶段具有因果关系,紧密联系.一个阶段的失误将蔓延到以后的各个阶段。为了保障软件开发的正确性,每一阶段任务完成后,都必须对它的阶段性产品进行评审,确认之后再转入下一阶段的工作。评审过程发现错误和疏漏后,应该及时反馈到前面的有关阶段修正错误或弥补疏漏,然后再重复前面的工作,直至某一阶段通过评审后再进入下一阶段。
瀑布模型的优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
瀑布模型的缺点:(1)开发过程一般不能逆转,否则代价太大;(2)实际的项目开发很难严格按该模型进行;(3)客户往往很难清楚地给出所有的需求,而该模型却要求如此。(4)软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。
瀑布模型的使用范围:(1)用户的需求非常清楚全面,且在开发过程中没有或很少变化;(2)开发人员对软件的应用领域很熟悉;(3)用户的使用环境非常稳定;(4)开发工作对用户参与的要求很低.
 原型模型又称演化模型,主要是针对事先不能完整定义需求的软件项目开发而言的。许多软件开发项目由于人们对软件需求的认识模糊,很难一次开发成功,返工再开发难以避免。因此,人们对需开发的软件给出基本需求,作第一次试验开发,其目标仅在于探索可行性和弄清需求,取得有效的反馈信息,以支持软件的最终设计和实现。通常我们把第一次实验性开发出的软件称为原型(prototype)。这种开发模型可以减少由于需求不明给开发工作带来的风险,有较好的效果.相对瀑布模型来说,原型模型更符合人类认识真理的过程和思维,是目前较流行的一种实用的软件开发方法。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。