软件工程基础知识
-- 软件工程基础知识
软件软件工程
第四章 软件软件工程
1. 软件工程是为了发现错误而执行的程序。
2. 测试用例由测试输入数据和与之对应的输出结果组成。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
3. 测试的三个步骤:单元测试、集成测试和确认测试。
4. 白盒测试是根据程序的内部逻辑设计的高度用例,黑盒测试是根据软件的各种规约设计的测试用例。
5. 逻辑覆盖是白盒测试用例设计方法。可以分为:语句覆盖、判定覆盖、判定条件覆盖、条件组合覆盖及路径覆盖。
6. 黑盒测试用例有:等价类划分、边值分析、错误猜测等。
学习难点:
1. 测试的两个阶段:通常,单元测试可放在编码阶段,对软件系统进行综合测试则是测试阶段的工作。
2. 软件的开发过程是一个自顶向下,逐步细化的过程,而测试过程则是信相反的顺序安排的自底向上,逐步集成的过程。
3. 单元测试主要采用白盒测试的测试用例,辅之以黑盒测试用例。
4. 集成测试是对各模快组装而成的系统进行测试,检查各模快间的接口的通信。通常采用黑盒测试。包括渐增式集成和非渐增式集成。
5. 确认测试检查软件的功能、性能及其他特征是否与用户的要求一致,它以软件需求书(亦称为需求规约)为依据,通常采用黑盒测试。
6. 在逻辑覆盖的各种覆盖的覆盖准则中,以语句覆盖的覆盖程度最弱,路经覆盖的覆盖程度最强。
7. 等价类划分、边值分析。
4.1.7面向对象方法
1. “面向对象=对象+类+继承+消息通信”。
2. 对象:它是一组属性及这组属性上专用的封装体。
3. 把具有相同特征和行为的对象归在一起就形成了类。
4. 继承:将几个类之间具有共性的东西抽取出来放在一般类中,而将各个类特有的东西方入在特殊类中分是描述,则建立起特殊类对一般类的继承。
5. 多态性:同一个操作用于不同的对象上可以有不同的解释,并产生不同的执行结果。与它相关的概念是动态绑定。
学习难点:
1. 对象的类型可以是以下7类:外部实体、住处结构、需要记忆的事件、角色、组织机构、位置、操作规程。
2. 消息是一个对象与另一个对象的通信单元,是要求某个对象的通信单元,是要求某个对象执行类中定义 的某个操作的规格说明。通常消息有以下4类。
3. 动态绑定:把函数调用与目标代码快的连接延迟到运行时进行。这样,在运行过程中,当一个对象发送消息请求服务,要根据接收对象的具体情况请求的操作与实现的方法进行连接。
4.1.8软件维护
1. 可以分为四类:改正性、适应性、完善性、预防性。
2. 修改程序的副作用有3种:修改代码的副作用、修改数据的副作用、修改文档的副作用。
3. 可维护性:软件能够被子理解、改正、适应及增强功能的容易程度。其中可理解性、可测试
性、可修改性是衡量软件可维护性的几个主要质量因素。
学习难点:
1. 在整个维护过程中:改正性维护占20%、完善性50%、适应性25%。
2. 用于维护的花费:20世纪90年代占到了90%。
3. 提高可维护性从五个方面入手:
建立明确的软件质量目标和优先级
使用提高软件质量的技术质量和工具
进行明确的质量保证审查、验收、周期性的维护审查
选择可维护性的程序设计语言
改进程序的文档
4.1.9
内容要点:
1. 软件项目管理包括进度管理、成本管理、质量管理、售货员管理、资源管理、标准化管理。管理的确良对象是进度、系统规模及工作量估算、经费、组织机构和售货员风险、质量、作业和环境配置等。
2. 完成软件项目所需的资源包括用以支持软件开发的工具(硬件及软件工具和人。
3. 软件成本估算是把开发的软件细分到每个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发的总工作量,从而算出总软件成本。
4. 软件开发项目成本估算的Putnam 模型是一种动态多变量模型。结构型成本估算的COCOMO 模型是一种静态单变量模型。
5. 对于较大的项目,需要采用图示的方法描述项目的进度,特别是表现各项任务之间进度的相互领带关系。有效的图示方法包括甘特图和PA R T 图。
6. 风险分析的活动主要有:风险识别、风险估算、风险评价、风险管理。
7. 风险分为项目风险、技术风险和商业风险。风险构成有性能风险成本风险、支持风险、进度风险。
8. 程序设计小组的组织形式有3种:主程序员小组、民主制(无主程序员)小组、层次式程序员小组。
学习难点:
1. 在软件计划和需求分析阶段,主要工作是由管理售货员和高级技术售货员完成,初级技术人员参与较少。待到对软件进行具体设计、编码及测试时,管理人员逐渐减少对开发工作的参与,高级技术人员主要在设计方面把关,大量的工作将由初级技术售货员完成。到了软件开发的后期,管理人员和高级技术人员又将投入很多的精力。
2. 在COCOMO 模型中,考虑开发环境,软件开发项目的类型可分为3种:组织型、嵌入开支和介于上述两面三刀种软件之间的半独立型。
3. 一个软件任务由一个人单独开发,生产率最高;而对于一个大型的软件项目,一个人单独开发时间太长,因此软件开发标准是必要的。但是软件开发级的规模太大,人数太多,会因人之间的交流造成生产率低。
4. 建立项目组织的原则:尽早落实责任、减少接口、责权均衡。
4.1.10
1. 软件质量的定义:与软件产品满足规定的和隐含质量的需求的能力有关的特征或特性的全体。
2. 软件质量我反映了软件的本质。讲座一个软件的质量,问题最终要归结到定义软件的质量特性。而定义一个软件的质量,就等价于为该软件定义一系列的质量特性。
3. McMall质量模型中的质量概念基于11个特性之上,而这11个特性分别面向软件产品的运行、修正、转移。他认为:特性是软件质量的反映,软件属性可用作评价准则,度量软件属性
可知软件质量的优劣。
4. ISO/IEC9126-1991质量特性标准中,建立了3个层次的质量模型。第一层称为质量特性,第二层称为质量子特性、第三层称为试题。该标准定义了6个质量特性,并推荐21个特性,但不作为标准。
5. 软件的质量保证就是为了向用户及社会提供满意的高质量的产品而进行的有计划、有系统的管理活动。这是面向消费者的活动。
6. 软件质量保证由各项任务构成,这些任务的参与者有两面三刀种人:软件开发者和质量保证人员。前者负责技术工作,后者负责质量保证的计划、监督、记录、分析及报告工作。
7. 软件开发人员通过采用可靠的技术方法和措施,进行曲正式的技术评审,执行计划周密的软件测试来保证软件产品的质量。软件质量保证人员则辅助软件开发组得到高质量的最终产品。这方面的工作包括:为项目制定SQA计划;参与开发该软件项目的软件过程描述;评审各项软件工程活动;审核指定的软件工作产品;记录软件工作及软件工作产品的偏差;跟踪问题的解决以及协调变更的控制与管理,并帮助收集分析软件度量的信息。
学习难点:
满足这些隐含的需求,软件质量也不能保证。
软件质量反映了3个方面的问题:软件需求是软件质量的基础,不符合需求的软件就不具备质量;规定了一组开发准用于指导软件开发,如果不遵守这些开发准则,软件质量就得不到保证;往往会有一些隐含的需求没有显示地提出来,如果软件只满足那些精确定义了的需求而没有
软件质量模型的特点是:把软件质量特性定义成分层模型,最基本的叫做质量特性,它由一些质量子特性定义和试题。质量子特性又可由它的一些质量子特性定义和度量。
软件包的质量保证活动,是涉及和个部门的部门间活动。为了顺利开展质量保证活动,事先明确部门间的质量保证业务,建立部门间的联合与协作的机制十分重要,这个机制就是质量保证体系。
协调软件开发使得混乱减少的技术叫做置管理。配置管理是一种标识、组织和控制修改的技术,目的是使错误达到最小并最有效地提高生产率。
软件维护和软件配置管理之间的区别是:维护是一组软件工程活动,它们发生于软件已交付给用户并已投入运行之后,软件配置管理是一组追踪和控制活动,它们开始于软件开发项目之时。
任何一项工程技术都有离不开标准,软件工程也不例外。软件产品标准定义了软件产品应当具有的属性;软件过程标准定义了软件过程应如何进行;评审规程则规定了设计应怎样组织。
软件工程标准的类型有:过程标准、产品标准、专业标准和记法标准。根据软件工程标准制定的机构和标准适用的范围有所不同,它可分为5个级别,即国际标准、国家标准、行业标准、企业标准及项目标准。