文章目录
- 第一部分 软件与软件工程
-
- 1. 软件的概念、特点
-
- 软件的分类
- 软件危机
-
- 软件危机表现
- 解决途径
- 2. 软件工程
-
- 三要素
- 软件工程目标之间的关系
- 软件工程的原则
-
- 原则一:抽象
- 原则二:信息隐蔽
- 原则三:模块化
- 原则四:局部化
- 原则五:确定性
- 原则六:一致性
- 原则七:完备性
- 原则八:可验证性
- 软件工程的本质特征
- 软件工程的基本原理
-
- 原理一:用分阶段的生命周期计划严格管理
- 原理二:坚持进行阶段评审
- 原理三:实行严格的产品控制
- 原理四:采用现代程序设计技术
- 原理五:结果应能清楚地审查
- 原理六:开发小组的人员应该少而精
- 3. 软件工程方法学
-
- 方法学三要素
- 使用最广泛的**软件工程方法学**
- 两种程序设计方法
- 软件生命周期(传统方法学)
-
- 1.问题定义
- 2. 可行性研究
- 3. 需求分析(功能分析)
- 4. 总体设计
- 5. 详细设计
- 6. 编码和单元测试
- 7. 综合测试
- 8. 软件维护
- 软件开发模型(过程)
-
- 1. 瀑布模型
- 2. 快速原型模型
- 3. 增量模型
- 4. 螺旋模型
- 5. 构建集成模型
- 第二部分 可行性研究(含初步需求分析)
-
- 1. 可行性研究的任务
-
- 目的和任务
- 本质
- 步骤
- 投入时间
- 2. 可行性研究过程
-
- 步骤一:复查系统规模和目标
- 步骤二:研究目前正在使用的系统
- 步骤三:导出新系统的高层逻辑模型
- 步骤四:进一步定义问题
- 步骤五:导出和评价供选择的解法
- 步骤六:推荐行动方针
- 步骤七:草拟开发计划
- 3. 系统流程图
- 4. 数据流图 DFD
-
- 顶级数据流图(0级)
- 符
- 例子
- 分层数据流图
- 5. 数据字典 DD
- 6. 成本/效益分析
- 7. 小结
- 第三部分 软件需求分析基础
-
- 1. 需求分析的任务和步骤
- 2. 需求获取的常用方法
- 3. 分析建模
- 4. 软件需求说明
- 5. 结构化分析方法
- 6. 面向对象方法
第一部分 软件与软件工程
1. 软件的概念、特点
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据以及相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。
软件的分类
软件工程的原则
原则一:抽象
抽取事物最基本的特性和行为,忽略非基本的细节。采用分层次抽象、自顶向下、逐层分解的办法控制软件开发过程的复杂性。例如:软件瀑布模型、结构化分析方法、结构化设计方法,以及面向对象建模技术等都体现了抽象的原则。
原则二:信息隐蔽
将模块设计成“黑箱”,实现的细节隐藏在模块内部,不让模块的使用者直接访问。
原则三:模块化
模块是程序在逻辑上相对独立的成分,是独立的编程单位,应有良好的接口定义。模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。
原则四:局部化
要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证 模块之间具有松散的耦合,模块内部具有较强的内聚。这有助于加强模块的独立性,控制解的复杂性。
原则五:确定性
软件开发过程中所有概念的表达应该是确定的、无歧义的、规范的。这有助于人们之间在交流时不会产生误解、遗漏,保证整个开发工作协调一致。
原则六:一致性
整个软件系统(包括程序、文档和数据)的各个模块应使用一致的概念、符 和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致。
原则七:完备性
软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。
原则八:可验证性
开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统已于检查、测试、评审的原则,以确保系统的正确性。
软件工程的本质特征
- 软件工程关注大型程序的构造
- 软件工程的中心课题是控制复杂性
- 软件经常变化
- 开发软件的效率非常重要
- 和谐地合作是开发软件的关键
- 软件必须有效地支持它的用户
- 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人
软件工程的基本原理
原理一:用分阶段的生命周期计划严格管理
把软件生命周期划分为若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发和维护工作进行管理。
原理二:坚持进行阶段评审
软件的质量保证工作不能等到编码阶段结束之后再进行。错误发现与改正越晚,所需付出的代价也越高。因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。
原理三:实行严格的产品控制
原理四:采用现代程序设计技术
采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。
原理五:结果应能清楚地审查
应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。
原理六:开发小组的人员应该少而精
3. 软件工程方法学
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。
方法学三要素
- 方法,回答“怎么做”的问题
- 工具
- 过程
使用最广泛的软件工程方法学
- 传统方法学→面向数据流、结构化
- 软件分析→总体设计→详细设计→面向过程的编码→测试
- 面向对象方法学
- 软件分析与对象抽取→对象详细设计→面向对象的编码→测试
两种程序设计方法
- 结构化程序设计
- 程序=数据结构+算法
- 面向对象程序设计
- 程序=对象+消息
软件生命周期(传统方法学)
- 计划时期
- 问题定义
- 可行性分析
- 开发时期
- 需求分析
- 软件设计
- 编码
- 测试
- 运行时期
- 软件维护
1.问题定义
问题定义阶段必须回答的关键问题是:“要解决的问题是什么
通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面 告,经过讨论和必要的修改之后这份 告应该得到客户的确认。
2. 可行性研究
这个阶段回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决方法吗
技术上、经济上、操作上、时间上、法律上
3. 需求分析(功能分析)
这个阶段的任务仍然不是具体解决问题,而是确定“为了解决这个问题,目标系统必须做什么,主要是确定目标系统必须具备哪些功能。
系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图(DFD)、数据字典(DD)和简要的算法表示。
在需求分析阶段确定的系统逻辑模型是以后设计和实现系统的基础。这个阶段的一项重要任务是用正式文档准确地记录对目标系统的需求,这份文档通常称为 规格说明书(specification)。(SRS)
4. 总体设计
这个阶段必须回答的关键问题是:“怎样实现目标系统
成果:系统结构图(SC)
一个程序应该由若干个规模适中的模块按合理的层次结构组织而成。总体设计的另一项主要任务是设计程序的体系结构,也就是确定程序由哪些模块组成以及模块间的关系。
5. 详细设计
这个阶段的任务就是把解法具体化,也就是回答这个关键问题:“应该怎样具体地实现这个系统呢
这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。这种规格说明应该包含必要的细节,程序员可以根据它们写出实际的程序代码。
详细设计也称为模块设计,在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。
6. 编码和单元测试
这个阶段的关键任务是写出正确的、容易理解、容易维护的程序模块。
程序员应该根据目标系统的性质和实质环境,选择一种适当的高级程序设计语言,把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。
7. 综合测试
这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。
最基本的测试是集成测试和验收测试。
集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。
验收测试是按照规格说明书的规定,由用户对目标系统进行验收。
必要时还可以再通过现场测试或平行运行等方法对目标系统进一步测试检验。
8. 软件维护
这个阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。
- 改正性维护,也就是诊断和改正在使用过程中出现的软件错误;
- 适应性维护,即修改软件以适应环境的变化
- 完善性维护,即根据用户的要求改进或扩充软件使它更完善;
- 预防性维护,即修改软件为将来的维护活动预先做准备。
软件开发模型(过程)
- 传统开发模型
- 瀑布模型(waterfall model)
- 快速原型模型(rapid prototype model)
- 演化开发模型
- 增量模型(incremental model)
- 螺旋模型(spiral model)
- 面向对象开发模型
- 构建集成模型(component integration model)
- 形式化开发模型
- 转换模型(transformational model)
- 净室模型(clean room model)
1. 瀑布模型
瀑布模型是文档驱动的。
快速原型模型适用于中小型软件,且需求模糊的用户。
快速原型模型的特点:
- 快速开发工具
- 循环
- 低成本
种类:
- 渐进型
- 抛弃型
3. 增量模型
使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
**增量:**小而可用的软件
增量模型的特点:
- 在前面增量的基础上开发后面的增量
- 每个增量的开发可用瀑布或快速原型模型
- 迭代的思路
螺旋模型的特点:
- 瀑布模型+快速原型+风险分析
- 迭代过程
一个螺旋式周期:
- 确定目标、选择方案、选定完成目标的策略
- 风险角度分析该策略
- 启动一个开发阶段
- 评价前一步的结果,计划下一轮的工作
5. 构建集成模型
4. 数据流图 DFD
数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换(加工、处理)。
- 在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
- 数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具
- 设计数据流程图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能。
顶级数据流图(0级)
- 第一步从问题描述中提取数 据流图的4种成份:
- 首先考虑数据的源点和终点。
- 再次考虑处理。
- 最后,考虑数据流和数据存储。系统把订货 表送到采购部,因此订货 表是一个数据流;事务需要从仓库送到系统中,显然事务是另一个数据流。产生 表和处理事务在时间上明显不匹配,所以每当有一个事务发生时立即处理它,然而每天只产生一次订货 表。因此,
5. 数据字典 DD
6. 成本/效益分析
7. 小结
第三部分 软件需求分析基础
1. 需求分析的任务和步骤
2. 需求获取的常用方法
3. 分析建模
4. 软件需求说明
5. 结构化分析方法
6. 面向对象方法
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!