系统软件:
软件工程过程:软件工程过程包括:开发过程、运作过程、维护过程、管理过程、支持过程、获取过程、供应过程、剪裁过程等
软件的分类:系统软件,支持软件,应用软件
软件生存周期的活动阶段:计算机系统工程、需求、设计、编码、测试、运行和维护、再工程
系统计设任务:
结构化分析过程:
- 理解当前的现实环境,获得当前系统的具体模型(物理模型)
- 从当前系统的具体模型抽象出当前系统的逻辑模型
- 分析目标系统与当前系统逻辑上的差别,建立目标系统的逻辑模型
- 为目标系统的逻辑模型作补充
敏捷方法的定义:
敏捷方法是一种新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。
Agile方法的价值观
1.个人和交互高于过程和工具
2.可运行软件高于详尽的文档
3.与客户协作高于合同(契约)谈判
4.对变更及时做出反应高于遵循计划
高内聚:内聚是一个模块内部各个元素彼此结合的紧密程度的度量,一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高
低耦合:耦合是模块之间的相对独立性(互相连接的紧密程度)的度量,模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱
Xx内聚:
1.巧合内聚(偶然内聚):将几个模块中没有明确表现出独立功能的相同程序代码段独立出来,建立的模块称为巧合内聚模块。2.逻辑内聚 :指完成一组逻辑相关任务的模块,调用该模块时,由传送给模块的控制型参数来确定该模块应执行哪一种功能。3.时间内聚:指一个模块中的所有“构件”必须在同一时间段内执行。例如初始化模块和终止模块。4.过程内聚 :指一个模块完成多个任务,这些任务必须按指定的过程(procedural)执行。5.通信内聚 :指一个模块内所有处理元素都集中在某个数据结构的一块区域中。6.顺序内聚:指一个模块完成多个功能,这些功能又必须顺序执行。7.功能内聚 :指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不可分割的。
非直接耦合 :如果两个模块之间没有直接关系,即它们中的任何一个都不依赖于另一个而能独立工作,这种耦合称为非直接耦合。
数据流图:Data Flow Diagram(简称DFD):描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模。
基本元素包括:
- 数据流(data flow):由一组固定成分的数据组成,代表数据的流动方向
- 加工(process):描述了输入数据流到输出数据流的变换,即将输入数据流加工成输出数据流
- 文件(file):使用文件、数据库等保存某些数据结果供以后使用
- 源或宿(source or sink):表示软件系统输入数据的来源和输出数据的去向,因此,也称为源点和终点
状态机图:
状态机图通常是对类描述的补充,它说明该类的对象所有可能的状态,以及哪些事件将导致状态的改变。状态机图描述了对象的动态行为,是一种对象生存周期的模型
测试用例:
白盒测试:白盒测试(又称为结构测试)把测试对象看作一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作。
白盒测试中逻辑覆盖测试:
白盒测试中循环测试:循环分为4种不同类型:简单循环、嵌套循环、串接循环和非结构循环。
黑盒测试:黑盒测试(又称行为测试)把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能需求。
黑盒测试中的等价类划分:等价类划分方法将所有可能的输入数据划分成若干个等价类,然后在每个等价类中选取一个代表性的数据作为测试用例
黑盒测试中的边界值分析:边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充,人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,其揭露程序中错误的可能性就更大。
黑盒测试中的比较测试:通常,可由二支软件开发队伍,根据相同的需求规格说明分别开发二个软件版本,然后,用相同的测试用例对二个版本的软件分别进行测试,比较二个版本软件的测试结果,如果测试结果相同,则可认为二个版本的软件都是正确的,如果测试结果不同,则要分析各个版本,以发现错误的所在。这种测试称为比较测试或称为背靠背测试(back―to―back testing)。大多数情况下,可用自动化工具来进行比较测试。
- 软件过程、软件生存周期的基本过程(五个)
软件生存周期5个基本过程:获取(acquisition)过程:确定需方向供方获取系统、软件或软件服务的活动。供应(supply)过程:确定供方向需方提供系统、软件或软件服务的活动。开发(development)过程:确定开发者定义并开发软件的活动。运行(operation)过程:确定操作者在规定的环境中为其用户提供运行计算机系统服务的活动。维护(maintenance)过程:确定维护者提供维护软件服务的活动。
- 瀑布模型的几个步骤、缺点,引出来的一系列新模型(4、5个)
步骤:
1. 系统工程2. 需求分析与规约3. 设计与规约4. 编码与单元测试5. 集成测试系统测试6. 运行与维护
缺点:
1.缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发2.开发早期存在的问题往往要到交付使用时才发现,维护代价大
新模型:增量模型、原型模型、螺旋模型,喷泉模型
- ATAM(六个步骤),评价软件体系结构,p57
1.定义应用场景(scenarios):通过use case图来从用户的角度表现系统。2.得出需求、约束和环境描述:这是需求工程的一部分,用以确定所有客户方关心的问题都被列出。3.描述能处理上述情境和需求的体系结构风格。4.单独地评价系统的各项性能。针对体系结构设计的性能包括:可靠性,性能、安全性,可维护性,灵活性,可测试性,可移植性,可重用性和互操作性等。5.针对不同的架构形式,评价第4步提到的这些性能的敏感程度。可以通过这样的方法来评价:在整个架构中做一些小的变更,分析并确定上述性能有没有很敏感的变化。在体系结构改动中受到较大影响的性能被称为敏感点(sensitive point)。6.通过第5步的敏感度分析来评价第三步中提出的那些体系结构。
- 软件维护、黑盒、白盒、维护类型(如纠错等,四个)、维护工作量计算
软件维护:是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程
维护类型:
1.纠错性维护2.适应性维护3.改善性维护4.预防性维护
维护工程量计算:
M:维护的总工作量 ;P:生产性工作量;K:经验常数;c:复杂程度;d:维护人员对软件的熟悉程度
- 数据字典(条目构造)、数据流图、审查
数据字典条目包括:数据流、文件、数据项(组成数据流和文件的数据)、加工、源和宿.
数据流图:
描述输入数据流到输出数据流的变换(即加工)过程,用于对系统的功能建模。
基本元素包括:
审查:
一致性:分层DFD中不存在矛盾和冲突
完整性:分层DFD本身的完整性,即是否有遗漏的数据流、加工等元素
- 项目管理(五类人),如何对项目有计划,有控制的管理?(五个步骤)
五类人:
1.项目管理人员:负责软件项目的管理工作,其负责人通常称为项目经理2.高级管理人员:可以是领域专家,负责提出项目的目标并对业务问题进行定义
3.开发人员:掌握了开发一个产品或应用所需的专门技术,可胜任包括需求分析、设计、编码、测试、发布等各种相关的开发岗位4.客户:一组可说明待开发软件的需求的人,也包括与项目目标有关的其它风险承担者
5.最终用户:产品或应用提交后与产品/应用进行交互的
五个步骤:
1.明确目标及过程:充分理解被解决的问题,明确定义项目目标及软件范围,为项目小组及活动设置明确、现实的目标,并充分发挥相关小组的自主性2.保持动力:提供激励措施使人员变动最小3.跟踪进展:对每个任务的进展进行跟踪,并对其软件过程和质量进行度量 4.做出聪明的决策:项目管理者和软件小组的决策应该 “保持其简单” 5.项目总结:从每个完成的项目中获取可学习的经验
项目管理4p:
1.人员(People)
人员是软件工程项目的基本要素和关键因素 在对人员进行组织时,有必要考虑参与软件过程(及每一个软件项目)的人员类型
2.产品(Product)
定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束等
3.过程(Process)
通常将项目分解为任务—子任务等,其分解准则是基于软件工程的过程
4.项目(Project)
采用科学的方法及工具对项目基本内容进行管理