软件工程要点

  1. 软件是指令的集合,数据结构和软件描述信息的集合
  2. 软件与硬件的区别:软件不会磨损,但会退化,退化的根本原因是不断变更
  3. 软件工程是(1)将系统化的,规范的,可量化的方法应用于软件的开发,运行和维护.(2)对(1)中方法的研究
  4. 工程化:系统化的,规范的,可量化的
  5. 软件工程是一种层次化的技术,包含工具,方法,过程,质量关注点。
  6. 软件工程的三要素:工具,方法,过程
  7. 软件过程是工作产品构建是所执行的一系列活动,动作和任务的集合
  8. 五种通用过程框架活动:沟通,策划,建模,构建,部署
  9. 软件工程整体实践的原则:存在价值;保持简洁;保持愿景;关注使用者;面向未来;提前计划复用;认真思考
  10. 四种过程流:线性过程流;迭代过程流;演化过程流;并行过程流;
  11. 惯用过程模型:瀑布模型;V模型;增量过程模型;原型模型,螺旋模型;并发模型
  12. 专用过程模型:基于构件;形式化方法模型;面向方面
  13. 统一建模语言UML
  14. UP统一过程的五个阶段:起始阶段;细化阶段;构建阶段;转换阶段;生产阶段
  15. UP的五个阶段不是顺序进行,而是阶段性的并发进行
  16. 敏捷原则(12条)
  17. 普遍存在的变更是敏捷的基本动力
  18. 需求工程是一个软件工程的动作,开始于沟通并持续到建模活动
  19. 需求工程的7项任务:起始,获取,细化,协商,规格说明,确认,管理
  20. 分析模型的作用:为基于计算机的系统提供必要的信息,功能和行为域的说明
  21. 分析模型的元素:基于场景的元素;基于类的元素;行为元素数据流元素;
  22. 需求建模动作结果:场景模型;面向类的模型;基于行为和模式的模型;数据模型;面向流的模型
  23. 域分析:识别,分析和详细说明某个特定应用领域的共同需求以便确定可以在整个邻域内复用的对象
  24. 需求建模的方法:结构化分析;面向对象分析(UML和UP)
  25. 用例间的关系:包含关系(一个用例总是使用另一个用例的功能);扩展关系;泛化关系(子类与夫类的关系)
  26. UML活动图:两端为半圆的矩形—特定的系统功能;箭头—通过系统的流;菱形—分支;实水平线—并行发生的活动
  27. 泳道图:参与者职责由纵向分割图中的并行条表示
  28. 类的分类:实体类;边界类;控制类
  29. 类间关系:关联;继承;依赖
  30. 面向对象的目的是封装,但仍保持对的数据以及对数据的操作
  31. 潜在类的特征:保留信息;所需服务;多个属性;公共属性;公共操作;必要需求
  32. CRC模型:是表示类的标准索引卡片的集合
  33. CRC评审模型
  34. UML状态图:箭头—状态转移
  35. 时序图(顺序图)
  36. 四种设计模型:构件级设计;接口设计;体系结构设计;数据/类设计;
  37. 设计概念包括:抽象,体系结构,模式,关注点分离,模块化,信息隐蔽,功能独立。求精,方面,重构,面向对象,设计类(完整性与充分性,原始性,高内聚性,低耦合性),依赖倒置,测试设计
  38. 软件体系结构:程序或计算系统的软件结构是指系统的一个或多个结构,它包括软件构建,构建的外部可见属性以及他们之间的相互关系
  39. 设计是体系结构的一个实例
  40. 体系结构的风格包括:(1)完成系统需要的某种功能的一组构件;(2)能使构件间实现“通信,合作和协调”的一组连接件(3)定义构件如何集成为系统的约束(4)语义模型,能使设计者通过分析系统组成成分的已知属性来理解西戎的整体性质
  41. 体系结构风格的分类:以数据为中心的体系结构;数据流体系结构;调用和返回体系结构;面向对象体系结构;层次体系结构
  42. 构件:系统中模块化的,可部署的和可替换的部件,该部件封装了实现对外提供一组接口
  43. 基本设计原则:开闭原则;Liskov替换原则;依赖倒置原则;接口分离原则;发布复用等价性原则;共同封装原则,共同复用原则
  44. 内聚性:功能内聚;分层内聚;通信内聚
  45. 耦合性:内容耦合;公共耦合;外部耦合;控制耦合(由强到弱)
  46. 构件3C模型:概念,内容,环境
  47. 用户界面黄金原则:(1)把控制权交给用户(2)减轻用户的记忆负担(3)保持界面一致
  48. 软件测试策略:单元测试集成测试确认测试系统测试
  49. 集成测试包括:自顶向下集成;自底向上集成;回归测试;冒烟测试
  50. 面向对象的集成测试:基于线程的测试;基于使用的测试;簇测试
  51. α测试和β测试的区别:α测试是由有代表性的最终用户在开发者的场所进行。即α测试是在受控环境下进行。而β测试在一个或多个最终用户场所进行。与α测试不同,开发者通常不在场
  52. 系统测试包括:恢复测试;安全测试;压力测试;性能测试;部署测试
  53. 调试方法:蛮干法;回溯法;原因排除法
    白盒测试:(结构化测试)
    (1) 逻辑覆盖
    (2) 路径覆盖:①流图:箭头—边/连接/控制流;边和结点限制的区域—域;包含条件的结点—判定结点② 环复杂性:(1)V(G)=边数-节点数+2(2)V(G)=判定结点数+1(3)V(G)=域数③ 生成基本测试用例:(1)以设计或源代为基础画出相应的流图(2)确定所得流图的环复杂性(3)确定线性独立路径的基本集合(4)准备测试用例,强制执行基本集合中的每一条路径
  54. 黑盒测试:(行为测试/功能测试)白盒测试在测试早期执行,黑盒测试倾向于在测试后期
    (1)等价类法
    (2)边界值法
    (3)错误猜测法
  55. 软件配置:在软件过程中产生的所有信息项
  56. 软件配置管理:一组用于在计算机软件的整个生命周期内管理变更的活动
  57. 软件过程输出信息可以分为:计算机程序;文档;数据或内容
  58. 系统工程第一定律:不管你处在系统生命周期的什么阶段,系统都可能发生变更,并且在整个生命周期中将会持续不断的提出变更的要求
  59. 配置管理系统的元素:构件元素;过程元素;构建元素;人员元素;
  60. 基线:已经通过正式评审和批准的规格说明或产品,它可以作为进一步开发的基础,并且只有通过正式的变更控制规程才能修改它
  61. SCM中心存储库:是一组机制和数据结构,它使软件团队可以有效地管理变更
  62. SCM特征:版本控制;依赖性跟踪和变更管理;需求跟踪;配置管理;审核跟踪
  63. 软件项目管理的4P:人员,产品,过程,项目
  64. W5HH原则
  65. 软件度量:过程度量,项目度量,产品度量
  66. 软件测试:
    (1) 面向规模度量:LOC(代码行)
    (2) 面向功能度量:FP(功能点)
    (3) 面向对象度量
    (4) 面向用例度量
  67. 软件质量:测试指标:正确性;可维护性;完整性;可用性;
    (1) 正确性:每千行代码的缺陷数
    (2) 可维护性:平均变更时间MTTC
    (3) 完整性:=∑(1-(危险性×(1-安全性)))
  68. 缺陷排除效率:
    (1) DRE=E/(E+D)
    (2) E是软件交付给最终用户之前发现的错误数
    (3) D是软件交付之后发现的错误数
  69. 三类主要软件工程资源:人员,可复用的软件构件,开发环境(硬件和软件工具)
    (1) 对每类资源都要说明四个特征:资源描述,可用性说明,何时需要资源,使用资源的持续时间
  70. 基于问题估算:
    (1) S=(Sopt+4Sm+Spess)/6
    (2) Sopt乐观值,Sm可能值,Spess悲观值
  71. 基于LOC的估算:
    (3) LOC/pm–人月
  72. 基于FP的估算:
    (4) FPestimated=总计×(0.65+0.01×∑Fi)