软件工程资料文档格式.docx
《软件工程资料文档格式.docx》由会员分享,可在线阅读,更多相关《软件工程资料文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
![软件工程资料文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/7/622887d4-5536-4d07-b1f7-e7890fc6bbae/622887d4-5536-4d07-b1f7-e7890fc6bbae1.gif)
17.软件需求分析时期的工作,能够分为四方面:
对问题的识别、分析与综合、编写需求分析文档以及需求分析评审。
18.在结构化分析方法中,用以表达系统内数据的运动情形的工具是数据流图。
19.软件设计将涉及软件的结构、过程和模块的设计,其中软件过程是指模块的操作细节。
20.模块的独立性是由内聚性和耦合性来量度的,其中内聚性是模块的功能强度。
21.在软件开发过程中常用图作为描述工具。
DFD确实是面向数据流分析方法的描述工具。
在一套分层DFD中,假如某一张图中有N个加工,那么这张图承诺有0~N张子图。
在一张DFD图中,任意两个加工之间有且仅有一条数据流。
在画分层DFD时,应注意保持父图与子图之间的平稳。
DFD中从系统的输入流到系统的输出流的一连串连续变换形成一种信息流,这种信息流可分为事件流和操纵流两大类。
22.软件设计中划分模块的一个准那么是高内聚低耦合。
两个模块之间的耦合方式中,内容耦合的耦合度最高,非直截了当耦合的耦合度最低。
一个模块内部的内聚种类中,功能内聚的内聚度最高,偶然内聚的内聚度最低。
23.黑盒测试是从用户观点的测试,白盒测试是从开发人员观点的测试。
24.为了把握软件开发各个环节的正确性和和谐性,人们需要进行确认和验证工作。
确认的目的是想证实在一给定的外部环境中软件的逻辑正确性,它包括需求规格说明确认和用户确认。
验证那么试图证明在软件生存期各个时期,以及时期间的逻辑和谐性、完备性和正确性。
25.一样来说,与测试数据无关的文档是项目开发打算。
26.依照国家标准GB8566-8运算机软件开发的规定,软件的开发和爱护分为八个时期,单元测试在编码时期完成。
单元测试〔编码时期〕;
集成测试〔设计时期〕;
确认测试〔需求分析时期〕。
27.在设计测试用例时,划分等价类是用得最多的一种黑盒测试方法。
在黑盒测试方法中,等价划分方法设计测试用例的步骤是:
〔1〕依照输入条件把数目极多的输入数据划分成假设干个有效等价类盒假设干个无效等价类。
〔2〕设计一个测试用例,使其覆盖尽可能多尚未覆盖的有效等价类,重复这一步,直至所有有效等价类均被覆盖。
〔3〕设计一个测试用例,使其覆盖仅一个尚未覆盖的无效等价类,重复这一步,直至所有无效等价类均被覆盖。
在实际应用中,一旦纠正了程序中的错误后,还应选择部分或全部原先差不多测试过的测试用例,对修改后的程序重新测试,这种测试称为回来测试。
28.单元测试在实现时期进行,它所依据的模块功能描述和内部细节及测试方案应在详细设计时期完成,目的是发觉编程错误。
集成测试所依据的模块说明书和测试方案应在概要设计时期完成,它能发觉设计错误。
确认测试应在模拟的环境中进行强度测试的基础上进行,测试打算应在需求分析时期完成。
29.软件测试时期的差不多任务应当是依照软件开发各时期的文档资料和程序的内部结构,精心设计一批〝高产〞的测试用例,利用这些测试用例执行程序,找出软件中潜藏的各种错误和缺陷。
30.测试用例不仅要选用合理的测试输入数据,还需要选用不合理的测试输入数据,如此能更多地发觉错误,提高程序的可靠性。
关于不合理的测试输入数据,程序应拒绝执行,并给出相应的提示。
31.动态测试指通过运行程序发觉错误。
对软件产品进行动态测试时使用黑盒测试法和白盒测试法。
32.静态测试指被测试程序不在机器上运行,而是采纳人工检测和运算机辅助静态分析的手段对程序进行检测。
33.黑盒测试依据软件需求规格说明,检查程序是否满足功能要求。
因此,黑盒测试又称为功能测试或数据驱动测试。
34.白盒测试以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部数据结构和运行状态是否有错,程序的语句和条件与预期的状态是否一致。
白盒测试又称为结构测试。
35.在差不多路径测试中,独立路径是指包括一组往常没有处理过的上层调用模块的一条路径。
从程序图来看,一条独立路径是至少包含有一条测试输入数据的边的路径。
37.软件测试的目的是发觉软件错误。
38.软件测试用例要紧由测试输入数据和测试的预期结果两部分组成。
39.与设计测试用例无关的文档是项目开发打算。
40.软件测试是软件质量保证的要紧手段之一,测试的成本已超过软件开发成本的30%以上。
因此,提高测试的有效性专门重要。
41.〝高产〞的测试是指用适量的测试用例发觉被测试程序尽可能多的错。
42.假如想要进行成功的测试,为其设计测试用例要紧依靠于测试人员的体会。
43.使用白盒测试方法时,确定测试数据应依照程序的内部结构和指定的覆盖标准。
44.在用逻辑覆盖法设计测试用例时,有语句覆盖、分支覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖等。
其中路径覆盖是最强的覆盖准那么。
45.在设计测试用例时,等价类划分是用得最多的一种黑盒测试方法。
46.在黑盒测试中,着重检查输入条件的组合的测试用例设计方法是因果图法。
47.单元测试将依照在详细设计时期中产生的规格说明进行。
48.集成测试打确实是在概要设计时期制定的。
49.确认测试打确实是在需求分析时期制定的。
50.软件的集成测试最好是由不属该软件开发组的软件人员承担,以提高集成测试的成效。
51.从已发觉故障的存在到找到准确的故障位置并确定故障的性质,这一过程称为调试。
52.统计资料说明,软件测试的工作量占整个软件开发工作量的40%~50%。
53.软件测试打确实是一些文档,它们描述了关于预定的测试活动将要采取的手段。
54.IBM公司的统计资料说明,使用静态测试的方法最高能够查出在测试中查出的全部软件错误的70%。
55.黑盒测试方法的优点是可发觉实现功能需求中的错误。
56.白盒测试方法的优点是可按软件内部结构测试。
57.等价类划分完成后,就可得出等价类表,它是确定测试用例的基础。
58.由因果图转换出来的判定表是确定测试用例的基础。
59.软件测试的目的是发觉软件的错误。
为了提高测试的效率,应该选择发觉错误的可能性大的数据作为测试数据。
使用白盒测试方法时,确定测试数据应依照程序的内部逻辑和指定的覆盖标准。
与设计测试数据无关的文档是项目开发打算。
软件的集成测试工作最好由承担,以提高集成测试的成效。
60.测试过程需要三类输入:
软件配置、测试配置和测试工具。
对测试结果进行结果分析,出错那么排错,通过数据出错率进行可靠性分析。
61.程序的三种差不多操纵结构是顺序,条件,循环。
它们的共同点是只有一个入口和一个出口。
结构化程序设计的一种差不多方法是逐步求精法。
软件测试的目的是发觉程序中的错误。
软件调试的目的是找出错误所在并改正之。
62.
(1)对可靠性要求专门高的软件,例如操作系统,由第三者对源代码进行逐行检查。
代码审查
(2)已有的软件被改版时,由于受到变更的阻碍,改版前正常的功能可能发生专门,性能也可能下降。
因此,对变更的软件进行测试是必要的。
回来测试
(3)在意识到被测试模块的内部结构或算法的情形下进行测试。
白盒测试
(4)为了确认用户的需求,先做出系统的要紧部分,提交给用户试用。
原型
63.软件测试方法可分为黑盒测试法和白盒测试法两种。
黑盒测试法是通过分析程序的功能来设计测试用例的方法。
除了测试程序外,它还适用于对需求分析时期的软件文档进行测试。
白盒测试法是依照程序的内部逻辑来设计测试用例的方法。
除了测试程序外,它也适用于对软件详细设计时期的软件文档进行测试。
白盒法测试程序经常按照给定的覆盖条件选取测试用例。
判定覆盖比语句覆盖严格,它使得每一个判定的每一条分支至少经历一次。
判定/条件覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。
多重条件覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。
单元测试一样以白盒法为主,测试的依据是模块功能规格说明。
64.集成测试也叫做组装测试或联合测试。
通常,在单元测试的基础上,将所有模块按照设计要求组装成为系统。
子系统的集成测试专门称为部件测试,它所做的工作是要找出子系统和系统需求规格说明之间的不一致。
需要考虑的问题是:
在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;
一个模块的功能是否会对另一个模块的功能产生不利的阻碍;
各个子功能组合起来,能否达到预期要求的父功能;
全局数据结构是否有问题;
单个模块的误差累积起来是否会放大。
65.软件测试中常用的静态分析方法是引用分析和接口分析。
接口分析用于检查模块或子程序间的调用是否正确。
分析方法〔白盒方法〕中常用的方法是路径测试方法。
非分析方法〔黑盒方法〕中常用的方法是等价类方法和因果图方法。
因果图方法依照输出对输入的依靠关系设计测试用例。
66.等价类划分是一种典型的黑盒测试方法方法,也是一种专门有用的重要的测试方法。
使用这一方法,完全不考虑程序的内部结构。
用所有可能输入的数据来测试程序是不可能的,只能从全部可供输入的数据中选择一个子集进行测试。
等价类是指某个输入域的集合,在该集合中,各个输入数据关于揭露程序中的错误是等效的。
67.黑盒测试方法的缺点是不可测试软件的特定部位和无法测试未实现功能需求的软件的内部缺陷。
68.白盒测试方法的缺点是不能发觉功能需求中的错误和无法检验软件的外部特性。
二.判定题
(1)用黑盒法测试时,测试用例是依照程序内部逻辑设计的。
〔×
〕
(2)尽量用公共过程或子程序去代替重复的代码段。
(3)测试是为了验证该软件已正确地实现了用户的要求。
(4)关于连锁型分支结构,假设有n个判定语句,那么有2n条路径。
〔√〕
(5)尽量采纳复合的条件测试,以幸免嵌套的分支结构。
(6)GOTO语句概念简单,使用方便,在某些情形下,保留GOTO语句反能使写出的程序更加简洁。
(7)发觉错误多的程序模块,残留在模块中的错误也多。
(8)黑盒测试方法中最有效的是因果图法。
(9)在做程序的单元测试时,桩〔存根〕模块比驱动模块容易编写。
(10)程序效率的提高要紧应通过选择高效的算法来实现。
三.应用题
1.求一组数组中的最大数,数组表示为A〔n〕,n=1,2……n的自然数。
(10分)
请画出程序流程图〔4分〕
请画出该算法的N-S图〔3分〕
请用PAD图来表示该算法〔3分〕
答案:
2、某银行运算机储蓄系统的工作流程大致如下:
储户填写的存款单或取款单由业务员键入系统,假如是存款那么系统记录存款人的姓名、住址〔或号码〕、身份证号码、存款类型、存款日期、到期日期、利率及密码〔可选〕等信息,并印出存款单给储户;
假如是取款而且存款时留有密码,那么系统第一核对储户密码,假设密码正确或存款时未留密码,那么系统运算利息并印出利息清单给储户。
请用数据流图描画本系统的功能。
并画出系统的E-R图。
DFD图:
ER图:
3、试用N-S图和PAD表示下面程序流程图,并运算它们的McCabe复杂性度量.〔差不多路径测试法的 环复杂度〕。
〔10%〕
解答:
4、某培训中心要研制一个运算机治理系统。
它的业务是:
将学员发来的信件收集分类后,按几种不同的情形处理。
1)假如是报名的,那么将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查该课程是否额满,然后在学生文件、课程文件上登记,并开出报告单交财务部门,财务人员开动身票给学生。
2)假如是想注销原先已选修的课程,那么由注销人员在课程文件、学生文件和帐目文件上做相应的修改,并给学生注销单。
3)假如是付款的,那么由财务人员在帐目文件上登记,也给学生一张收费收据。
要求:
1〕.对以上问题画出数据流程图。
(8分)
2〕.画出该培训治理的软件结构图的主图。
四.运算例题:
1.如下图的程序有三条不同的路径。
分别表示为L1(a→b)、L2(a→c→d)、L3(a→c→e),或简写为ace、abd、abe及acd。
依照判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖等五种覆盖标准,写出满足相应覆盖标准的最小测试用例组。
解:
判定覆盖:
x=90,y=90路径覆盖:
x=90,y=90
x=50,y=50x=50,y=50
x=90,y=70x=90,y=70
条件覆盖:
x=90,y=90条件组合覆盖:
x=50,y=50x=90,y=70
x=80,y=70x=90,y=30
x=70,y=90x=70,y=90
x=30,y=90
判定-条件覆盖:
x=90,y=90x=70,y=70
x=50,y=50x=50,y=50
x=80,y=70x=50,y=50
x=70,y=90
2.下面是快速排序算法中的一趟划分算法,其中datalist是数据表,它有两个数据成员:
一是元素类型为Element的数组V,另一个是数组大小n。
算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey(),一是交换两数组元素内容的操作Swap():
intPartition(datalist&
list,intlow,inthigh){//在区间[low,high]以第一个对象为基准进行一次划分,k返回基准对象回放位置。
intk=low;
Elementpivot=list.V[low];
//基准对象
for(inti=low+1;
i<
=high;
i++)//检测整个序列,进行划分
if(list.V[i].getKey()<
pivot.getKey()&
&
++k!
=i)
Swap(list.V[k],list.V[i]);
//小于基准的交换到左侧去
Swap(list.V[low],list.V[k]);
//将基准对象就位
returnk;
//返回基准对象位置
}
(1)试画出它的程序流程图;
(2)试利用路径覆盖方法为它设计足够的测试用例〔循环次数限定为0次,1次和2次〕。
〔1〕
〔2〕
3.设要对一个自动饮料售货机软件进行黑盒测试。
该软件的规格说明如下:
〝有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。
假设投入1元5角硬币,按下〝可乐〞、〝雪碧〞或〝红茶〞按钮,相应的饮料就送出来。
假设投入的是2元硬币,在送出饮料的同时退还5角硬币。
〞
(1)试利用因果图法,建立该软件的因果图;
(2)设计测试该软件的全部测试用例。
4.假如对一个长度为100000条指令的程序进行集成测试期间记录下面的数据:
a.7月11日:
集成测试开始,没有发觉错误。
b.8月2日:
总共改正了100个错误,现在MTTF=0.4h。
c.9月1日:
总共改正了300个错误,现在MTTF=2h。
〔1〕估量程序中的错误总数。
〔2〕为使MTTF达到10h,必须测试和调试那个程序多长时刻?
〔1〕因为:
因此:
得K=1000,ET=350。
因此程序中的错误总数约为250个。
〔2〕设MTTF=10
那么:
由可靠性累积曲线EC(t)=ET(1-e-K1t),
得
100=350(1-e-160K1)
300=350(1-e-320K1)
因此,3-3*e-160K1=1-e-320K1
2=3*e-160K1-e-320K1
设x=e-160K1
有x2–3x+2=0
解得x1=2,x2=1,
K1=ln(x1)/(-160)=-0.693/160=0.00433。
因为ln(x2)/(-160)=0,舍去
代入:
340=350(1-e-K1t)=350(1-e-0.00433t)
350e-0.00433t=10
t=(ln(35))/0.00433=821(小时)
因此求得为使MTTF=10,测试和调试该程序需要花费821小时。
五.软件工程心得体会
〔一〕纸上得来终觉浅,觉知此事要躬行
理论知识用于指导实践,亲躯体验才能领会软件工程的妙用。
尽管软件工程这门课程没有安排实验课时,课后却要花费大量的时刻去实践。
我感受到学习这门课花费了大量的时刻摸索,从而换取了宝贵的体会。
学习软件工程的过程是痛楚的,它差不多不单纯是一种思想,而是处世的态度。
开发软件必须严谨求实,脉络清晰,还需要那么一点点敬业精神,牺牲部分休息娱乐的时刻。
运用工程学的思想开发软件,就要跳出原本只注重编程的狭隘圈子,从宏观上把握软件的生命周期,强调整体性与和谐性,不能任意妄为。
专门是需求分析、总体设计和详细设计时期的工作,更要做到细致、准确,为后期工作做好铺垫。
〔二〕吾生也有涯,而知也无涯
学习永无止境,在以后还需加强的方面有:
1分工合作:
起初,对软件工程处于一知半解的状态,分工比较纷乱。
在划分模块后明确了各自分工,慢慢形成良性循环。
团队合作十分重要,争议因此存在,但通过讨论、协商,群策群力,在不断磨合中能够达成一致与默契。
团队成员中能力各有高下,互相尊重,各取所长,不宜妄自菲薄。
组长多加和谐,组员积极配合,才能合作愉快。
2学习能力:
学习能力表达在能尽快同意新的知识,顺应变化,学为所用。
树立终身学习的理念,摸索有效的学习方式。
MSDN的中文网站确实是我学习的得力助手,给予我专门多关心。
此外,在开小组讨论会时,大伙儿各抒己见,也开阔了我的思路。
3有关系统:
文档不够详尽,导致标准不统一。
模块集成时,做出来的半成品与原本的设计方案有出入。
调试时显现了一些小问题,而个别次要的模块还未开发。
设计仍有不太合理处,需要进行完善性爱护。
六.软件工程的三段论起源及进展趋势
软件工程(SoftwareEngineering,简称为SE)是针对软件这一个有专门性质的产品的工程化方法。
软件工程涵盖了软件生存周期的所有时期,并提供了一整套工程化的方法,来指导软件人员的工作。
一、软件工程定义
〝工程〞是科学和数学的某种应用,通过这一应用,使自然界的物质和能源的特性能够通过各种结构、机器、产品、系统和过程,成为对人类有用的东西。
因而,〝软件工程〞确实是科学和数学的某种应用,通过这一应用,使运算机设备的能力借助于运算机程序、过程和有关文档成为对人类有用的东西。
软件工程的成果是为软件设计和开发人员提供思想方法和工具,而软件开发是一项需要良好组织,严密治理且各方面人员配合协作的复杂工作。
软件工程正是指导这项工程的一门科学。
软件工程在过去一段时刻内差不多取得了长足的进展,能够说在软件的开发和应用中起到了其应有的作用。
高质量的软件工程能够保证软件工业中生产的软件是高质量的产品、用户中意的产品。
然而,对软件工程的界定,总是存在一定的差异。
软件工程应该包括哪些知识?
那个地点我们引用IEEE在软件工程知识体系指南(SEWBOK:
GuidetotheSoftwareEngineeringBodyofKnowledge2004Version)中的定义,它是如此定义软件工程的:
1)软件开发、实施、爱护的系统化、规范化、质量化的方法的应用,也确实是软件的应用工程2)对上述方法的研究。
IEEE的软件工程知识体系指南(SWEBOK)中界定了软件工程的10个知识领域(KAs:
KnowledgeAreas)即软件需求(Softwarerequirements)、软件设计(Softwaredesign)、软件构建(Softwareconstruction)、软件测试(Softwaretesting)、软件爱护(Softwaremaintenance)、软件配置治理(Softwareconfigurationmanagement)、软件工程治理(Softwareengineeringmanagement)、软件工程过程(Softwareengineeringprocess)、软件工程工具和方法(Softwareengineeringtoolsandmethods)和软件质量(SoftwarequalITy)。
这10个知识领域的每个知识领域还包括专门多子领域。
二、软件工程起源的三段论
那个地点的三段论是指从时刻角度看软件工程起源的三个时期。
本世纪中期软件产业从零开始起步,在短短的50年的时刻里迅速进展成为推动人类社会进展的龙头产业。
随着信息产业的进展,软件对人类社会性越来越重要。
软件进展的五十年历史中,人们对软件的认识经历了一个由浅到深的过程。
第一个写软件的人是Ada(AugustaAdaLovelace),在1860年代他尝试为Babbage(CharlesBabbage)的机械式运算机写软件。
尽管失败了,但他将永久载入了运算机进展的史册。
1950年代,软件相伴着第一台电子运算机的问世产生了。
以写软件为职业的人也开始显现,他们多是通过训练的数学