Toggle navigation
Mr.Strawberry's House
文章
网址导航
更多
甜品站
杂物间
新版博客
关于 快刀切草莓君
友情链接
妙妙屋开发日志
注册
登录
搜索
文章列表
分类 标签
归档
# 软件工程笔记 1 曾在MOOC上走马观花地学习了软件工程,现在又在学校选这门课作为辅修,在此对所学进行记录。 [TOC] ## 概述 ### 软件危机 开发周期长、成本高、质量差、适应性差和难维护 用户:提出对需求的描述,开发人员在开发中完善。 项目需求在变化 ### 方法学 - **传统**方法学(生命周期/结构化范型) 将软件生命周期划分为若干个阶段,每个阶段结束前进行技术审查和管理复审(文档)。 - **面向对象**方法学(数据和行为同等重要) - 对象 类 父子,层次结构 对象间依靠消息联系 - 继承,多态,可重用性 - 雨伞行为 - 项目跟踪控制 - 风险管理 - 品质保障 - 形式化技术分析 - 软件度量 - 软件配置管理 - 重用管理 ### 软件生命周期 **定义、开发、维护**三个时期,七个阶段。 1. 软件定义 - 问题定义 - 可行性研究 - 需求分析 2. 开发(系统设计和系统实现) - 总体设计 - 详细设计 - 编码和单元测试 - 综合测试 3. 维护时期 数据流图,E-R图,对象图 ### 软件过程 - **瀑布**模型: - 阶段间具有 顺序性 和 依赖性 所有东西在对应接端完成 - 优点:强迫使用规范方法,严格规定每个阶段的文档,每个阶段都经过质量检验 - 缺点:人会犯错误 存在反馈环 - **快速原型**模型:不带反馈环 线性顺序 快速完成的是最终产品的部分功能 - 原型系统通过用户交互验证 符合用户需求 日后不会因为规格说明文档的错误而有较大返工 - 开发人员已经通过原型学习了许多东西,减少了接下来犯错的可能性 - **增量**模型:增量构件 设计、编码、集成和测试。 - 每个构件由多个相互作用的模块构成。 - 使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。 - 优点:较短时间内提交可完成部分工作的产品,逐步增加功能,用户有充裕的时间学习和适应新产品 - 难点:集成新的增量构件时,必须不破坏原来已开发的产品,要将软件的体系结构设计得便于扩充 - 风险更大得增量模型 各个构件并行进行 - **螺旋**模型:使用原型及其他方法降低风险 ![](http://zrawberry.com/media/picture/984c971cb36d452c951240c7b37b5220.png) - 敏捷过程 适应性 - 极限编程:计划、设计、代码和任务 - **微软过程** - 风险管理,稳定性可预测性,**快速迭代循环**的开发模式,软件配置项基线化后期冻结产品,里程碑评审会 - 生命周期:规划、设计、开发、稳定、发布 ## 可行性研究 是用最小的代价在尽可能短的时 间内确定问题是否能够解决。 ### 任务和过程 分析问题定义、导出逻辑模型、探索若干主要解法 **三个方面**分析:技术、经济、操作 **八个步骤**: 1. 复查 系统规模和目标 2. 研究目前 正在使用的系统 3. 导出新系统的 高层逻辑模型 4. 进一步 定义问题 5. 导出和评价 可选的解法 6. 推荐行动方针 是否继续 7. 草拟开发计划书 详细进度表 成本估计 8. 写文档提交审查 ### 系统流程图 系统流程图 是概括地描绘 物理系统 的传统工具。 基本符号: ![](http://zrawberry.com/media/picture/d435d764da154e22a0053a1f1bfee6a4.png) **分层次**描绘:高层次(总体概况),低层次(详细描绘 每个关键功能) ### 数据流图(DFD) **数据流图**(DFD)是一种图形化技术,它描绘**信息流和数据**从输入移动到输出的过程中所经受的**变换**。 **基本符号** | 图形 | 作用 | | --- | --- | | 正方形 | 数据的源点或终点 | | 圆角矩形 | 变换数据的处理 | | 开口矩形 | 数据存储 | | 箭头 | 数据流 | **附加符号** ![](http://zrawberry.com/media/picture/227edcbc25e046e39cd695f96c5dd053.png) **命名** - 先数据流,再命名相关处理 - 名字反应处理功能 - 及物动词+宾语 ### 数据字典 数据字典是关于数据的信息的集合,也就是对数据流 图中包含的所有元素的定义的集合。 包括:数据流、数据存储、处理、数据流分量 **定义数据**的方法:顺序、选择、重复 **用途**:分析阶段的工具,每个元素的控制信息,开发数据的第一步 实现:结构化分析与设计工具 ### 成本/效益分析 **成本估计**:代码行,任务分解,自动估计成本 ## 需求分析 ### 任务 1. **确定对系统的综合要求** - 功能需求 - 性能需求 - 可靠性 可用性需求 - 出错处理需求 - 接口需求 (系统与环境通信的格式) - 约束 - 逆向需求 (系统不应该做什么) - 将来可能提出的需求 2. **分析系统的数据要求** 使用数据字典定义数据,利用图形工具辅助描绘。 3. 导出**逻辑模型** - 数据流图 - 实体-联系图 (E-R) - 状态转换图 - 数据字典 - 主要处理算法 4. 修正系统的开发计划 使用**实体联系图**建立数据模型,使用**数据流图**建立功能模型,再使用**状态转换图**建立行为模型。 ### 实体-联系图 - 包含 数据对象、 数据对象的属性及数据对象彼此间相互连接的关系。 - 联系的方式:1对1 1对多 多对多 - 建立ER图的过程 - 提取所有的实体(对象)和对象之间的关系 - 建模他们之间关系的整体模型 - 进一步描述所有实体、关系的属性信息 - 符号 - 实体 矩形框 - 关系 连接相关实体的菱形框 - 属性 椭圆形或圆角矩形 用直线连接至实体或关系 ![](http://zrawberry.com/media/picture/5e0f59a7c7e64a80954ce8fb191e6956.png) ### 数据规范化 信息通常以一定方式组织并存储在**数据库**或文件中,为**减少数据冗余,避免出现插入异常或删除异常,简化修改数据**的过程,通常需要把**数据结构规范化**。 第一范式, 第二范式,第三范式,BC范式,第四范式 ### 状态转换图 1. 状态:系统的行为模式 初态、中间状态、终态 2. 事件:事件就是引起系统做动作或(和)转换状态的**控制信息** 3. 符号: - 初态 实心圆 - 终态 同心圆,内为实心圆 - 中间状态 圆角矩形(水平线分成 状态名、变量名和值、活动表) - **活动表** 事件名(参数表)/ 动作表达式 - 活动表标准事件 entry exit do - 带箭头的连线 **状态转换** 由事件触发 - 事件表达式在箭头线上标出 ![](http://zrawberry.com/media/picture/eb534ef5493b4a3f97792abc9df2b849.png) **其他图形工具**:层次方框图(树形结构的一系列多层次矩形框)、Warnier图、IPO图 ### 验证软件需求 1. 一致性验证:主要是分析需求描述中是否 存在一些需求冲突问题 2. 完整性验证:需求必须是完整的,规格说 明书应该包括用户需要的每一个功能或性能 3. 现实性验证:验证需求内容的可实现性 4. 有效性验证:验证需求对于实际的问题解 决确实是正确有效的; ## 形式化说明技术 形式化技术能在软件的规约上取得一致性,是一种有效的交流方式。 软件工程使用方法的描述: - 非形式化:自然语言描述 - 形式化:描述系统性质 基于数学的方式 - 半形式化:数据流图、实体联系图等 ### 有限状态机 例子:保险箱 左右LR转动 有3个卡口 ![](http://zrawberry.com/media/picture/4831c4cbb26a49ff919c656da9ebef9c.png) 有限状态机的组成 5元组 状态集:{锁定,A, B, 解锁, 报警} 输入集:{1L, 1R, 2L, 2R} 转换函数:当前状态 + 事件 => 下个状态 初始态:锁定 终态集:{解锁,报警} ### Petri网 Z语言 这都什么奇奇怪怪的东西↑ 不看了 May 5th 更新
文章信息
标题:软件工程笔记 1
作者:快刀切草莓君
分类:计算机基础课程
发布时间:2020年4月21日
最近编辑:2020年5月6日
浏览量:1138
↑