第三章 软件工程基础
软件工程第三章

条目格式如下: 数据流名: 组成: 流量:
3.5 需求分析方法 SIT 来源: 去向: · 文件条目。 文件条目主要说明文件由哪些数据项组成,存储方式和
存取频率等。 条目格式如下: 文件名: 组成: 存储方式: 存储频率:
3.5 需求分析方法 SIT · 数据项条目。 数据项名: 类型: 长度: 取值范围: · 加工条目。 加工条目主要说明加工的输入数据、输出数据及其加工
3.2 需求分析任务 SIT
二、分析系统的数据要求 分析系统的数据要求通常采用建立概念模型的方法。
三、导出系统的逻辑模型 综合上述两项分析的结果可以导出系统的详细的逻辑模
型,通常用数据流图、数据字典和主要的处理算法描述这个 逻辑模型。 四、修正系统开发计划
根据在分析过程中获得的对系统的更深入更具体的了解, 可以比较准确地估计系统的成本和进度,修正以前制定的开 发计划。 五、开发原型系统
3.3.2用户需求
用户需求是从用户角度来描述系统功能和非功能需求, 以便让不具备专业技术方面知识的用户能看懂。这样的需求 描述只描述系统的外部行为,要尽量避免对系统设计特性的 描述。
3.3 软件需求分析类型 SIT
3.3.3系统需求
系统需求是比用户需求更详细的需求描述,是系统实现 的基本依据,因此,是一个完全的和一致的系统描述,是软 件工程人员系统设计的起点。
需求描述的结构化是围绕三个主要内容进行的,一是系 统操作对象,二是系统运行的功能,三是系统处理的事件。
3.6 软件需求工程管理 SIT 软件需求管理指的是一个为系统的需求进行启发、组织、
建档的系统方法,一个建立和维护客户和项目团队之间关于 变更系统需求所达成的一致性的过程。
需求模型是指将软件需求的捕获与开发、管理作为一个 工程,以软件需求的捕获与开发、管理为研究对象,抽象化 的工程参考模型,用以指导软件需求的各项实践活动。
软件工程基础实践手册

软件工程基础实践手册第一章软件工程概述 (2)1.1 软件工程的定义与目标 (2)1.2 软件工程的发展历程 (2)1.3 软件工程的基本原则 (3)第二章需求分析 (4)2.1 需求收集与识别 (4)2.2 需求分析与建模 (4)2.3 需求确认与验证 (4)第三章软件设计 (4)3.1 软件设计的基本原则 (4)3.2 软件架构设计 (5)3.3 软件详细设计 (5)第四章编码实践 (6)4.1 编程语言与工具选择 (6)4.2 编码规范与技巧 (6)4.3 代码审查与重构 (7)第五章测试与调试 (7)5.1 软件测试基本概念 (8)5.2 测试策略与过程 (8)5.3 调试技巧与方法 (8)第六章软件项目管理 (9)6.1 项目管理基本理论 (9)6.1.1 项目定义 (9)6.1.2 项目生命周期 (9)6.1.3 项目组织结构 (9)6.1.4 项目管理知识体系 (9)6.2 项目计划与执行 (10)6.2.1 项目计划 (10)6.2.2 项目执行 (10)6.3 项目监控与评估 (10)6.3.1 项目监控 (10)6.3.2 项目评估 (11)第七章软件维护与演化 (11)7.1 软件维护的类型与策略 (11)7.2 软件演化与升级 (11)7.3 软件退役与替换 (12)第八章软件质量保证 (13)8.1 软件质量标准与模型 (13)8.2 质量管理过程与方法 (13)8.3 质量评估与改进 (13)第九章软件工程伦理与法律 (14)9.1 软件工程伦理原则 (14)9.1.1 尊重用户权益 (14)9.1.2 保障软件质量 (14)9.1.3 促进公平竞争 (14)9.1.4 提升行业形象 (14)9.2 软件版权与知识产权 (14)9.2.1 软件版权 (14)9.2.2 知识产权 (15)9.3 法律法规与合规性 (15)9.3.1 法律法规 (15)9.3.2 合规性 (15)第十章软件工程实践案例分析 (15)10.1 项目案例分析 (15)10.2 团队协作与沟通 (16)10.3 实践经验总结与展望 (16)第一章软件工程概述1.1 软件工程的定义与目标软件工程作为一门跨学科领域,旨在通过系统化的方法、技术和工具,研究和解决软件开发过程中的各种问题。
计算机二级

(5)评审直到确认完全符合用户对软件的需求
第二节 结构化分析方法
二、结构化分析方法 2、结构化分析的常用工具 (1)数据流程图(DFD—Data Flow Diagram) 数据流程图是描述数据处理过程的工具,是需求理解的 逻辑模型的图形表示。 数据流程图中的主要图形元素与说明如下:
第二节 结构化分析方法
第五节 程序的调试
程序调试由两部分构成: (1)根据错误的迹象确定程序中错误的确切性质、原 因和位置。 (2)对程序进行修改,排除这个错误。
第五节 程序的调试
1、程序调试的基本步骤 (1)错误定位 (2)修改设计和代码,以排除错误 (3)进行回归调试,防止引进新错误
第五节 程序的调试
2、程序调试方法 (1)强行排错法 (2)回溯法 (3)原因排除法
第一节 软件工程基本概念
二、软件危机与软件工程 软件危机是泛指在计算机软件的开发和维护过程中所遇 到的一系列严重问题。 软件工程的核心思想是把软件产品看作一个工程产品来 处理。以期达到工程项目的三个基本要素:进度、经费 和质量目标。
第一节 软件工程基本概念
三、软件生命周期 将软件产品从提出、实现、使用维护到停止使用退役的 过程称为软件生命周期。
第四节 软件测试
三、软件测试技术与方法 2、白盒测试方法与测试用例设计 白盒测试也称结构测试或逻辑驱动测试。它是根据软件 产品的内部工作过程,检查内部成分,以确认每种内部 操作符合设计规格要求。 白盒测试把测试对象看成一个打开的盒子,允许测试人 员利用程序内部的逻辑结构及有关信息来设计或选择测 试用例,对程序所有的逻辑路径进行测试。
第四节 软件测试
三、软件测试技术与方法 3、黑盒测试方法与测试用例设计 黑盒测试也称功能测试或数据驱动测试。 黑盒测试是对软件已经实现的功能是否满足需求进行测 试和验证。黑盒测试完全不考虑程序内部的逻辑结构和 内部特征,只依据程序的需求和功能规格说明,检查程 序的功能是否符合它的功能说明。
全国计算机等级考试二级公共基础知识要点汇总[规整]
![全国计算机等级考试二级公共基础知识要点汇总[规整]](https://img.taocdn.com/s3/m/5a409e56842458fb770bf78a6529647d272834fd.png)
全国计算机等级考试二级公共基础知识要点汇总第一章数据结构与算法1.1 算法算法:是指解题方案的准确而完整的描述。
算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。
算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。
特征包括:(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义;(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
基本运算包括:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:顺序结构、选择结构、循环结构。
算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。
算法复杂度:算法时间复杂度和算法空间复杂度。
算法时间复杂度是指执行算法所需要的计算工作量。
算法空间复杂度是指执行这个算法所需要的内存空间。
1.2 数据结构的基本概念数据结构研究的三个方面:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。
数据结构是指相互有关联的数据元素的集合。
数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。
数据的存储结构有顺序、链接、索引等。
线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1.3 线性表及其顺序存储结构线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。
在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。
软件工程基础

软件工程基础软件工程是指应用工程原理、方法和工具来开发和维护高质量的软件系统。
作为计算机科学的重要分支,软件工程为我们理解和应用软件开发的基础提供了框架和指导。
本文将介绍软件工程的基本概念、原则和方法,以及其在软件开发过程中的重要性。
一、软件工程概述软件工程是一门系统性的学科,旨在通过应用科学和工程原理,将计算机科学理论和方法应用于软件的开发和维护中。
与传统的工程领域不同,软件工程面临着特殊的挑战和复杂性,包括软件产品的不可见性、复杂性和易变性等。
软件工程的核心目标是提高软件的质量和效率,使其满足用户的需求并具备可维护性。
为了实现这一目标,软件工程引入了许多原则和方法,如需求分析、系统设计、编码和测试等。
这些方法和原则为软件开发过程提供了指导和规范,有助于提高开发团队的协作效率和开发质量。
二、软件工程原则软件工程根据实践总结出了许多重要的原则,在软件开发中起到了指导作用。
下面列举了其中几个重要的原则:1. 模块化:软件应该通过模块化的方式进行设计和开发。
模块化可以提高代码的复用性和可维护性,同时也降低了开发的复杂性。
2. 可重用性:软件应该促进可重用性。
通过开发可重用的组件和模块,可以提高软件开发的效率,并减少重复劳动。
3. 适应性:软件应该具备适应性,即能够满足用户的需求,并能够随着需求的变化进行调整和扩展。
4. 可测试性:软件应该具备可测试性,即能够进行有效的测试和验证。
通过测试,可以发现和修复潜在的问题,提高软件的质量。
5. 可维护性:软件应该具备可维护性,即能够方便地进行修改和维护。
良好的软件结构和文档可以降低维护成本,并延长软件的使用寿命。
三、软件开发方法软件工程提供了多种开发方法和过程,以帮助开发团队有效地管理和组织开发任务。
下面介绍几种常见的软件开发方法:1. 瀑布模型:瀑布模型是一种线性的开发过程模型,依次进行需求分析、系统设计、编码和测试。
每个阶段完成后,才能进入下一个阶段。
瀑布模型适用于需求变化较少的项目,但在需求变化频繁的项目中效果较差。
第3章 软件工程基础(习题答案).doc

第3章习题答案3」什么是软件危机?为什么会岀现软件危机?解答:软件危机是指落后的软件生产方式无法满足开发复杂软件的需求,从而导致软件开发与维护过稈屮出现一系列严重的问题,主要表现在:(1)软件开发费用和进度估计不准。
(2)软件的正确性和可靠性难以保证。
(3)文档不全,导致软件维护难度加大。
总Z,可将软件危机归结为:成木、质量和生产率等问题。
到了20世纪50年代末和60年代初,随着计算机应用的普及,软件的规模和复杂度提高了,“家庭作功”式的方法已经无法适应软件的开发。
软件开发的周期变长、费用上涨,导致软件的生产效率下降、目标软件的正确性难于保证,即出现了“软件危机”。
3.2软件T程的概念是什么?软件T程的忖标和原则是什么?解答:软件工程是指导计算机软件开发和维护的一门学科。
软件工程从管理和技术两个方面,研究如何更好地开发和维护计算机软件,内容主要包括:软件开发技术和软件工程管理。
软件工程的日标是在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。
软件工稈的原则,在软件开发各阶段,应遵循一些基木原则,包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
3.3什么是软件的生命周期?瀑布模型把软件生命周期划分成几个时期、几个阶段?每一个阶段的任务是什么?每个阶段产生的文档是什么?解答:软件从提出、开发、使用到退役的整个过稈称为软件生命周期,软件生命周期可划分为3个时期,共8个阶段,毎个阶段应完成的基本任务和产生的文档如下表所示。
时期阶段任务文档定义期(计划期)问题的定义理解用户要求,明确工作目标计划任务书可行性研究可行性方案分析需求分析软件系统的目标及应完成的任务需求规格说明书开发期概要设计(总体设计)(系统设计)系统逻辑设让,明确软件模块结构,及各模块间的调用关系软件概要设计说明书数据库/数据结构设计说明书集成测试计划详细设计系统的模块设计,对各模块进行功能说明,实现细节描述软件详细设计说明书编码编写程序代码程序、数据、详细注释测试和调试单元测试、集成测试测试大纲、方案,测试用例,测试结果维护期使用和维护运行和维护运行、修改记录3.4什么是结构化方法?结构化分析、结构化设计、结构化程序设计分别用在软件生命周期的哪一个阶段?解答:结构化开发方法是现有软件开发方法屮最成熟、应用最广泛的方法。
03第3章软件工程基本概念

二级公共基础知识第三章软件工程基本概念
重点:需求分析、概要设计、详细设计、软件测试和软件调试的作用、方法等
一、 软件工程基本概念
1. 软件是计算机系统中与硬件相互依存的重要部分,包括程序、数据及相关的 文档 。
其中,程序 是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。
2. 下列叙述中,正确的是(D)。
A.软件就是程序清单 B.软件就是存放在计算机中的文件 C.软件应包括程序清单及运行结果 D.软件包括程序和文档
3. 软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)
4. 软件工程的出现是由于(软件危机的出现)
5. 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(软件危机)
软件工程概念的出现源自软件危机。
所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
总之,可以将软件危机归结为成本、质量、生产率等问题。
6. 开发大型软件时,产生困难的根本原因是(大型系统的复杂性)。
7. 软件危机出现于20世纪60年代末,为了解决软件危机,人们提出了软件工程学 的原理来设计软件这就是软件工程诞生的基础。
8. 下列不属于软件工程的3个要素的是(D)A.工具 B.过程 C.方法 D.环境。
计算机软件使用的技能训练建议

计算机软件使用的技能训练建议第一章:编程语言基础计算机软件的开发离不开编程语言,掌握一门编程语言是每个软件工程师的基本要求。
推荐初学者从Python开始学习,因为它具有简洁易懂的语法和强大的功能。
首先,学习Python的基本语法和数据类型,并掌握条件语句、循环语句等基本控制结构。
然后,深入了解Python的函数、列表、字典和文件操作等高级特性。
最后,学习Python的面向对象编程思想和模块化开发方法。
第二章:算法和数据结构算法和数据结构是计算机软件开发中的重要基础。
为了写出高效且可维护的软件,开发人员应该掌握常用的算法和数据结构。
建议从学习基本的排序和查找算法开始,如冒泡排序、快速排序、二分查找等。
然后,学习线性数据结构如数组、链表、栈和队列,并了解它们的应用场景和操作方法。
最后,学习树、图等非线性数据结构,并掌握它们的遍历和搜索算法。
第三章:软件工程基础软件工程是指将系统化、规范化的、可度量的方法应用于软件的开发、运行和维护的过程。
掌握软件工程基础有助于提高软件开发的质量和效率。
建议学习软件生命周期、需求工程和软件设计等基本概念。
了解软件项目管理工具如Git和JIRA,以及团队协作工具如Slack和Trello等。
同时,掌握软件测试的基本原理和技巧,如单元测试、集成测试和验收测试等。
第四章:数据库管理与SQL数据库是存储和管理数据的重要工具,掌握数据库管理和SQL语言是软件开发人员的基本能力。
学习关系型数据库如MySQL和Oracle的基本概念和操作方法。
了解数据库的设计原则,创建表和定义关系。
学习SQL语言,掌握增删改查等基本操作,并了解SQL优化技巧。
同时,了解NoSQL数据库如MongoDB和Redis的特点和使用场景,掌握它们的基本操作和优化技巧。
第五章:前端开发技术前端开发是制作和实现网页、网站和应用程序用户界面的技术。
推荐学习HTML、CSS和JavaScript作为开发前端的基础技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3)软件计划 i 任务 分析和估算 分析 功能的界限(应包括哪些,不含哪些功能) 估算 开发的资源、费用、进度等进行定量估计 ii 资源 人力资源:技术人员:分析设计人员、编码测试人员、管理人员 软件资源:支持软件、应用软件 硬件资源:开发系统的硬件设备、新系统的硬件设备 描述资源(具体规格),资源的起始时间和终止时间 iii 进度安排 限时进度安排——用户 自定义进度安排——公司 4)需求分析: 弄清用户对软件系统的全部需求并用需求说明书的形式准确地表达 出来。当采用结构化分析方法时,需求说明通常由数据流图、数据字典 和加工说明等一整套文档组成。
软件工程 — 一种层次化技术
工具 方法 过程
软件工程三个要素:方法、工具、过程
软件工程过程包含4种基本活动: (1)P(Plan)——软件规格说明。规定软件的 功能及其运行时的限制。 (2)D(Do)——软件开发。产生满足规格说明的 软件。 (3)C(Check)——软件确认。确认软件能够满 足用户提出的要求。 (4)A(Action)——软件演进。为满足客户的 变更要求,软件必须在使用的过程中演进。
(1)总体设计(概要设计)
程序结构图的基本图符: 模块用一个矩形表示,箭头表示模块间的调用关 系。在结构图中还可以用带注释的箭头表示模 块调用过程中来回传递的信息。还可用带实心 圆的箭头表示传递的是控制信息,空心圆箭心 表示传递的是数据信息。
目前用于写加工规格说明的工具有结构化语言、判定 表和判定树。
三)加工规格化说明工具
a.结构化语言: 自然语言加上结构化形式化的语言。是一种介于自然语言和程序 设计语言之间的语言。 b.判定树 是判定表的图形表示。 c.判定表 采用表格化的形式,适于表达含有复杂判断的加工逻辑。 d.加工说明卡片 加工说明可以像字典条目一样记载在卡片上
二
结构化生命周期方法
1. 计划时期
主要任务: 是分析用户需求、新系统的主要目标、开发系统的可行性 1)问题定义
任务:确定软件系统的功能和要解决的问题(软件系统的目标和范围说明)
特点:时间较短 经济可行性:技术可行性:法律可行性:运行可行性:方案可行性 最终提交:
n
2)可行性研究:
可行性分析报告(软件开发阶段的第一个文档)
2. 软件设计
1)总体设计:主要任务是建立 软件的总体结构,画出有模块组 成的软件结构图或层次图。又称 结构设计。
据 数 加 工 过程设计
对 规 实 数 体 象 据 格 关 描 流 说 系 数据词典 述 图 明 图 状态转换图 控 制 规 格说 明
接口设计 体系结构设计 数据设计
2)详细设计:针对单个模块的 设计,目的是确定模块内部的过 程结构。要求为每一个模块提供 一个模块过程性描述。详细说明 实现该功能的算法和数据结构, 又称算法设计。
这是在软件项目计划阶段应该做的事情,包括四个方面的研究:
经济可行性 :进行成本∕效益分析。从经济角度判断系统开发是否 “合算”。
技术可行性 :进行技术风险评价。从开发者的技术实力、以往工作
基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条 件下成功的可能性。 法律可行性 :确定系统开发可能导致的任何侵权、妨碍和责任。 方案的选择 :评价系统或产品开发的几个可能的候选方案。最后给 出结论意见。
特点:
需求分析方法 (1)结构化需求分析方法(重点) (A) 面向数据流的结构化分析方法 B) 面向数据结构的Jackson方法 C) 面向数据结构的结构化数据系统开发方法 (2)面向对象的分析方法。
需求分析一般分为需求获取、需求分析、编写需求规格 说明书和需求评审四个步骤进行。
结构化方法包括配套的结构化分析方法、结构 化设计方法和结构化编程方法。核心和基础是结构 化程序设计理论。
ERD用于数据建模,DFD用于功能建模,STD用于行 为建模。
一)数据流图(DFD):软件系统逻辑模型的一种图形 表示
1.特点:直观 2.数据流图的基本符号
二)数据字典
1· 定义: 来自分析模型中包含了对数据对象、功能和控制的表示。 在每一种表示中,数据对象和控制项都扮演一定的角色。为表示每
个数据对象和控制项的特性,建立了数据词典。
(3)软件工程原则:抽象、信息隐蔽、模块化、局部化、 确定性、一致性、完备性和可验证性。
5 软件工程的内容
基于瀑布模型的结构化生命周期方法
软件开发方法学
软件开发技术 软件工具
基于动态需求的快速原型法
基于结构的面向对象的软件开发方法
用来开发软件的软件 支持软件开发的环境,软件工具及其 相互间关系的总和 人力管理、进度安排、质量保证、资 源管理
需求分析的任务
任务:需求分析的任务就是导出目标系统的逻辑模型,解决“做 什么”的问题。
软件需求分析的目标是深入描述软件的功能和性能,确定软件设计 的约束和软件同其它系统元素的接口细节,定义软件的其它有效性 需求。 需求分析阶段研究的对象是软件项目的用户要求。一方面,必须全 面理解用户的各项要求,但又不能全盘接受所有的要求,另一方面, 要准确地表达被接受的用户要求。只有经过确切描述的软件需求才 能成为软件设计的基础。 准确性和一致性。是连接计划时期和开发时期的桥梁,也是软件设 计的依据。 清晰性和没有二义性。 直观、易读和易于修改。
需求分析主要解决“做什么”的问题,而软件 设计主要解决“怎么做”的问题。 软件设计主要内容包括: 软件结构设计、数据设计、接口设计、过程设 计。(按技术观点划分)
软件设计分两步完成,即概要设计和详细设 计。(按工程管理角度划分)
1、软件设计的基础 软件设计的基本原理包括:抽象、模块化、信息 隐蔽和模块独立化。 模块的耦合性和内聚性是衡量软件的模块独立性 的两个定性指标。 内聚性:是一个模块内部各个元素间彼此结合的 紧密程度的度量。
全国计算机等级考试
公共基础知识
主讲人:刘槐德
软件工程基础
一 软件危机与软件工程
1、软件的相关概念 计算机软件是包括程序、数据及相关文档的完 整集合。 软件的特点包括: 软件是一种逻辑实体; 具有抽象性; 软件的生产与硬件不同,它没有明显的制作
过程;
软件在运行、使用期间不存在磨损、老化问
数据词典精确地、严格地定义了每一个与系统相关的数据元素,并 以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、 输出、存储成分和中间计算有共同的理解。
数据字典的作用是对数据流图中出现的被命名的图形元素的 确切解释
2· 词条描述
在数据词典的每一个词条中应包含以下信息: ① 名称:数据对象或控制项、数据存储或外部实体的名字。 ② 别名或编号。 ③ 分类:数据对象?加工?数据流?数据文件?外部实体?控制项 (事件∕状态)? ④ 描述:描述内容或数据结构等。 ⑤ 何处使用:使用该词条(数据或控制项)的加工。
3、软件生命周期
软件生命周期:软件产品从提出、实现、 使用维护到停止使用退役的过程。 软件生命周期三个阶段: 软件定义 软件开发 运行维护
可行性研究 初步项目计划 需求分析 定义 阶段
软件生命周期的主要活动阶段 如下图:
概要设计
详细设计 实现 测试 使用 维护 退役 维护 阶段 开发 阶段
2.
程序系统阶段,约为60至70年代
出现“软件作坊”、产品软件;“个体化”开发方法。
3.
软件工程阶段,约为70年代以后
软件开发成为一门新兴的工程学科——软件工程。
2、软件危机与软件工程
所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到
的一系列严重问题。软件危机可以归结为成本、质量、生产率等问 题。 软件工程源自软件危机。 软件工程是应用于计算机软件的定义、开发和维护的一整套方 法、工具、文档、实践标准和工序。 即将软件产品看作是一个工程产品来处理。中心思想:把软件 当作一种工业产品,要求“采用工程化的原理和方法对软件进行计 划、开发和维护”。这样做的目的,不仅是为了实现按预期的进度 和经费完成软件生产计划,也是为了提高软件的生产率和可靠性。
耦合性:是模块间互相连接的紧密程度的度量。 一个设计良好的软件系统应具有高内聚、低耦合 的特征。
结构化设计方法
从系统设计的角度出发,软件设计方法可以分为三大类。
第一类是根据系统的数据流进行设计,称为面向数据流的设计或 者过程驱动的设计,以结构化设计方法为代表。
第二类是根据系统的数据结构进行设计,称为面向数据结构的设 计或者数据驱动的设计,以LCP(程序逻辑构造)方法、 Jackson系统开发方法和数据结构化系统开发(DSSD)方法为代 表。 第三类是根据数据、类和对象进行设计即面向对象的设计。
结构化设计方法是基于模块化、自顶向下细化、结构化程 序设计等程序设计技术基础上发展起来的。
2、总体设计(概要设计)和详细设计
(1)总体设计(概要设计) 软件概要设计的基本任务是: 1)设计软件系统结构; 2)数据结构及数据库设计; 3)编写概要设计文档; 4)概要设计文档评审。 常用的软件结构设计工具是结构图,也称程序结 构图。 经常使用的结构图有四种模块类型:传入模块、 传出模块、变换模块和协调模块。
3· 内容描述 在数据词典的编制中,分析员最常用的描述内容或数据结构的符 号如表2.1所示。
4· 加工:
加工规格说明用来说明DFD中的数据加工的加工细节。 加工规格说明描述了数据加工的输入,实现加工的算法以及 产生的输出。 加工规格说明指明了加工(功能)的约束和限制,与加工相 关的性能要求,以及影响加工的实现方式的设计约束。 注意,写加工规格说明的主要目的是要表达“做什么”,而 不是“怎样做”。 应描述数据加工实现加工的策略而不是实现加工的细节。