软考笔记4-软件工程
考纲概要
●软件生存周期与软件生存周期模型
?瀑布模型、演化模型、螺旋模型、喷泉模型(Ⅱ)
●软件开发方法
?结构化方法、面向对象方法的基本概念(Ⅱ)
●软件工具与软件开发环境
?分析工具、设计工具、编程工具、测试工具、维护工具、CASE(Ⅰ)
●软件开发项目管理
?成本估算、风险分析、进度管理(Gantt图、PERT图)、人员管理(Ⅰ)
课时1:
软件危机:无组织无纪律的开发方式
软件工程:系统化的、严格约束的、可量化的方法应用于软件开发、运维,即将工程化应用于软件。
软件工程三要素:方法、工具、过程。
软件生命周期:
从生产直到报废的生命周期。
需要经历:
问题定义→可行性分析→需求分析→总体设计→详细设计→编码→测试→运行→维护
总共6个阶段:
计划、分析、
设计、编码、测试、
维护
适用范围:
需求明确且很少变更的项目。
瀑布模型和演化模型的结合,增加了
风险分析的环节。
每一圈都经过制定计划、风险分析、实施工程、客户评价等环节,每次得到新的模型,螺旋上升。
课时2:
软件开发方法:
1、结构化分析和设计
2、面向结构
3、面向对象
结构化分析和设计
1、结构化分析(SA)
面向数据流的需求分析方法,利用图形表达用户需求。
数据流图、数据字典
2、结构化设计
面向数据流的设计方法,以分析阶段产生的文档为基础,逐步求精和模块化。
面向数据结构的设计
根据输入/输出数据结构,导出程序结构
Jackson方法和Warnier方法是最著名的2个面向数据结构的设计方法。
面向对象的分析与设计
是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。
面向对象= 对象+ 类+ 继承+ 通信
1、对象
描述客观事物的一个实体,系统的基本单位
属性,也叫状态或数据,对象的静态特征
操作,也叫方法或服务,规定了对象的行为,动态特征。
封装,一种信息隐蔽技术,用户可以看见对象封装界面上的信息,内部实现对用户是隐蔽的
2、类(class)
一组具有相同属性和操作的对象的集合
类中的每一个对象称为这个类的一个实例(instance)。
类是创建对象的模板,每个类都具有相同的结构和行为。
3、继承(inheritance)
继承是指特殊类(子类)的对象拥有一般类(父类)的全部属性与服务。
父类中定义了所有子类的公共属性和操作,
子类中定义了自己特有的属性和操作,还可以继承父类的属性和操作,也还可以重写父类的实现方法。
单一继承、多重继承
4、多态性
同一个操作作用到不同的对象上,产生不同的执行结果。
5、消息
对象间通信的手段,包括:接收对象名、调用操作名、适当参数
只需要告诉接收对象需要完成什么操作,由接收者解释执行,消息的请求并不在意具体怎么实现。
面向对象的优点:
1、与人类习惯思维方法一致
2、稳定性好
3、可重用性好
4、较易开发大型软件产品
5、可维护性好
课时3:
软件测试(一)
目的:发现软件的错误和缺陷
概念:
测试用例
测试用例由测试数据和预期结果构成的。
(考选!)
●为了发现错误,应尽可能设计可以暴露错误的测试用例。
●好的测试用例是发现至今为止未发现的错误。
●一次成功的测试用例是发现了至今为止未发现的错误。
测试准则
(考选!)
应该尽早地、不断地进行测试,要贯穿于软件开发过程的始终。
所有的用户测试都应该追溯到用户需求。
测试从小规模开始,到大规模。
应该远在测试之前就制定出测试计划(测试计划书等)。
在规划测试的时候,不应该设想程序中不会查出错误。
80%的错误可能出现在20%的程序模块中(二八法则)。
测试应该有独立的第三方人员进行,但一般单元测试是由开发人员自己进行的。对非法的、非预期的输入数据,也要像合法的数据一样编写测试用例。
测试时,不仅要检查程序是否完成了要做的事,还要看是否做了不应该做的事。测试只能证明软件中有错误,不能证明软件中没有错误。
测试分类:
要借助驱动模块(相当于测试模拟的主程序)和桩模块(子模块)
(1)驱动模块:被测模块的主程序,接收测试数据,调用测试模块。
(2)桩模块:代替被测模块调用的子模块,可以做少量的数据操作,并不需要将子模块
的所有数据都加进来,并不等价于子模块,但也不允许什么也不做,
软件维护
衡量可维护性的因素:可理解性、可测试性、可修改性
影响维护工作量的因素(了解):
●系统大小
●程序设计语言
●系统年龄
●数据库技术的应用
●先进的开发技术
课时4:
见上
课时5:
软件质量保证
软件质量指软件与明确定义的和隐含的需求相一致的程度。
软件质量的3方面要求:
●用户需求是度量软件质量的基础,不满足用户需求和超越用户需求都是没有用的。
●制定的标准定义了一组指导软件开发的准则,行业标准
●没有显式描述的隐含需求(如软件易维护、易扩展等)
软件质量特征:
软件质量保证:
定义:
为了保证软件系统充分满足用户要求的质量,而进行有计划、有组织的活动,提高产品质量。
质量保证手段:
●开发初期制定质量保证计划
●开发前选定制定开发标准、开发规范
●选择分析方法和工具,形成高质量的分析模型、设计模型
●严格执行阶段评审,及时发现问题
●进行阶段测试
●严格执行变更流程,需求变更的管控,防止变更蔓延。
●有完整的阶段文档
课时6:
项目管理-第一节
风险管理
风险管理是从识别到分析乃至采取对应措施等一系列过程。风险有有利的,也有有害的,但基本上关注的是有害的风险。
风险识别过程:
课时7:
项目管理-第二节
附录:
例1:白盒测试中的覆盖准测的强弱顺序。
例2:求项目进度期望和方差
套用上方公式,
可以根据各个期望求总的期望,但是不能根据各个方差求总方差。