软件工程导论
第一章 概述
1968年 NATO 艘次提出"软件工程" 概念至今
软件工程 是为了解决 开发成本效益 和 软件质量的 问题而产生的
1.1软件
软件是 计算机程序,规程以及运行计算机系统可能需要的相关文档和数据
1.1.1 软件的特性
1.软件是 复杂的
2.软件是不可见的
3.软件是不断变化的
4.大多数软件仍然是定制的,而不是通过已有构件组装而成的
1.1.3 软件危机
软件危机:
计算机软件 的开发和维护过程中 遇到的一系列 严重问题
1.2 软件工程
1.2.2 软件工程的三要素
过程,方法,工具 三个要素组成
软件工程的方法 为 软件开发提供了"如何做"的技术
软件工程的过程 是 管理和控制产品质量的关键
软件工具 为软件工程方法提供了 自动的或半自动的软件支持环境,辅助软件开发人物的完成
1.2.3 软件质量的特性
可靠性 正确性 有效性
1.2.5 CASE 计算机辅助软件工程
Rose,UML,Robot,CVS,VVS,RUP
1.3 软件工程知识体系(SWEBOK)
1.3.2 SWEBOK的组成
软件:
需求 设计 构造 测试 维护 配置管理 工程管理 过程管理 工程过程 工程工具与方法 质量
1.4 软件工程职业道德规范
1.4.2 软件工程人员的职业道德建设
遵纪守法 是 基本素质
服务客户,造福社会 是 观念
诚实信用 是 核心
第二章 软件过程
软件过程是
是软件工程人员为了获得软件产品而在软件工具的支持下实施的一系列软件工程活动。
2.1.3软件过程的基本活动
软件确定
软件开发
规格说明
软件演化
2.2 软件过程模型
2.2.1 瀑布模型
软件开发各项活动 严格 按照线性的方式进行
适用于
在开发的早期阶段软件需求 被完整确定的情况
(这种要求太过理想化)
暴露的问题
各个阶段的划分完全固定
增加了开发的风险
早期的错误要等到开发后期的测试阶段才能实现
2.2.2 快速原型模型
大概步骤
第一步:
迅速构建一个可以运行的软件原型
第二步:
在第一步的基础上开发客户满意的软件产品
2.2.3 增量模型
第一个增量
往往是 实现基本需求的核心产品
2.2.4 螺旋模型
将软件过程划分 为 若干个开发回线
每个回线又被 划分成 4 个步骤
首先确定该阶段的目标
其次从风险角度分析方案的开发策略
如果某些风险不能排除 立刻中止
否则继续下一步的软件开发和 验收工作
最后评价该阶段的结果 并规划 下一个开发阶段
第三章 软件项目管理
3.1.2 软件项目管理的"4P"
People 人员
Product 产品
Process 过程
Project 项目
3.2.1 人员组织和管理
民主式组织结构
主程序员式组织结构
技术管理式组织结构
3.4 软件项目规划(太*m难了)
调整因子
软件成本估算
基线
质量控制是指在项目生命周期的不同时间结点上,一个或一组配置通过正式评审而进入正式受控的一种状态
需求规格说明
描述了 计算机系统的功能,性能及其约束
功能需求:
描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明。
非功能需求:
是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
第四章 需求工程
4.1.1 业务需求
4.1.2 用户需求
4.1.3 功能需求 和 非 功能需求
4.1.4 系统需求
第六章 面向对象基础
6.5常用的UML图
用例图
用例 和 参与者
参与者
用户 外部系统 硬件设备 组织结构
用例
系统需要实现的功能
类图
实心菱形 + 横线 表示 组合
空心菱形 + 横线 表示 聚合
顺序图
状态图:
第八章 面向对象设计
8.1.2 设计原则
1.模块化 : 将一个福扎的大系统分成若干个较小的部分
耦合度和内聚度:
耦合度: 两个子系统之间的 关联程度
内聚性 :子系统内部的相关程度
复用性: 直接使用已有的软构件通过组合或合理地修改生成心的系统
第十章 软件测试
10.1.2 验证与确认
软件验证:
试图证明在软件生存期各个阶段,软件产品和中间产品是否能够满足客户需求
软件确认:
一系列的活动和过程
10.2 软件测试策略
习题:
在类设计中,为什么建议使用 set 方法和 get 方法进行属性设置和读取? 目的在于降低类之间的耦合度。()
系统设计的主要任务是在系统分析的基础上,按照逻辑模型的要求,科学合理地进行系统的总体设计和具体的物理设计,为下一阶段系统提供实施提供必要的技术资料。