软件工程 复习总结
软件工程学概述
软件危机
软件概念:计算机软件是由专业人员开发并长期组织的软件产品,完整的软件产品包括了在各种不同容量和体系结构计算机上可执行的程序,运行过程中产生的各种结果、以及以硬复刻和电子表格等多种形式存在的软件文档(软件 = 程序 + 数据 + 文档)
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
1.如何开发软件、以满足对软件日益增长的需求。 2.如何维护数量不断膨胀的已有软件
常见表现形式
- 对软件开发成本和进度的估计常常很不准确
- 用户对“已完成的”软件系统不满意的现象经常发生
- 软件产品的质量往往靠不住
- 软件常常是不可维护的
- 软件通常没有适当的文档资料
- 软件成本在计算机系统总成本中所占的比例逐年上升
- 软件开发生产率提升的速度,远远跟不上计算机应用迅速普及深入的趋势
软件工程
软件工程是知道计算机软件开发和维护的一门工程学科
软件工程拥有七条基本原理
- 用分阶段的生命周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结果应能清楚地审查
- 开发小组的人员应该少而精
软件工程方法学
软件工程学包含三个要素:方法、工具、过程。
方法---完成软件开发的各项任务的技术方法
工具---是为运用方法而提供的支撑环境
过程---是为了获得高质量的软件所需要完成的一系列任务的框架
软件工程方法学分为传统方法学和面向对象方法学
传统方法学也被称为生命周期方法学或结构化范型,这种方法将软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成各个阶段的任务
面向对象方法学把数据和行为看成同等重要的,他以数据为主线,把数据和对数据的操作紧密地结合起来的方法。
传统方法学强调自顶向下顺序地完成软件开发的各阶段任务,而面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。 面向对象方法学正确的使用能够降低软件产品的复杂性,提高软件的可理解性简化软件的开发和维护工作。并且能够提高可重用性
软件生命周期
软件生命周期由 软件定义、软件开发、和运行维护3个时期组成。
软件定义又可分为问题定义、可行性研究以及需求分析
-
需求分析通常用数据流图、数据字典和简要的算法表示系统的逻辑模型
软件开发由总体设计、详细设计、编码和单元测试,综合测试组成
维护时期的主要任务是使软件持久地满足用户的需要
-
维护有4种类型:改正性维护、适应性维护、完善性维护、预防性维护
软件过程
软件工程是为了获得高质量软件所需要的一系列任务的框架,它规定了完成各项任务的工作步骤
-
通常使用生命周期模型简洁地描述软件过程
瀑布模型
特点:顺序性、依赖性
优点-> 可强迫开发人员采用规范的方法、便于维护以及降低成本
缺点-> 由文档驱动、缺少灵活
瀑布模型适用于需求固定、对安全性要求极高、对质量要求极高
快速原型模型
特点:不带反馈环、快速
优点:软件产品的开发是线性顺序进行的
快速原型模型的作用
- 帮助获得用户需求
- 可以快速建造出原型系统‘
- 进行初步开发
快速原型适用于需求模糊
增量模型(演变模型)
特点:逐渐增加
优点:能够在较短时间内向用户提交可完成部分工作的产品、逐渐增加功能为用户提供过渡期
缺点:设计阶段所需要的成本较多
螺旋模型
特点:使用原型及其他方法来尽量降低风险
优点:有利于已有软件的重用、将软件质量作为目标、减少过多测试或测试不足带来的风险
缺点:风险驱动、成本高
螺旋模型适用于大项目具有高风险的项目
喷泉模型
特点:迭代与无缝、使用对象驱动
可行性研究
目的:用最小的代价在尽可能短的时间内确定问题是否能够解决
实质->进行一次大大压缩简化了的系统分析和设计的过程、即较高层次上抽象的方式进行的系统分析和设计的过程
方向
- 技术可行性
- 经济可行性
- 操作可行性
- 法律可行性
图
系统流程图
系统流程图是概括地描述物理系统的传统工具
数据流图
数据流图是一种图形化技术、描绘信息流和数据从输入移动到输出的过程中所经受的变换。(表现的是逻辑过程)
主要由 数据源点/终点(正方形) 、变换数据的处理(圆圈) 、数据存储(双横线)、数据流(带有箭头的线段)
其他符号
- 星号(*):表示数据流之间是“与”关系
- 加号(+):表示“或”关系
- (+)号:表示互斥关系
数据流图可以不断细分,在细分过程种要求保证细分部分的输入与输出不变
数据字典
数据字典的作用->提供关于数据的描述信息
数据流程图和数据字典共同构成系统的逻辑模型
数据字典的内容
1)数据流 2)数据流分量(即数据元素) 3)数据存储 4)处理
在数据字典中记录数据元素的一下信息:一般信息(名字、别名、描述等)、定义(数据类型、长度、结构等)、使用特点(值的范围,使用频率、使用方式---输入、输出、本地、条件值等)控制信息(来源、改变权、使用权等)分组信息(父结构、从属结构、物理位置)
定义数据的方法
由3种基本类型:顺序、选择、重复
还有第四种关系运算符-->可选
用符号表示如下:
- "=":等价为(或定义为)
- "+":和(连接两个分量)
- "[]":或(既从方括中列出若干分量中选择一个),通常用“|”隔开
- "{}":重复(即重复花括号内的分量)
- "()":可选(即花括号里的分量可有可无)
货币的时间价值
F = P(1+i)^ n
表示P元钱在n年后的价值
p = f/(1+i)^n
如果在n年后能收入F、则现在为P
需求分析
需求分析最后的结果是生成一份需求规格说明书
表明系统必须完成那些工作,也就是对目标系统提出完整、准确、清晰、具体的要求
主要任务
1)功能需求 2)性能需求 3)可靠性和可用性需求 4)出错处理需求 5)接口需求 6)约束 7)逆向需求 8)将来可能提出的需求
在需求分析过程中应该建立3种模型:数据模型、功能模型、行为模型
图
状态转换图
状态转换图通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为
状态图中定义的状态有:初态(即初始状态)、终态(即最终状态)和中间状态
符号
初态使用实心圆表示、终态使用一对同心圆表示;中间状态使用圆角矩形表示并且用两条横线分成3部分上部为状态名称,中部为状态变量的名字和值,下部是活动表(事件名(参数表)/动作表达式
状态图中两个状态之间带箭头的连线称为状态转换,箭头指明转换方向(事件表达式的语法:事件说明[守卫条件]/动作表达示
层次方框图
层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构
验证软件需求
一致性、完整性、现实性、有效性

浙公网安备 33010602011771号