一、软件需求的定义:
就是系统必须完成的事情:包含功能需求(系统需要完成的业务功能)、非功能需求(可靠、容错、扩展、性能等)、设计约束(限制条件、补充规约,比如有的系统软件在IE6.0或win10下不能运行)三方面内容。另外,可验证性是需求的最基本特征。
二、需求工程,包含需求开发和需求管理
1、需求开发:需求捕获、需求分析、需求规格化和需求验证
2、需求管理:定义需求基线、处理需求变更、需求跟踪
3、需求捕获技术:用户访谈、用户调查、现场观摩、文档考古、联合讨论会。
三、名词解释
1、数据流图(DFD):将系统与外界实体的关系体现出来,从而清晰的界定出系统的范围。
2、数据字典:是一种很实用的有效的表达数据格式的手段,一般包含:“名称”、“何处使用/如何使用” 信息。
3、实体关系图(E-R图):E-R图中,椭圆表示属性,矩形表示实体,菱形表示联系。
四、软件设计原则
1、信息隐蔽
2、高内聚、低耦合
五、评审
1、设计评审:在开发时期的每个阶段,特别是设计阶段结束时都要进行严格的技术评审,尽量不让错误传到下一个阶段。设计评审一般采用评审会议的形式来进行。其实不仅仅是设计需要评审,所有的地方都需要评审。补充:管理评审、技术评审、论证、评估、审计。
六、软件测试
软件测试是为了发现错误而执行程序的过程,是根据程序开发阶段的规格说明及程序内部结构而精心设计的一批测试用例(输入数据及其预期结果的集合),并利用这些测试用例去运行程序,以发现程序错误的过程。
1、测试分类:不同的方法的分类
白盒、黑盒分别的测试方法。
α测试(内部开发环境测试)、β测试(实际环境测试)、、、
尽早的和不断地进行软件测试,系统测试应尽可能在实际运行使用环境下进行。
测试用例应当由测试输入数据和对应的预期输出结果这两部分组成;程序员应避免检查自己的程序;在设计测试用例时,应包括合理的输入条件和不合理的输入条件;充分注意测试中的群集现象。经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。严格执行测试计划,排除测试的随意性;应当对每一个测试结果做全面检查;妥善保存测试计划、测试用例、出错统计和最终分析报告,为软件维护提供方便。
测试不再只是一种仅在编码阶段完成后才开始的活动现在的软件测试被认为是一种应该包括在整个开发和维护过程中的活动,它本身是实际产品构造的一个重要部分。
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其它代码产生错误。在给定的预算和进度下,尽可能有效率的进行回归测试,需要对测试用例库进行维护并依据一定的策略选择相应的回归测试包。对测试用例库的维护通常包括删除过时的测试用例、改进不受控制的测试用例、删除冗余的测试用例、增添新的测试用例等。在软件生命周期中,即使一个得到良好维护测试用例库也可能变得相当大,这使每次回归测试都重新运行完整的测试包变得不切实际,时间和成本约束可能阻碍运行这样一个测试,又是测试组不得不选择一个缩减的回归测试包来完成回归测试。
模糊测试是指将一个随机的、非预期的数据源作为程序的输入,然后系统的找出这些输入所引起的程序失效。通过模糊测试,你将会抢在别人之前来揭示软件易受攻击的弱点。模糊测试现在已经发展成为一种最有效的软件安全性测试方法。
软件质量强调三个方面的内容:软件需求是测试软件质量的基础;开发标准定义了一组用于指导软件开发方式的准则;期望需求间接定义了用户对某些特性的需求。
2、软件测试又可分为:
(1)功能测试(2)可靠性测试(3)强度测试(4)性能测试(5)恢复测试(6)启动、停止测试(7)配置测试(8)安全性测试(9)可使用性测试(10)安装测试(11)过程测试(12)容量测试(13)文档测试(14)兼容性测试
Load Runner用作性能测试,QTP用作自动化测试。
代码审查和代码走查:代码审查是由若干程序员和测试员组成一个会审小组,通过阅读、讨论和争议对程序进行静态分析的过程。而代码走查是让与会者“充当”计算机,集体扮演计算机角色,让测试用例沿程序的逻辑运行一遍,随时记录程序的踪迹,供分析和讨论用。
七、软件维护
就是鱼丸!!
纠错性维护:纠正在开发阶段产生而在测试和验收过程没有发现的错误。其主要内容包括:
(1)设计错误(2)程序错误(3)数据错误(4)文档错误
适应性维护:为适应软件运行环境改变而作的修改。环境改变的主要内容包括:
(1)影响系统的规则或规律的变化;
(2)硬件配置的变化,如机型、终端、外部设备的改变等;
(3)数据格式或文件结构的改变;
(4)软件支持环境的改变,如操作系统、编译器或实用程序的变化等;
完善性维护:为扩充功能或改善性能而进行的修改。修改方式有插入、删除、扩充和增强等。主要内容包括:
(1)为扩充和增强功能而做的修改,如扩充解题范围和算法优化等;
(2)为改善性能而做的修改,如提高运行速度、节省存储空间等;
(3)为便于维护而做的修改,如为了改进易读性而增加一些注释等。
预防性维护:是将潜在的漏洞在实际发生之前就进行修复。
这4种维护都是在软件产品交付之后进行的。
八、软件过程管理
软件过程(Software Process)是人们建立、维护和演化软件产品整个过程中所有技术活动和管理活动的集合。软件过程管理集成了过程管理和项目管理,包括但不限于启动和范围定义、软件项目计划、项目实施、评审和评价,收尾及软件工程度量等。
软件过程改进的五条核心原则分别是:注重问题、强调知识创新、鼓励参与、领导层的统一、计划不断地改进。问题的解决是过程改进的核心;改进是一种知识的创新,软件过程改进是受知识的驱动的;改进是整个项目团队的主要工作;改进应该是一个不断持续的过程。软件过程改进一般从问题分析开始。