软件的主要特性:无形、高成本、包括程序和文档
软件工程三要素:方法、工具、过程
螺旋模型包含风险分析
软件工程的主要目标:风险分析
面向对象开发:Booch、UML、Coad、OMT
软件危机的主要表现:软件成本太高、软件产品质量低、软件生产率低
软件开发模型:螺旋模型、瀑布模型
软件工程的目的: 易于维护、低的开发成本、高性能
软件工程学的目的和意义:应用科学的方法和工程化的规范管理来指导软件开发、以较低的成本开发出高质量的软件
结构化方法和JSP方法都不适合大型软件的开发
面向对象达开发方法包括:面向对象分析、面向对象设计、面对象程序设计
需求分析的主要目的:进一步确定用户的需求、解决系统是"做什么"的问题
需求分析的主要方法:结构化分析(SA)、OOA
面向对象分析方法:对象模型、动态模型、功能模型
SA(结构化分析)的主要描述手段:DFD(数据流)、数据字典、加工说明
分层DFD的基本原则:数据守恒原则、子父图平衡原则、数据流封闭原则
E-R:实体、联系、属性
DFD的目的:作为需求分析阶段用户与开发者之间交流信息工具、作为分析和设计的工具
数据字典:数据源、数据流、数据处理、数据文件 / 数据源、数据项、数据存储、数据处理
模块的基本特征:外部特征(输入/输出、功能)、内部特征(局部数据、代码)
SD的设计总则:模块内聚性强、耦合度低
软件设计的主要任务:将数据分析阶段获得的需求说明转换为计算机中可实现的系统、完成系统的数据结构和程序结构设计、对模块内部过程设计
设计阶段的目标:提高可靠性和可维护性、提高可理解性和效率
工程管理:概要设计、详细设计
模块独立性准则的指标:耦合度、内聚性
用户界面设计的任务:确定用户界面类型、建立任务模型、建立用户模型
程序设计语言:机器语言、汇编语言、高级语言
程序效率:代码、存储、I/O
SP(结构化程序设计)的基本控制结构:顺序、选择、重复
注释语言:序言性、描述性、功能性、状态性
数据说明的次序规范化
一个语句说明多个变量时,各变量名按字母排序
对复杂的数据结构,要加注释、说明在程序实现时的特点
源程序的效率在 详细设计 阶段确定的算法的效率直接有关
算法效率反映为程序的存储容量、执行速度
提高程序效率的根本途径:选择良好的设计方法、程序最大的简洁
信息隐藏有利于提高模块内聚性
结构冲突:输入数据和输出数据之间很少或没有结构上的对应关系,解决的办法:构造一个或多个中间结构,在输入和输出结构之间进行转换
项目的应用领域是选择语言的关键
面向对象程序设计的基本机制:继承、消息、方法
面向对象的要素:抽象、共享、封装
面向对象开发方式:Booch、Coad、OMT
Coad方法中面向对象的分析模型的层次:主题层、对象层
一个类的属性依照其特征划分:描述、定义、派生、参考
面向对象模型:对象模型、动态模型、功能模型
状态的性质:时间性、持续性
数据流图中处理必须用对象中的操作来实现常见的操作有:查询、动作、活动、访问
建立继承关系时采用的方法:自顶向下、自底向上
对象类型:有形实体、作用、事件、性能说明
类是具有相同或相似的性质对象的抽象,对象是抽象的类,类的具化是对象
面向对象分析:抽取和整理用户需求并建立问题域精确模型的过程
面向对象的设计的目标:提高生产效率,提高质量和提高可维护性
对象模型表示了静态的、结构化的系统数据性质、描述了系统的静态结构,从观察世界实体的对象关系角度来描述,表示了对象的相互关系
面向对象的分析是用面向对象的方法对目标系统的问题空间进行理解、分析、反映,通过对象层次结构的组织确定解空间中应存在的对象和对象层次结构
类的设计过程:确定类、确定关联类、确定属性、识别继承关系
复用也叫再用/重用,面向对象技术中的类,是比较理想的可重用软构件,有三种重用方式:实例、继承、多态
UML有扩展性,常用的扩展机制:版类、加标签值、约束
UML语言支持的建模方式:静态、动态、功能
动态建模:状态图、序列图、活动图
状态的组成部分:名称、活动
UML的事件:条件为真、收到另一对象的信号、收到操作调用、时间表达式
属性的可见性:公有的、私有的、保护的
用例之间的关系:扩展、使用、组合
应用于通用化约束的方式:完整、不相交、不完整、覆盖
消息的类型:同步、异步、简单
UML由视图、图、模型元素和通用机制构成的层次关系来描述
类图中的角色是用于描述该类在关联中所扮演的角色和职责
软件维护的类型 :完善性、纠错性、适应性、预测性,最重要的是完善性
完善性:客户新需求
纠错性:未发生的错误
适应性:适应环境/API
预防性:明天
静态测试:人工的、非形式化
静态测试方法:桌面检查、代码会审、数据流分析图、调用图
集成过程:尽早测试包含I/O的模块、尽早测试关键模块
白盒测试:
语句覆盖:每条语句至少执行一次
判定覆盖:每次判定至少获得一次"真"值和一次"假"值
软件测试的基本原则:关键是注重选择高效的测试用例、尽量不由程序设计者进行测试、充分注意测试中的群集现象、尽可能少的测试样例,尽可能多的错误
等价分类法的关键:划分等价类
单元测试先"人工走查",以白盒法为主,辅以黑盒法进行动态测试
功能测试是系统测试的主要内容,检查系统的功能,性能是否与需求规格说明相同
白盒测试:静态测试、用于单元测试
等价分类法:一个测试用例只能覆盖一个无效等价类
发现错误多的模块,残留在模块中的错误也多
在分析规范(因、果)的基础上画出因果图,再将其转化为有限项判断表,得出测试用例
系统测试的主要方法:白盒法,主要进行功能测试、性能测试、安全测试、可靠性测试
完善性测试:增加联机求助命令、为软件的运行增加监控设施
维护的副作用:修改数据、代码的副作用、文档资料的副作用
确定可维护性的因素:可理解性、可修改性、可测试性
软件维护阶段的文档:软件问题报告、软件修改报告
表达计划安排的主要工具:PERT图、甘特图、进度表
简明性的程序出错率低
用面向对象开发,可维护性好
软件工程管理的对象:软件工程项目
明确软件开发项目的工作范围、可能遇到的风险、需要的资源
明确软件开发中要实现的任务和需要经历的里程碑
明确所需要的工作量和进度安排
软件管理资源中最重要:人力资源
开发软件工程的第一步:可行性研究
可行性研究不包括人力的可行性
影响软件开发成本估计的因素不包括:硬件资源
自底向上的估计法:精度高、缺少子任务(模块)间的联系
编码工作占总工作量的百分比最大
软件质量度量方法:精确度量、全面度量、简易度量
CMM:软件过程成熟度模型,非面向对象
软件工程管理对软件项目的开发管理,对整个软件生存期的所有活动进行管理
直接影响软件开发风险的因素是成本估算
CMM的五个级别:初始、可重复、已定义、已处理、优化
CMM的基本要求:"有章可循、有章必循"