1.软件工程概述
软件的生存周期
软件过程改进-CMM
初始级:杂乱无章,甚至混乱,几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄式核心人物的作用。
可重复级:建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性,有必要的过程准则来重复以前在同类项目中成功。
已定义级:管理和工程两方面的软件过程已经文档化、标准化,并综合成整个软件开发组织的标准过程。
已管理级:制定了软件过程和产品质量的详细度量标准。
优化级:加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能不断持续地改进。
软件过程改进-CMMI阶段式模型
软件过程改进-CMMI连续式模型
2.软件开发方法
结构化方法
用户至上;
严格区分工作阶段,每阶段有任务和结果;
强调系统开发过程的整体性和全局性;
系统开发过程工程化,文档资料标准化;
自顶向下,逐步分解;
注:结构化方法是面向过程的开发方法,适用于需求明确的项目。
原型法
适用于需求不明确的项目
面向对象方法
更好的复用性;
关键在于建立一个全面、合理、统一的模型;
分析、设计、实现三个阶段,界限不明确;
注:适用于复杂、大的项目。
面向服务的方法
抽象级别:操作、服务、业务流程
注:面向服务方法是更高级别的面向对象方法。
3.软件开发模型
瀑布模型
注:瀑布模型运用的是结构化开发思想,适用于需求明确的项目 。
V模型
注:V模型属于瀑布模型的变种,强调的是测试贯穿始终。
演化模型(原型模型、螺旋模型)
演化模型:演化模型是迭代的过程模型,使得软件开发人员能够逐步开发出更完整的软件版本。演化模型特别适用于对软件需求缺乏准确认识的情况。
原型模型
注:适用于需求不明确的项目。
螺旋模型
注 :螺旋模型是瀑布模型和演化模型的结合,加入了风险分析。适用于复杂、庞大且高风险的项目。
增量模型
注:将核心产品作为第一个增量开发,将需求分段为一系列的增量产品,每个增量可以分别开发。
喷泉模型
注:喷泉模型以用户需求为动力,以对象作为驱动的模型,适用于面向对象的开发方法。
特点:迭代无间隙。
统一过程模型
敏捷开发模型
注:适用于小项目、小团队。
极限编程XP
敏捷开发方法分类
4.需求分析
需求的任务:解决做什么的工作
需求过程:问题识别、分析与综合、编制需求分析文档(需求规格说明书SRS)、需求分析与评审
需求分析的产物:一套分层的数据流图、一本数据词典、一组小说明(加工逻辑说明)、补充材料。
需求的分类
需求分析的工具
数据流图
数据流图的特点:数据流图是典型的结构化分析的工具。自顶向下,逐步求精。
数据字典
判定表与判定树
5.系统设计
系统设计的任务与活动
模块设计
基本原则:
高内聚
低耦合
人机界面设计
黄金三原则
置于用户控制之下:
1.以不强迫用户进入不必要的或不希望的动作的方式来定义交互方式;
2.提供灵活的交互;
3.允许用户交互可以被中断和撤消;
4.当技能级别增加时可以使交互流水化并允许定制交互;
5.使用户隔离内部技术细节;
6.设计应允许用户和出现在屏幕上的对象直接交互;
减少用户的记忆负担:
1.减少对短期记忆的要求;
2.建立有意义的缺省
3.定义直觉性的捷径;
4.界面的视觉布局应该基于真实世界的隐喻;
5.以不断进展的方式揭示信息;
保持界面的一致性:
1.允许用户将当前任务放入有意义的语境;
2.在应用系列内保持一致性;
3.如过去的交互模型已建立起了用户期望,除非有迫不得已的理由,不要改变它;
架构设计
架构风格
数据流风格
调用/返回风格
层次结构
层次架构风格
两层C/S、三层C/S、三层B/S、混合架构
C客户端,S服务器端,B浏览器端
MVC架构风格
独立构件风格
虚拟机风格
仓库风格
6.系统测试
测试原则
测试分类
黑盒测试与白盒测试
黑盒测试
等价类划分:确定无效与有效等价类;设计用例尽可能多的覆盖有效类;设计用例只覆盖一个无效类。
边界值分析:处理边界情况时最容易出错;选取的测试数据应该恰好等于、稍小于或稍大于边界值。
白盒测试
系统测试阶段
McCabe环路复杂度
环路个数法
注:图中所有环路数+1
公式法
V(G) =m-n+2
注:V(G)表示有向图G中的环路个数,m为G中的有向弧数,n为G中的节点数。
7.软件维护
软件维护的分类
改正性维护:错误已经出现
适应性维护:指使应用软件适应信息技术变化和管理需求变化地进行的修改。企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断的提出新的信息需求。
预防性维护:错误还未发生
完善性维护:扩充功能和改善性能而进行的修改,对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征。
可维护性因素
可理解性、可测试性、可修改性
软件维护包含版本控制、文档分析、逆向工程。
8.软件文档
用户角度
产品文档
培训手册
参考手册和用户指南
软件支持手册
产品手册和信息广告
管理人员角度
管理文档
开发过程的每个阶段的进度和进度变更记录
软件变更情况的记录
相对于开发的判定记录
职责定义
开发人员角度
开发文档
可行性研究和项目任务
需求规格说明
功能规格说明
设计规格说明
开发计划
软件集成和测试
质量保证计划、标准、进度
安全和测试信息
9.软件质量保证