软件工程
About 6 minstudy软件工程
第一章 绪论
软件危机
随着计算机的广泛应用,软件生产率、软件质量远远满足不了社会发展的需求,成为社会、经济发展的制约因素,人们把这种现象称为“软件危机”
软件工程
其目的是倡导以工程的原理、原则和方法进行软件开发,以期解决“软件危机”。
第二章 软件需求与软件需求规约
需求与需求获取
需求定义
- 一个需求是一个‘要予构造’的陈述,描述了一个待开发产品/系统应该具有的功能、性能和其他性质。
- 单一一个需求的5个基本性质:必要的、误歧义的、可测的、可跟踪的、可测量的。
需求分类
- 功能需求
- 非功能需求:性能需求、外部接口需求(用户接口、硬件接口、软件接口、通信接口、内存约束、运行、地点需求)、设计约束(法规政策、硬件限制、与其他应用的接口、并发操作、审计功能、控制功能、高级语言需求、握手协议应用的关键程度、安全和保密)、质量属性
需求发现技术
自悟、交谈、观察、小组会、提炼
需求规约
定义
需求规约是一个软件/产品/系统所有需求称述的正式文档,它表达了一个软件产品/系统的概念模型。
满足的4个基本性质
- 重要性和稳定性程度。
- 可修改的
- 完整的
- 一致的
需求规约格式
1. 引言
1.1 目的
1.2 范围
1.3定义,缩略语
1.4参考文献
1.5 概述
2. 总体描述
2.1 产品概述
2.2 产品功能
2.3 用户特性
2.4 约束
2.5 假设和依赖
3. 特定需求
附录
索引
需求规约的表达
- 形式化的需求规约(自然语言)
- 半形式化的需求规约(一半自然语言,一半正式语言)
- 形式化规约(基于良好的数学概念的符号体系编织的)
需求规约的作用
- 是软件开发组织和用户之间一份事实上的技术合同书。
- 对于项目的其余大多数工作,需求规约是一个管理控制点。
- 对于产品/系统的设计,是一个正式的、受控的起始点
- 是创建产品验收测试计划和用户指南的基础。
需求规约回答交付给客户的产品/系统是什么(关注产品需求)。项目需求回答开发组要做的是什么(关注项目工作与管理)。
第三章 结构化方法
结构化需求分析
三大挑战
- 问题空间的理解
- 人与人之间的通信
- 需求的变化性
好的需求技术的基本特征
- 提供方便通信的机制
- 鼓励需求分析人员使用问题空间的术语思考问题,编写文档
- 提供定义系统边界的方法
- 提供支持抽象的基本机制
- 为需求分析人员提供多种可供选择的方案
- 提供特定的技术,适应需求的变化
基本术语
数据源、数据潭、数据流、加工、数据存储
数据流图(DFD)
为了建立系统功能模型,为此结构化分析方法给出了一种表达功能模型的工具
建模过程
- 建立系统环境图,确定系统语境(顶层数据流图)
- 自动向下,逐步求精(数据流的分派)
- 定义数据字典(顺序结构、选择结构、重复结构)
- 描述加工(结构化自然语言、判定表、判定树)
需求验证
需求中发现的错误类型
类型 | 百分比 | 类型 | 百分比 |
---|---|---|---|
不正确的事实 | 40 | 歧义性 | 5 |
遗漏 | 31 | 错放 | 2 |
不一致 | 13 | 其他 | 9 |
发现错误的方法
方法 | 发现错误的百分比 | 方法 | 发现错误的百分比 |
---|---|---|---|
审查 | 65 | 集成 | 5 |
单元测试 | 10 | 其他 | 10 |
评估 | 10 |
结构化设计
目标
建立系统的模块结构,即系统实现所需要的软件模块----系统中可标识的软件成分,以及这些模块之间的调用关系。
- 模块: 是指软件中具有特定标识的独立成分;
- 模块调用:指模块之间的一种使用关系
表达软件体系结构的工具
- 模块结构图:是一种描述软件宏观结构的图形化工具。
- 层次图:主要描绘软件的层次结构
- HIPO图:层次图+输入/处理/输出
总体设计步骤
- 变换型数据流图: 具有明显的输入部分和变换部分之间的界面、变换部分和输出部分之间节目的数据流图
- 事务型数据流图:数据达到一个加工T ,改加工T根据输入数据的值,在其后的若干动作序列(一个事物)中选出一个执行。
三个阶段
- 初始设计
- 精华设计
- 复审阶段
模块化及启发式规则
模块化
是执行一个特殊任务的一个过程以及相关的数据结构
把一个待开发的软件分解成若干简单的具有高内聚低耦合的模块
耦合:指不同模块之间相互依赖程度的度量(内容耦合、标记耦合、控制耦合、公共耦合、数据耦合)
内聚:指一个模块内部各成分之间相互关联程度的度量(偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚)
启发式规则
- 改进软件结构,提高模块独立性。
- 力求模块规模适中
- 力求深度、宽度、扇出和扇入适中。
- 尽力使模块的作用域在其控制域之内。
- 尽力江都模块接口的复杂度
- 力求模块功能可以预测
详细设计
具体描述模块结构图中的每一个模块,即给出实现模块功能的实施机制,包括一组例程和数据结构。目标是将总体设计阶段产生的系统高层结构映射为以这些术语所表达的底层结构,也是系统的最终结构。
三种基本结构控制:顺序、选择、循环。
详细设计工具
- 程序流程图(程序框图): 历史最悠久、使用最广泛的软件设计工具。
- 盒图(N-S图):支持自顶向下逐步求精的详细设计
- PAD图:用二维树形结构图表示程序的控制流。
- 类程序设计语言PDL(伪码):借用某种结构化程序设计语言的关键字作为语法框架,用于定义控制结构和数据结构。
概要设计规约的主要内容
- 系统环境
- 软件模块的结构
- 模块描述
- 文件结构和全局数据文件的逻辑结构
- 测试需求
详细设计规约增加了 :1.各处理过程的算法。2.算法所涉及的全部数据结构的描述。
第四章 面向对象方法--UML
8个术语:类与对象、接口、协作、用况、主动类、构件、制品、节点。