软件工程Word格式文档下载.docx
- 文档编号:21061535
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:30
- 大小:118.51KB
软件工程Word格式文档下载.docx
《软件工程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件工程Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
2、软件生存周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程,一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。
(1)计划阶段:
确定待开发系统的总体目标和范围,研究系统的可行性和可能的解决方案,对资源、成本及进度进行合理的估算。
软件计划的主要内容包括所采用的软件生命周期模型、开发人员的组织、系统解决方案、管理的目标与级别、所用的技术与工具,以及开发的进度、预算和资源分配。
(2)分析阶段:
分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。
通过评审需求规格说明,确保对用户需求达到共同的理解与认识。
需求规格说明明确地描述了软件的功能,列出软件必须满足的所有约束条件,并定义软件的输入和输出接口。
(3)设计阶段:
设计阶段的目标是决定软件怎么做,设计人员依据软件需求规格说明文档,确定软件的体系结构,进而确定每个模块的实现算法、数据结构和接口等,编写设计说明书,并组织进行设计评审。
(4)实现阶段:
实现阶段是将所设计的各个模块编写成计算机可接受的程序代码,与实现相关的文档就是源程序以及合适的注释。
(5)测试阶段:
在设计测试用例的基础上,测试软件的各个组成模块。
然后,将各个模块集成起来,测试整个产品的功能和性能是否满足已有的规格说明。
(6)维护阶段:
一旦产品已交付运行之后,对产品所做的任何修改就是维护。
维护是软件过程的一个组成部分,应当在软件的设计和实现阶段充分考虑软件的可维护性。
维护阶段需要测试是否正确地实现了所要求的修改,并保证在产品的修改过程中,没有做其他无关的改动。
3、在使用螺旋模型开发软件的过程中,从核心开始,螺旋的第一圈可能产生软件的规格说明,接下来的螺旋可能用于开发一个原型,随后是软件的更完善的版本。
经过计划区域的每一圈是为了调整项目计划,基于从用户评估得到的反馈,调整费用和进度。
沿螺旋线自内向外每旋转一圈,便开发出一个更为完善的、新的软件版本。
1、运行正确的程序就是高质量的程序吗?
请加以解释。
2、一个程序能够既正确又不可靠吗?
3、怎样理解"
质量是免费的"
这句话?
4、软件质量保证的任务是什么?
它涉及到哪几类人员?
5、试说明CMM模型的框架结构。
答案:
1、
"
运行正确"
的程序不见得就是高质量的程序。
这个程序也许运行速度很低并且浪费内存,也许代码写得一塌糊涂,除了开发者本人谁也看不懂也不会使用。
应该说,正确性只是反映软件质量的一个因素而已。
2、软件的功能正确并不代表软件是可靠的。
可靠性是指在一定的环境下,在给定的时间内系统不发生故障的概率。
由于无法对软件尽心彻底的测试,因此即使软件的某个功能是正确的,软件中潜在的错误也可能导致其不可靠,如"
2000"
年问题就是如此。
3、质量管理的基本思想不是尽量减少错误,而是争取第一次把事情完全做好,从而实现"
零缺陷"
。
我们常常会出现不符合质量标准的问题,也就是有些工作没有做到第一次就做好,为此需要进行一系列的补救,从而产生了额外的支出,包括时间、金钱和精力,由此产生了质量损失。
如果我们能够第一次就将事情做好,那么就避免了质量损失。
4、软件质量保证(SQA,SoftwareQualityAssurance)的任务主要包括以下方面:
(1)制定项目的SQA计划,包括需要的评价和评审、项目采用的标准、错误的报告与跟踪、SQA的文档等;
(2)参与开发项目的软件过程描述,为软件开发选择合适的过程;
(3)复审各项软件工程活动,识别、记录和跟踪各种偏差,并核实是否已经纠正;
(4)检查指定的软件产品,识别、记录和跟踪各种偏差,并核实是否已经纠正;
(5)记录软件过程和软件产品的所有不合格,将其报告给高级管理者,并跟踪直至纠正;
(6)协调变更的控制和管理,帮助收集和分析软件度量信息。
这些活动与两种人员相关:
(1)做技术工作的软件工程师;
(2)负责质量保证的计划、监督、记录、分析和报告工作的SQA小组。
5、CMM模型是为了指导软件开发组织,通过确定当前过程的成熟度,并识别出执行软件过程的薄弱环节,通过解决对软件质量和过程改进至关重要的若干问题来形成对其过程的改进策略,通过关注并认真实施一组有限的关键实践活动,稳步地改善其全组织的软件过程,使全组织的软件过程能力持续增长。
CMM模型将软件过程从无序到有序的进化过程分成几个阶段,并将这些阶段排序,形成一个逐层提高的平台,使在每个平台上的改进能为达到下一个平台奠定基础。
CMM模型由5个成熟度等级构成,且每一个等级形成了一个必要的基础,从此基础出发才能达到下一个等级,因此软件能力成熟度等级的提高是一个循序渐进的过程。
除第一级之外,CMM的每个等级都是按完全相同的结构构成的,每一级包含了实现这一级目标的若干关键过程域,每个关键过程域进一步包含若干关键实施活动,当关键过程域的这些关键实践都得到实施时,就能够实现该关键过程域的目标。
过程能力等级
特点
关键过程域
1初始级
软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力;
管理是反应式(消防式)。
2可重复级
建立了基本的项目管理过程来跟踪费用、进度和功能特性。
制定了必要的过程纪律,能重复早先类似应用项目取得成功。
需求管理
软件项目计划
软件项目跟踪和监督
软件子合同管理
软件质量保证
软件配置管理
3已定义级
已将软件管理和工程文档化、标准化,并综合成该组织的标准软件过程。
所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。
组织过程定义
组织过程焦点
培训程序
集成软件管理
软件产品工程
组间协调
同级评审
4已管理级
收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。
定量过程管理
软件质量管理
5优化级
过程的量化反馈和先进的新思想、新技术促进过程不断改进。
缺陷预防
技术变更管理
过程变更管理
1、需求工程包括哪些基本活动?
每一项活动的主要任务是什么?
2、原型化方法主要用于解决什么问题?
试说明这种方法的主要优缺点。
3、一个考务处理系统的要求如下,试画出该系统的数据流图。
(1)对考生送来的报名表进行检查;
(2)对合格的报名表编好准考证号码后将准考证送给考生,并将汇总后的考生名单送给阅卷站;
(3)对阅卷站送来的成绩表进行检查,并根据考试中心指定的合格标准审定合格者;
(4)填写考生通知单(内容包含考试成绩及合格∕不合格标志),送给考生;
(5)按地区、年龄、文化程度、职业、考试级别等进行成绩分类统计及试题难度分析,产生统计分析表。
1、需求工程分为需求开发和需求管理两个部分,而需求开发又可进一步分为需求获取、需求分析、规格说明和需求验证四个阶段。
这些基本活动的主要任务包括:
(1)需求获取(问题识别):
采集、识别和提取用户的需求,对问题和需求形成文档化的描述,使各种人员达成一致的理解和认可。
(2)需求分析:
分析和综合所采集的信息,建立系统的详细逻辑模型。
(3)需求规格说明:
编写软件需求规格说明书,明确、完整和准确地描述已确定的需求。
(4)需求验证:
评审软件需求规格说明,以保证其正确性、一致性、完备性、准确性和清晰性。
(5)需求管理:
定义需求基线,在整个项目过程中跟踪需求状态及其变更情况。
2、原型化方法主要用于解决在产品开发的早期阶段需求不确定的问题,用户、经理和其他非技术项目风险承担者发现在确定和开发产品时,原型可以使他们的想象更具体化。
这种方法的主要优点如下:
(1)明确并完善需求原型作为一种需求工具,它初步实现所理解的系统的一部分,用户对原型的评价可以指出需求中的许多问题。
(2)探索设计选择方案原型作为一种设计工具,可以探索不同的用户界面技术,使系统达到最佳的可用性,并且可以评价可能的技术方案。
(3)发展为最终的产品原型作为一种构造工具,是产品最初子集的完整功能实现,通过一系列小规模的开发循环,你可以完成整个产品的开发。
这种方法的主要缺点包括:
(1)用户看到一个正在运行的原型便以为产品即将完成,他们会要求不再进行产品重建,而只是对原型进行一些修改就交付。
由于原型没有考虑软件的总体质量和可维护性,交付原型往往造成"
欲速则不达"
的情况。
(2)开发人员为了快速构造原型,可能会采用不合适的操作系统或程序设计语言,也可能使用一些效率低的算法。
在一段时间的开发之后,他们往往已经习惯了这些选择,于是便在系统中参杂了这些不理想的选择。
3、
(1)顶层数据流图
(2)第1层数据流图
(3)第2层数据流图
加工1子图:
加工2子图:
一、填空题
(1)在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间是
关系。
(2)类A的一个操作调用类B的一个操作,且这两个类之间不存在其他关系,那么类A和类B之间是
(3)接口及其实现类或构件之间是
(4)一个汽车有四个轮子,那么类"
汽车"
和"
轮子"
之间的关系是
(5)学生与研究生之间是
(1)
关联
(2)依赖(3)
实现(4)
聚合(5)泛化
1解释下列术语,并举例说明之。
对象、类、属性、操作、关联、泛化、聚合、依赖
2简要说明类图和时序图的构成。
3在系统开发过程中为什么需要建立模型?
4与传统的结构化方法相比,面向对象开发方法具有什么优点?
5根据下面描述,画出相应的用例图。
在医生的办公室里,接待员、护士和医生使用病人记录和计划安排系统。
当病人第一次来这里看病时,接待员使用该系统来输入病人信息,并且安排所有的预约。
护士使用系统来跟踪病人每次看病的结果并输入护理病人的信息,如医疗和诊断。
护士也可以访问这些信息以打印病人诊断结果或病人看病历史。
医生主要用这个系统来查看病人的病史,偶尔也输入病人医疗信息,但通常让护士输入这些信息。
(1)对象(Object)对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。
例如,中国就是一个对象。
(2)类(Class)类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。
例如,学生、人、树木等都是类。
(3)属性(Attribute)属性是用来描述对象静态特征的一个数据项。
例如,学生具有姓名、性别、年龄等属性。
(4)操作(Operation)操作是类的实例被要求执行的服务,具有名字和参数列表。
例如,学生具有入学注册、选课等操作。
(5)关联(Association)关联是一种结构关系,说明一个事物的对象与另一个事物的对象之间的联系。
例如,学生与课程之间的关系就是关联,一个学生可以选修多门课程,一门课程也可以被多个学生选修。
(6)泛化(Generalization)泛化是一种一般事物(父类)和特殊事物(子类)之间的关系。
例如,学生与研究生之间是泛化关系,研究生是一类特殊的学生。
(7)聚合(Aggregation)聚合是一种特殊类型的关联,描述了整体和部分间的结构关系。
例如,学校和系之间存在聚合关系,系是学校的一个组成部分。
(8)依赖(Dependency)依赖是一种使用关系,描述了一个事物发生变化会影响到另一个使用它的事物。
例如,课程表使用课程,二者之间是依赖关系。
2、在系统中,类图由类、类的属性和操作以及类之间的各种联系所组成。
下图显示了计算机及其组成部分,如处理器、内存、键盘、硬盘、显示器等。
时序图表示对象之间的交互顺序,它由角色、对象、生命线和消息组成,其中角色代表与系统交互的外部事物。
下图显示了时序图的一种通用表示方法。
3、在系统开发过程中,建立模型的一个重要原因在于描述系统的复杂性。
信息系统十分复杂,而且系统的某些部分难以明了。
系统各个部分的模型有助于问题的简化,并能够使分析人员的精力一次只集中在系统的几个方面上。
同时,分析人员需要收集和处理大量的信息,模型提供了以一种容易理解的形式为后期使用存储信息的方法。
建立模型的另一个主要原因是便于交流。
开发人员可以使用模型讨论和交流系统的设计方案,用户可以从模型中更好地理解新系统所能提供的各种可能的功能,因此,模型在支持小组人员之间和与用户的交流过程中起着重要的作用。
最后,模型为以后的软件维护和升级提供了文档。
由于系统的复杂性,需要建立多个模型来涵盖细节信息,还需要使用许多不同类型的模型在不同的细节层次(或不同抽象层次)上表现系统,既包括在高层次上对系统的概括,也包括针对系统某一方面的细节描述。
4、面向对象方法与传统的软件开发方法相比,具有许多显著的优点,其主要优点如下:
(1)按照人类的自然思维方式,面对客观世界建立软件系统模型,有利于对问题域和系统责任的理解,有利于人员交流。
(2)在整个开发过程中采用统一的概念和模型表示,填平了语言之间的鸿沟,使得开发活动之间平滑过渡。
(3)对象所具有的封装性和信息隐蔽等特性,使其容易实现软件复用。
对象类可以派生出新类,类可以产生实例对象,从而实现了对象类的数据结构和操作代码的软构件的复用。
另外,面向对象程序设计语言的开发环境一般预定义了系统动态连接库,提供大量公用程序代码,避免重复编写,提高了开发效率和质量。
(4)在面向对象的方法中,系统由对象构成,对象是一个包含属性和操作两方面的独立单元,对象之间通过消息联系。
这样的系统一旦出错,容易定位和修改,系统的可维护性好。
5、
一、判断题
(1)测试是为了验证软件已正确地实现了用户的要求。
(2)白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能要求。
(3)黑盒测试的测试用例是根据程序内部逻辑设计的。
(4)为了快速完成集成测试,采用一次性集成方式是适宜的。
(5)在软件开发过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。
答案1、错。
测试的目的是尽可能多地发现软件中的错误,其附带的收获才是验证该软件已正确地实现了用户的要求。
2、对
3、错。
黑盒测试主要是根据程序的有关功能规格说明和覆盖准则来设计测试用例,进行测试的,不是根据程序的内部逻辑来设计测试用例。
4、错。
采用一次性集成方式进行模块组装,往往成功率很低,而且出现错误时,不容易确定问题出现在什么地方,因此应采用增量式集成方式,可以把出错的范围局限到少数模块之中。
5、错。
在软件开发过程中,发现错误越早,则为修复和改正错误所花费的代价就越低。
反之,发现错误越晚,则为修复和改正错误所花费的代价就越高。
1什么是软件测试?
软件测试与调试有什么区别?
2软件测试包括哪些类型的测试?
这些测试之间的区别是什么?
3针对以下问题:
某一种8位计算机,其十六进制常数的定义是以0x或0X开头的十六进制整数,其取值范围为-7f~7f(不区分大小写字母),如0x13、0x6A、-0x3c。
请采用等价类划分的方法设计测试用例。
问答题答案
1、软件测试是为了发现错误而执行程序的过程。
或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
软件测试与调试在目的、技术和方法等方面存在很大的区别,主要表现在如下方面:
(1)测试是为了发现软件中存在的错误;
调试是为了证明软件开发的正确性。
(2)测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;
调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。
(3)测试是有计划的,需要进行测试设计;
调试是不受时间约束的。
(4)测试经历发现错误、改正错误、重新测试的过程;
调试是一个推理的过程。
(5)测试的执行是有规程的;
调试的执行往往要求开发人员进行必要推理以至知觉的"
飞跃"
(6)测试经常是由独立的测试组在不了解软件设计的条件下完成的;
调试必须由了解详细设计的开发人员完成。
(7)大多数测试的执行和设计可以由工具支持;
调式时,开发人员能利用的工具主要是调试器。
2、软件测试包括单元测试、集成测试、确认测试和系统测试等。
单元测试集中于单个模块的功能和结构的检验;
集成测试集中于模块组合的功能和软件结构检验;
确认测试主要检查软件是否符合合同要求,包括需求规格说明、设计规格说明和用户手册等;
系统测试集中检验系统所有元素之间协作是否合适,整个系统的性能和功能是否达到。
3、
输入条件
有效等价类
无效等价类
开头字符
由0x或0X开头
(1)
以字母开头以非0数字开头
(2)(3)
数值字符
数字或A—F的字母
(4)
A—F以外的字母
(5)
数值字符个数
≥1个
(6)
0个
(7)
数值
≥-7f且≤7f
(8)
<-7f
>7f
(9)(10)
用例1:
0x7F,
覆盖等价类
(1)(4)(6)(8)
用例2:
-0Xb,
用例3:
0X0,
用例4:
0x,
覆盖等价类
(1)(7)
用例5:
A7,
覆盖等价类
(2)
用例6:
-1A,
覆盖等价类(3)
用例7:
0X8h,
覆盖等价类
(1)(5)
用例8:
0x80,
覆盖等价类
(1)(4)(10)
用例9:
-0XaB,
覆盖等价类
(1)(4)(9)
用例1:
覆盖
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程