软件的定义:(1)指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求;(2)数据结构,它使得程序可以充分利用信息;(3)描述程序操作和使用的文档遗留软件的定义:年代久远的过时的软件。
软件如其他工程原则制造的制品的区别:软件传递了我们这个时代最重要的产品——信息。
软件特征和硬件特征的区别:(1)软件是设计开发的,而不是传统意义上生产制造的。
(2)软件不会“磨损”。
(3)虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的。
为什么说软件不会随着时间而演化的说法是错误的:不管其应用领域、软件规模或者复杂性如何不同,计算机软件都将随着时间的推移不断演化。
软件维护推动了软件演化,它通常是由以下情况引发的:程序纠错,调整软件以适应新的环境,满足用户新特性和功能的需求,以及对软件实施再工程以便在现代应用中发挥作用。
软件生命周期:软件的产生知道报废的生命周期,包括问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级和废弃。
软件工程的四个层次及之间的关系:工具、方法、过程和质量关注点。
软件工程的根基在于质量关注点;软件工程的基础是过程层;软件工程方法为构造软件提供技术上的解决方法;软件工程工具为过程和方法提供自动或半自动化的支持。
软件工程的主要目标是什么?基本目标是什么?软件工程的目标:从管理和技术两个方面开发和维护计算机软件,用低成本,开发出达标、高性能、易于移植、可靠性高的软件。
软件工程的基本目标是:优质、高产。
软件构建与软件部署的区别:软件构建是程序员对软件进行编码和测试,是基于程序员的;软件部署是用户对软件成品的使用和反馈,是基于客户的。
软件过程的定义:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
(2)在(1)所述方法的研究。
软件开发的原型模型的各个阶段:沟通、快速策划、建模快速设计、构建原型和部署交付品及反馈;循环执行以上步骤。
随着时间的推移,为什么软件需要不断演化?(1)环境运行环境的变化(2)用户需求的变化(3)用户业务需求的变化软件工程中基于构件的软件过程模型的主要优势:基于构件开发模型能够使软件复用,软件复用为软件工程师带来极大收益。
在目前环境下,为什么说增量过程模型被认为是最佳的软件开发方法:早期的增量可以有少量的人员实现;增量可以规避技术风险。
------------------------------------------------------------------------------------------------------------------------------------------------------------软件工程的通用框架以及框架活动:沟通、策划、建模、构建和部署;其中建模包括创建模型和设计,构建包括编码和测试。
惯例模型:规定了一套过程元素(框架活动、软件工程动作、任务、工作产品、质量保证以及每个项目的变更控制机制)①瀑布模型定义:传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。
瀑布模型的特点:1.阶段间具有顺序性和依赖性;2.推迟实现的观点;3.质量保证的观点。
瀑布模型的成功在很大程序上是由于它基本上是一种文档驱动的模型。
瀑布模型的主要优点:a.可强迫开发人员采用规范的技术方法;b.严格地规定了每个阶段必须提交的文档;c.每个阶段结束前必须正式进行严格的技术审查和管理复审。
瀑布模型的主要缺点:在可运行的软件产品交付给用户之前,用户只能通过文档来了解未来的产品是什么样的。
开发人员和用户之间缺乏有效的沟通,很可能导致最终开发出的软件产品不能真正满足用户的需求。
②快速原型模型定义:所谓“快速原型”,是快速建立起来的、可在计算机上运行的程序,它所能完成的功能往往是最终的软件产品所能完成的功能的子集。
原型是软件开发人员与用户沟通的强有力工具,因此有助于所开发出的软件产品满足用户的真实需求。
快速原型模型的主要优点是:A.使用这种软件过程开发出的软件产品通常能满足用户的真实需求;B. 软件产品的开发过程基本上是线性顺序过程。
③增量模型定义:增量模型也称为渐增模型增量模型的主要优点:A.能在较短时间内向用户提交可完成部分工作的产品;B.逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品,减少一个全新的软件给客户组织带来的冲击。
④螺旋模型定义:螺旋模型的基本思想是,使用原型及其他方法尽量降低风险。
理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。
螺旋模型所描述的软件过程主要适用于内部开发的大型软件项目。
使用螺旋模型开发软件,要求软件开发人员具有丰富的风险评估知识和经验。
螺旋模型主要有下述优点:A.有利于已有软件的重用;B.有助于把软件质量作为软件开发的一个重要目标;C.减少了过多测试或测试不足所带来的风险;D.软件维护与软件开发没有本质区别。
⑤喷泉模型定义:迭代是软件开发过程中普遍存在的一种内在属性。
在面向对象范型中,软件开发过程各阶段之间的迭代或同一阶段内各个工作步骤之间的迭代,比在结构化范型中更常见。
喷泉模型,是典型的面向对象生命周期模型,它充分体现了面向对象软件开发过程迭代和平滑过渡的特性。
叙述UP的5个阶段:起始:包括客户沟通和策划活动;细化:包括用户沟通和通用过程模型的建模活动;构建:包括编码和测试;转换:包括通用构建活动的后期阶段以及第一部分通用部署活动;生产:与通用过程的部署活动一致。
------------------------------------------------------------------------------------------------------------------------------------------------------------ 敏捷宣言:(1)个体和交互胜过过程和工具(2)可工作软件胜过宽泛的文档(3)客户合作胜过合同谈判(4)响应变化胜过遵循计划敏捷过程的三个假设(及敏捷过程):提前预测哪些需求是稳定的,哪些需求容易变更是很困难的,同样预测项目经行中客户的优先级的变更也是困难的2)对很多软件来说,设计和构建是交错进行的3)从制定计划的角度看,分析,设计,构建和测试并不向我们设想中那样容易预测敏捷原则(12项)敏捷团队的特点(成员及团队特点)XP 五要素掌握XP的阶段:使用面向对象方法作为推荐的开发范型。
包括策划、设计、编码和测试敏捷的实用技术,如重构、结对、敏捷建模等重构的定义:在编码完成之后改进代码设计。
IXP的6个实践主要的敏捷模型:XP,ASD,DSDM,SCRUM,Crystal,FDD,LSD敏捷建模的特点敏捷统一过程(AUP):建模,实现,测试,部署,配置管理及项目管理,环境管理------------------------------------------------------------------------------------------------------------------------------------------------------------ 需求工程的7个活动:起始,导出,精化,协商,规格说明,确认,需求管理需求工程的目的和任务:理解客户需求,分析要求,评估可行性,协商合理的方案,无歧义地详细说明方案,确认规格说明,管理需求以至将这些需求转化为可运行系统。
需求模型的元素:基于场景的元素,基于类的元素,行为元素,面向数据流的元素需求模型的3个主要目标:UML活动图,ERD(ER图,实体关系图),CRC模型,DFD图分析建模的元素有那些?基于场景的元素(用例文本、用例图(UML)、活动图(UML));面向数据流的元素(数据流图(DFD)、控制流图、处理描述);基于类的元素(类图(UML),分析包、CRC模型、协作图(UML));行为元素((UML)状态图、(UML)顺序图)给出一个完整的软件设计包括的4个设计模型并描述每个设计模型的作用数据设计(描述用户的观点的高层模型);体系结构设计(表示系统成分的关系和协作);接口设计(刻画一组用于描述一个类外部可见行为的操作);构件级设计(构件内部详细描述)如何评价设计:(1)设计必须实现所有包含在分析模型中的明确需求,而且必须满足客户期望的所有隐含需求。
(2)对于那些生成代码的人和那些进行测试以及随后维护软件的人而言,设计必须是可读的、可理解的指南。
(3)设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域。
软件质量属性:FURPS组织良好的设计类的特征:完整性与充分性,原始性,高内聚性,低耦合性内聚性,耦合性。
完整的设计规约应该包含哪四个设计模型:(1)体系结构元素(2)接口元素(3)构件级元素(4)部署级元素软件体系结构:软件体系结构的作用:(1)对设计在满足既定需求方面的有效性进行分析(2)在设计变更相对容易的阶段,考虑体系结构可能的选择方案(3)降低与软件构造相关的风险软件体系结构的重要性:体系机构的风格:(1)以数据为中心的体系结构(2)数据流体系结构(3)调用和返回体系结构(4)面向对象体系结构(5)层次体系结构数据流映射(变换映射):UI黄金原则:(1)置用户与控制之下。
(2)减少用户的记忆负担。
(3)保持界面一致用户界面分析和设计过程:四个框架活动(1)界面分析及建模(2)界面设计(3)界面构造(4)界面确认框架活动迭代进行,类似螺旋模型。
软件质量保证的要素:标准,评审和审核,错误/缺陷的收集分析,变更管理,教育,供应商管理,安全管理,安全,风险管理软件质量保证任务:编制项目质量保证计划;参与项目的软件过程描述的编写;评审软件工程活动,以验证是否符合规定的软件过程;评审制定的软件工作产品以验证是否遵循作为软件过程一部分的那些规定;确保根据文档化的规程记录和处理软件工作和工作产品中的偏差;记录各种不符合项并报告给高层管理人员。
驱动程序只是一个“主程序”,它接受测试用例数据,将这些数据传递给构件并打印相关结果。
桩程序的作用是替换那些从属于被测构件的模块或被其调用的模块。
简述软件测试策略的螺旋模型:单元测试、集成测试、确认测试、系统测试单元测试:侧重于软件设计的最小单元的验证工作。
集成测试:是构造软件体系结构的系统化技术,同时也是进行一些旨在发现与接口相关的错误的测试。
(1)自顶向下集成1.主控模块用做测试驱动模块,用直接从属于主控模块的所有模块代替桩模块2.依靠所选择的集成方法(深度优先或者广度优先),每次用实际模块替换一个从属桩模块3.集成每个模块后都进行测试4.在完成每个测试集之后,用实际模块替换另一个桩模块5.可以执行回归测试以确保没有引入新的错误(2)自顶向上集成测试1.连接底层构件以后成完成特定功能的簇2.编写驱动模块(测试的控制程序)以协调测试用例的输入和输出3.测试簇4.去掉测试簇,沿着程序结构向上逐步连接簇(3)回归测试(4)冒烟测试确认测试:始于集成测试的结束,那时已测试完单个构件,软件已组装成完整的软件包,且接口错误已被发现和改正。