软件工程是我大三时的一门课程,因为要进行期末考试,特整理成文,
仅供参考。课本是:软件工程---理论与实践 【吕云翔 王昕鹏 邱玉龙 编著】
----------------------------------------------------------------------------------------------------------
复习大纲:
1 软件生命周期各阶段
2 简述软件测试要经过的步骤
3 软件复用
4 软件可维护性
5 ns图
6 路径覆盖测试用例的设计
7 对象模型图
------------------------------------------------------------------------------------------------------------------------------------------
1 软件生命周期各阶段
软件生命周期,书上讲的是传统的软件生命周期,一点都没有提到现代的软件生命周期,难道是没有?
传统软件生命周期分为6个阶段:1.可行性研究 2.需求分析 3.软件设计 4.编码 5.软件测试 6.软件维护
画图如下:
我对各个阶段的理解:
1.可行性研究:就是判断判断这个软件能不能编写,跟判断女人能不能生娃是一样的道理。
2.需求分析:就是分析软件有什么样的功能,跟分析男人有多少个女人是相通的。
3.软件设计:跟你家建房子前,请人看风水是相似的,就是设计你家的门口在哪个方向,
你家的厕所的位置放在哪里,你家的窗户的形状等等此类。注意呀,软件设计阶段只是设计
而已,并没有搬砖头来建房子。简单点,就是设计你这个软件有什么样的按钮呀?有什么
样的窗口呀?有什么样的类呀?有什么样的接口呀?....按钮的功能是什么呀?在窗口中可以干什么?
类有什么样的属性和方法呀?接口是干嘛用的?...都只是设计(说成定义也行)而已,并没有去实现,
这一阶段的任务是为第四阶段的【编码】做准备的,想想也是,如果没有功能的定义,你如何去实现功能呢?无米之炊了吧!...
注:软件设计分为概要设计和详细设计两个阶段。
4.编码:就是搬砖头建房子了,就是写代码嘛。
5.软件测试:就是测试你编写的软件,功能实现了没有呀。
软件测试的目的(常考题):软件测试的目的是发现软件产品中的缺陷,进而保证软件产品的质量。 //注意,是发现,不是修正哈。
6.软件维护:跟发廊差不多,就是等人来找你理发,用户使用你的软件出现了问题,就会来找你了,这就是软件维护。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2 简述软件测试要经过的步骤
软件测试的一般步骤(4个):1.单元测试 2.集成测试 3.系统测试 4.验收测试
画图如下:
测试步骤简要说明:
1.单元测试:单元测试是指对软件中最小的可测试单元进行检查和验证。如一个函数,一个过程或者一个类。
2.集成测试:集成测试是指在单元测试的基础上,对通过测试的单元模块组装成系统或子系统进行测试。
集成测试不关注各个模块的内部细节,而是关注模块之间的接口是否运行正常。
3.系统测试:系统测试是指将整个系统看作一个整体进行测试,包括对功能和性能以及软件所运行的软硬件环境进行测试。
4.验收测试:验收测试以用户测试为主,分为α测试和β测试。α测试指的是由用户、测试人员、开发人员等共同参与的内部测试,
β测试指的是完全交给最终用户进行测试。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 软件复用
这个书上没讲到吧,找度娘即可。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4 软件可维护性
影响软件可维护性的主要因素:1.可理解性 2.可测试性 3.可修改性
画图如下:
各个因素简要说明:
1.可理解性:
可理解性是指人们通过阅读软件产品的源代码和文档来了解软件的系统结构、功能、接口和内部过程的难易程度。可理解性高的软件产品
应该具备一致的编程风格,准确、完整的文档,有意义的变量名和模块名称,清晰的源程序语句等特点。
2.可测试性:
可测试性是指诊断和测试软件缺陷的难易程度。程序的逻辑复杂度越低,就越容易测试。透彻的理解源程序有益于测试人员设计出合理的
测试用例,从而有效地对程序进行检测。
3.可修改性
可修改性是指在定位了软件缺陷以后,对程序进行修改的难易程度。一般来说,具有较好的结构且编码风格好的代码比较容易修改。
提高软件可维护性的措施有一些几种:
1.建立完整的文档 2.采用先进的维护工具和技术 3.注重可维护性的评审环节
软件维护的副作用主要有3类(即产生新的bug):
1.修改代码的副作用 2.修改数据的副作用 3.修改文档的副作用
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5 .ns图(也称盒图)
NS图用类似盒子的矩形及矩形之间的嵌套来表示语句或语句序列。N-S内部没有箭头,因此,它所表示的控制流程不能随便进行转移。
N-S图的主要特点可以归结为:
(1)不允许随意的控制转移,有利于严格的结构化程序设计。
(2)可以很方便的确定一个特定控制结构的作用域以及局部数据和全局数据的作用域。
(3)可以很方便的表示嵌套关系以及模块之间的层次关系。
N-S基本符号如下图所示:
1.顺序型
2.选择型(相当于if...else...语句)
3.多分支选择型(相当于switch...case...语句)
4.循环型:相当于while(x){......}和do{......} while(x)
举例说明N-S图,求10!的算法用N-S图表示如下:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6 路径覆盖测试用例的设计
说明:路径覆盖的思想是覆盖被测试程序中所有可能的路径。
做题思路:先找出所有的路径(即从入口到出口有几条路),然后依次满足各条路径的条件即可。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7 对象模型图
这个有点长,推荐百度文库里面的一篇文档,个人觉得挺好:
对对象模型的通俗理解:
http://wenku.baidu.com/view/0f12597f27284b73f2425038.html
这里我主要说的是属性和方法(操作)的可见性,用符号表示的方法,截图如下:
举例如下:
-----------------------------------------------------------------------------------------------------------
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。