第1章_软件工程概述
《软件工程》教学教案

《软件工程》教学教案一、第一章:软件工程概述1. 教学目标了解软件工程的定义、目的和重要性,掌握软件开发的基本过程和原则。
2. 教学内容软件工程的定义和重要性;软件开发的基本过程;软件工程的原则和方法。
3. 教学方法采用讲授法,结合案例分析,让学生了解和掌握软件工程的基本概念和原则。
4. 教学资源教材、课件、案例分析。
5. 教学评价通过课堂提问和案例分析,评估学生对软件工程的理解和应用能力。
二、第二章:软件需求分析1. 教学目标掌握软件需求分析的基本概念、方法和过程,能够运用需求分析工具进行需求收集和分析。
2. 教学内容软件需求分析的基本概念;需求分析的方法和过程;需求分析工具的使用。
3. 教学方法采用讲授法和实例分析,让学生了解和掌握需求分析的方法和过程。
4. 教学资源教材、课件、实例分析。
5. 教学评价通过课堂提问和实例分析,评估学生对需求分析的理解和应用能力。
三、第三章:软件设计1. 教学目标掌握软件设计的基本概念、方法和过程,能够运用设计工具进行软件架构和详细设计。
2. 教学内容软件设计的基本概念;设计方法和过程;设计工具的使用。
3. 教学方法采用讲授法和实例分析,让学生了解和掌握软件设计的方法和过程。
4. 教学资源教材、课件、实例分析。
5. 教学评价通过课堂提问和实例分析,评估学生对软件设计的理解和应用能力。
四、第四章:软件实现1. 教学目标掌握软件实现的基本概念、方法和过程,能够运用编程语言进行软件编码和测试。
2. 教学内容软件实现的基本概念;实现方法和过程;编程语言和测试工具的使用。
3. 教学方法采用讲授法和编程实践,让学生了解和掌握软件实现的方法和过程。
4. 教学资源教材、课件、编程环境和测试工具。
5. 教学评价通过编程实践和测试结果,评估学生对软件实现的理解和应用能力。
五、第五章:软件维护1. 教学目标掌握软件维护的基本概念、方法和过程,能够进行软件维护和优化。
2. 教学内容软件维护的基本概念;维护方法和过程;软件优化技巧。
软件工程概述

3.克服危机的途径
1968年秋季,NATO(北约)的科技委员会召集了 近50名一流的编程人员、计算机科学家和工业界巨头, 讨论和制定摆脱“软件危机”的对策。由于认识到软 件的设计、实现、维护和传统的工程规则有相同的基 础,在那次会议上首次提出了“软件工程” (software engineering)这个概念。
计算机科学与工程学院
2018/7/2
27
软件工程方法:为软件开发提供“如何做”的技术。 它包括了项目计划、需求分析、系统设计、程序实现、 测试与维护等一系列的任务。 软件工程工具:为过程和方法提供自动的或半自动的 支持。这些软件工具被集成起来,建立起一个支持软 件开发的系统,称之为计算机辅助软件工程(CASE, Computer Aided Software Engineering)。CASE集成 了软件、硬件和一个存放开发过程信息的软件工程数 据库,形成了一个软件工程环境。
2018/7/2
计算机科学与工程学院
20
2.危机的原因
①用户对软件需求的描述不精确,可能有遗漏、有二 义性、有错误,甚至在软件开发过程中,用户还提出 修改软件功能、界面、支撑环境等方面的要求。 ②软件开发人员对用户需求的理解与用户的本来愿望 有差异,这种差异必然导致开发出来的软件产品与用 户要求不一致。 ③大型软件项目需要组织一定的人力共同完成,多数 管理人员缺乏开发大型软件系统的经验,而多数软件 开发人员又缺乏管理方面的经验。各类人员的信息交 流不及时、不准确、有时还会产生误解。
2018/7/2
计算机科学与工程学院
8
故 障 率
生命 初期 "磨损"后
故 障 率
实际曲线 修改
软件工程导论第六版课后习题答案完整版

软件工程导论第六版课后习题答案完整版首先,感谢您对软件工程导论课后习题答案的需求。
以下是软件工程导论第六版课后习题的完整答案。
第一章:软件工程概述1.1 问题1. 什么是软件工程?答:软件工程是一种应用工程原理、方法和工具来开发和维护高质量软件的学科。
1.2 问题1. 什么是软件?答:软件是一系列按照特定顺序组织的计算机数据和指令。
第二章:软件过程模型2.1 问题1. 软件过程模型有哪些类型?答:常见的软件过程模型包括瀑布模型、迭代模型、螺旋模型和敏捷开发模型等。
2.2 问题1. 瀑布模型的特点是什么?答:瀑布模型是一种线性顺序模型,以阶段划分为基础,每个阶段的任务在进入下一个阶段前必须完成。
第三章:需求分析与规格说明3.1 问题1. 软件需求描述包括哪些方面的内容?答:软件需求描述需要包括功能性需求、非功能性需求、用户需求和系统需求等。
3.2 问题1. 什么是需求跟踪?答:需求跟踪是指在软件开发过程中,通过建立需求和软件项目中其他相关工件之间的关联,确保需求的准确实现和变更的有效管理。
第四章:软件设计4.1 问题1. 软件设计的目标是什么?答:软件设计的目标是通过确定软件的整体结构和组成部分,确保软件满足需求并具有良好的可维护性和可重用性。
第五章:软件测试与维护5.1 问题1. 什么是软件测试?答:软件测试是一种评估和改进软件质量的过程,目的是发现错误并提高软件的可靠性和可用性。
5.2 问题1. 什么是软件维护?答:软件维护是指在软件交付后的整个生命周期中对软件进行修改和改进,以满足用户需求和修复错误。
第六章:软件配置管理6.1 问题1. 软件配置管理的目标是什么?答:软件配置管理的目标是确保软件在开发和维护过程中的可控性和可追踪性,以及保持软件配置的稳定性和一致性。
6.2 问题1. 软件版本控制是什么?答:软件版本控制是指对软件的不同版本进行管理,包括版本的创建、检出、合并和更新等操作。
至此,我们完成了软件工程导论第六版课后习题的完整答案。
第1章软件工程和软件测试概述

1.1软件工程概述- 软件工程
• 1968年北大西洋公约组织的计算机科学家在联邦 德国召开国际会议,讨论软件危机问题,在这次 会议上正式提出并使用了“软件工程”这个名词。 • 软件工程是指导计算机软件开发和维护的一门工 程学科,它是采用工程的概念、原理、技术和方 法来开发与维护软件,把经过时间考验而证明正 确的管理技术和当前能够得到的最好的技术方法 结合起来,以经济地开发出高质量的软件并有效 地进行维护。
• 实际问题的复杂性 实际问题的复杂性 • 程序逻辑结构的复杂性 程序逻辑结构的复杂性
5
1.1软件工程概述- 软件的分类
• 按软件的功能进行划分: 按软件的功能进行划分:
– 系统软件
• • • • • • • • • 操作系统 数据库管理系统 设备驱动程序 通信处理程序等
– 支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、 支持需求分析、设计、实现、测试和支持管理的软件
• 软件是计算机系统中与硬件相互依存的另一部
它是包括程序 及其相关文档 分,它是包括程序,数据及其相关文档的完整集 它是包括程序,数据及其相关文档的完整集 其中: 合。其中:
– 程序 程序(instructions)是按事先设计的功能和性能要求 是按事先设计的功能和性能要求 执行的指令序列 – 数据 数据(data)是使程序能正常操纵信息的数据结构 是使程序能正常操纵信息的数据结构 – 文档 文档(documents)是与程序开发,维护和使用有关的 是与程序开发, 是与程序开发 图文材料
– 问题定义 – 可行性研究 – 需求分析
18
1.1软件工程概述-软件开发时期
• 开发时期具体设计和实现在前一个时期定 义的软件,它通常由下述4个阶段组成
软件工程实践指南

01
设计模式是针对常见的设计问题提出的可重复利用的解决方案。
类型
02
常见的设计模式包括创建型模式、结构型模式、行为型模式等。
应用
03
设计模式可以帮助设计者更好地解决设计问题,提高系统的质量和性能。
结构化设计
原理
结构化设计是通过 将系统分解为模块, 确定模块之间的接 口和关系来实测试
语句、分支、路径覆盖等测试
利用工具和脚本 提高效率和准确性
减少人力成本、加快测试进度
提高软件质量
01
确保系统符合需求
验证系统正确性
02
发现系统中的错误、缺陷
保证系统可靠性
03
提高系统稳定性和安全性
软件测试目标
总结
软件测试是确保软件质量的重要环节,通过各种测试方法 可以发现系统中的问题并提高软件的可靠性。黑盒测试、 白盒测试和自动化测试各有优势,综合运用可以更好地保
什么是软件需求?
软件需求是用户对软件系统的期望和要求的描述,是软件 开发的基础。软件需求包括功能需求、非功能需求、用户 需求、系统需求等。需求分析可以采用面向对象分析、数
据流分析等方法。
需求获取
方法
需求可以通过访谈 用户、观察工作流 程、分析文档等方
式获取。
难点
需求获取过程中常 见的困难包括需求 不明确、需求冲突、
结尾
软件质量保障是软件工程中至关重要的一环,通过不断优 化和改进,可以提高软件产品的质量和用户满意度。各种 质量保障方法和工具的应用,能够有效降低软件开发和维
护中的风险,值得开发团队深入研究和实践。
● 06
第六章 总结与展望
软件工程实践的价值
提高软件产品质量
第1章-软件工程学概述1-1

• 软件用后不磨损
• 随着时间的推移,应用程序
的某些部分可能会变得不再 相关(例如,需求改变时), 而需要修改
• 但是,没有备件的概念
1.1、软件的定义
硬件和软件故障率曲线
由于副作用造成 故障率的提高 原来的软件已经面目全非了!
故障率
磨损后
生命初期
修改
硬件的故障率曲线 实际曲线
软件故障率的理想曲线
1.2、软件危机
软件危机案例
3 . 软件产品的质量靠不住 [案例]:
ARIANE 5 火箭 1996 年6 月,耗资70 亿美元,发射
本章内容
1.1、软件的定义 1.2、软件危机 1.3、软件工程 1.4、软件生存期 1.5、软件过程
1.2、软件危机
软件危机
Crisis!
“软件危机”(Software crisis) 的出现是由于软件的规模越来越大,复杂 度不断增加,软件需求量增大。而软件开 发过程是一种高密集度的脑力劳动,软件 开发的模式及技术不能适应软件发展的需 要。致使大量质量低劣的软件涌向市场, 有的花费大量人力财力,而在开发过程中 就夭折。
时间
1.1、软件的定义
硬件和软件故障率曲线的比较
软件不会用坏(wear out).
软件会退化( deteriorate)!
1.1、软件的定义
软件的特点-7
要求
软件产品不允许误差
软件产品的高质量取决于好的设计( High quality is achieved through) 依赖于人(Depend on people) 需要对产品进行构造(Require the construction of a “product”)
第1章软件工程学概述

(3)软件经常变化 (4)开发软件的效率非常重要 (5.) 和谐地合作是开发软件的关键 (6.) 软件必须有效地支持它的用户 开发软件的目的就是支持用户的工作,满足 用户对软件的需求 (7. )在软件工程领域中通常由具有一种文 化背景的人替具有另一种文化背景的人创 造产品
37
软件工程的研究内容
软件是计算机系统中与硬件(hardware)相互依存 的另一部分,与硬件合为一体完成系统功能。 软件定义包括如下几点: (1)功能和性能的指令集(即程序); (2)程序能正常操纵信息的数据结构(即相关数 据); (3)与程序开发维护和使用有关的各种图文数据 (即说明文档)。
16
软件=程序+数据+相关文档
软件的发展主要经历了以下3个发展阶段:
第一阶段(20世纪50年代初期至20世纪60年 代中期) 特点:(1)称为程序设计阶段 (2)软件生产以个体化为主 (3)编写程序的工具只有低级语言 (4)软件规模小,几乎没有系统化的 标准可循
11
(5)软件由软件使用者自己开发和编写,适 合个人应用 (6)没有“软件”概念,对于程序有关的文 档的重要性认识不足,开发主要围绕硬件 进行 (7)工程规模小,使用工具单一,开发者之 间没有明确分工 第二阶段(20世纪60年代中期至70年代末期) 称程序系统阶段
7
ENIAC诞生于二战时期,最初是作为辅助炮兵计 算炮弹轨迹的工具,在盟军登陆西欧前一年开始 制造,但直到1945年停火时还没完成。在冷战初 期军方就发现了ENIAC的大量用途,它的17468 根真空管被用来测试氢弹的早期设计的可行性。 这台计算机每秒能执行5000条指令,在当时的情 况下它的运算速度比电动式计算机快1000倍。当 然,现在iPhone 6每秒能响应250亿条指令。
软件工程导论第1章 软件工程概述

1.3 续
• 软件生命周期阶段的划分
问题定义 可行性研究 定义时期 需求分析 总体设计 详细设计 开发时期 编码和单元测试 综合测试 软件维护 维护时期 退役
1.3 续
• ⒈软件定义时期
– 软件定义时期的任务是:确定软件开发工程必须
完成的总目标;确定工程的可行性;导出实现工 程目标应该采用的策略及系统必须完成的功能; 估计完成该项工程需要的资源和成本,并且制定 工程进度表。
目标和完成期限,规定开发小组的责任和产品标 准,以便结果的审查。
1.2 续
• ⑹开发小组的人员应该少而精
– 软件开发小组人员素质和数量是影响软件质量和
开发效率的重要因素。
– 素质高的人员开发效率高,错误率低。 – 开发小组的成员之间要交流情况、讨论问题,随
着人数的增加,通信开销将急剧增加。
– 人员数:N
– 由系统分析员完成该阶段的系统分析工作。 – 软件定义时期可通过软件系统的问题定义、可行
性研究和需求分析三个阶段来完成。
1.3 续
• ⑴问题定义阶段
– 问题定义阶段必须回答的关键问题是:“要解决
的问题是什么?”。
– 问题定义阶段的任务是:确定软件系统的工程需
求,也就是要搞清“做什么?”。
– 通过对客户的访问调查,系统分析员扼要地写出
件工程支撑环境;
– 过程是为了获得高质量的软件所需要完成的一系
列任务的框架,它规定了完成各项任务的工作步 骤。
1.2 续
• 传统方法学
– 又称生命周期方法学,或结构化范型。 – 采用结构化技术来完成软件开发的各项任务,并
使用适当的软件工具或软件工程环境来支持结构 化技术的运用。
– 把软件生命周期的全过程依次划分为若干个阶段,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件具有如下特点:
– 软件是一种逻辑实体,不是具体的物理实体。
– 软件产品的生产主要是研制。 – 软件具有“复杂性”,其开发和运行常受到
计算机系统的限制。 – 软件成本昂贵,其开发方式目前尚未完全摆 脱手工生产方式。 – 软件不存在磨损和老化问题,但存在退化问 题。
失效率
失效率
实际曲线 理想曲线
1.3.4 软件工程不同于信息系统工程
信息系统是应用软件的一个分支。因为它的应用面极其 广泛,市场前景巨大,如管理信息系统(MIS)、企业资 源计划系统(ERP)、办公自动化系统(OA)、金税(税 务)系统、金关(海关)系统、金卫(医疗卫生)系 统、保险系统、金融系统、证券系统、港口系统、民 航系统、物流系统、公安系统、人口普查系统、电信 计费系统、数字化城市系统等,所以对它的研究特别 引起人们的重视。 信息系统工程是专门研究信息系统建设的工程,它是软 件工程的一个分支,或者说它是软件工程的一部分。 信息系统建设除了需要遵守软件工程的普遍原理和方 法之外,还要遵守自己的特殊原理和方法,所以在讨 论软件工程时也附带讨论一下信息系统工程。 信息系统工程是一门新兴的工程学科,目前还不十分成 熟,正处在发展之中,很多名词和定义还不规范,需 要人们进一步探索。
70年代初,自“软件工程”这一概念提出以来,主要围绕软 件过程以及软件复用,开展了有关软件生产技术和软件生产 管理的研究与实践。其主要成果有:提出了应用广泛的面向 对象语言以及相关的面向对象方法,大力开展了计算机辅助 软件工程的研究与实践。尤其是近几年来,针对软件复用及 软件生产,软件构件技术以及软件质量控制技术、质量保证 技术得到了广泛的应用。目前各个软件企业都十分重视资质 认证,并想通过这些工作进行企业管理和技术的提升。 软件工程(Software Engineering)的框架可概括为:目标、过 程和原则。 (1) 软件工程目标是生产具有正确性、可用性以及开销合 宜的产品。正确性指软件产品达到预期功能的程度。可用性 指软件基本结构、实现及文档为用户可用的程度。开销合宜 是指软件开发、运行的整个开销满足用户要求的程度。这些 目标的实现不论在理论上还是在实践中均存在很多待解决的 问题,它们形成了对过程、过程模型及工程方法选取的约束。
1.3.6 软件工程涉及的人员
1.3.7 什么是好的软件
表1.1 优良软件具有的属性
含义 产品特性 可维护性
软件必须能够不断进化以满足客户的需求变化,这是软 件产品最根本的特性,因为工作环境是不断变化的,软 件也必然要跟着变化
软件可依赖性还包括一系列特性,包括可靠性、保密性、 安全性。可靠的软件在系统失败的情况下,也不会导致 人员伤亡和经济损失 软件不要浪费内存和处理器等系统资源,因而有效性应 包括响应时间、处理时间、内存利用率等方面
软件工程围绕工程设计、工程支持以及工程管理,提出了以下 四项基本原则: (1) 选取适宜的开发范型。 该原则与系统设计有关。在系统设计中,软件需求、硬件需求 以及其他因素之间是相互制约、相互影响的,经常需要权衡。 因此,必须认识需求定义的易变性,采用适宜的开发范型予 以控制,以保证软件产品满足用户的要求。 (2) 采用合适的设计方法。 在软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、 局部化、一致性以及适应性等特征。合适的设计方法有助于 这些特征的实现,以达到软件工程的目标。 (3) 提供高质量的工程支持。 “工欲善其事,必先利其器”。在软件工程中,软件工具与环 境对软件过程的支持颇为重要。软件工程项目的质量与开销 直接取决于对软件工程所提供的支撑质量和效用。 (4) 重视开发过程的管理。 软件工程的管理,直接影响可用资源的有效利用,生产满足目 标的软件产品,提高软件组织的生产能力等问题。因此,仅 当软件过程得以有效管理时,才能实现有效的软件工程。
1.3.3 软件工程不同于传统工程
软件工程是更广泛的系统工程的一部分。因此,软件设计者必 须理解整个系统的需求,并且必须具备在系统所应用的领域 为软件应用环境提供接口的能力。同时,软件设计者必须理 解有些数据,信息用硬件处理比用软件更好,有些处理根本 不需要(或不能)实现自动化。 系统工程(system engineering)研究管理复杂系统内部的工作原 理。在传统工程(traditional engineering)学科中使用系统工 程已经有很长时间了。现有的系统工程原理是用数学模型形 式化了的。这些模型被确认正确后就应用于工程化的产品中。 而软件产品则不同。软件是非物质的,经典的数学模型只适 用于一部分而不是全部的软件。 软件工程不必一味地模仿传统工程,它们是完全不同的。 软件设计者必须做好准备去开发能适应环境变化的软件。这是 软件应该具备的性质。软件必须是可支持的(supportable), 即可理解的、可维护的和可扩展的,这就是软件不同于桥的 地方,也是软件工程不同于传统工程的地方。
1.3 关于软件工程的问题
1.3.1软件工程不同于计算机科学
从本质上讲,计算机科学研究的是构成计算机和软件系 统基础的有关理论和方法,而软件工程则研究软件制 作中的实际问题。正如电子工程师必须具有一定的物 理学知识一样,软件工程人员同样必须具有一定的计 算机科学知识。
理论上,所有软件工程都应该以计算机科学理论作为坚 实的基础,但实际情况并非如此。软件工程人员常常 必须要用特定的方法去开发软件。对于实际、复杂的 问题,计算机科学的经典理论不可能总是适用的,这 时就需要应用软件工程的方法来解决。
时间
时间
图1.1给出了硬件的失效率曲线,它是一个U型曲 线(即浴盆曲线),说明硬件随着使用时间的增 加失效率急剧上升。 图1.2所描述的软件失效率曲线,它没有U型曲线 的右半翼,表明软件随着使用时间的增加失效率 降低,因为软件不存在磨损和老化问题,然而存 在退化问题。
软件产品有以下两类: (1)通用软件产品 这类软件产品由软件开发机构制作,在市场上公开 销售,可以独立使用。这类软件产品有:数据库 软件、字处理软件、绘图软件以及工程管理工具 等。 (2)定制软件产品 这类软件产品受特定的客户委托,由软件承包商专 门为这类客户开发。这类软件有:电子设备的控 制系统、特定的业务处理系统和空中交通管制系 统等。 这两类产品的一个重要区别在于:在通用软件中, 软件描述由开发者自己完成,而定制软件产品的 软件描述通常是由客户给出,开发者必须按客户 要求进行开发。
1.2软件工程概述
软件工程是一类工程。工程是将理论和知识应用于实践的 科学。就软件工程而言,它借鉴了传统工程的原则和方法, 以求高效地开发高质量软件。其中应用了计算机科学、数 学和管理科学。计算机科学和数学用于构造模型与算法, 工程科学用于制定规范、设计范型、评估成本及确定权衡, 管理科学用于计划资源、对质量和成本进行管理。 早期软件开发的经验是:非正规的软件开发并不奏效。多 数软件项目有时甚至要推迟几年才能完成,而且比预计的 费用高,不可靠,难以维护,总之,做得很差。软件开发 陷入危机,结果是硬件成本在下降而软件成本却呈快速增 长之势,因而必须要有新的技术和方法来控制大型软件系 统固有的复杂性。
1.3.2 软件工程不同于系统工程
确切地说,系统工程应该是基于计算机的系统工程,研 究由软件起主导作用的、有关复杂系统的开发和进化 的方方面面,包括硬件开发、系统决策、过程设计、 系统实施和软件工程等。系统工程人员要做的是描述 这个系统,定义总的体系结构,然后集成各个组件以 完成整个系统。他们较少关注系统各组件(硬件、软 件等)的工程问题。 系统工程的产生比软件工程要早。100多年来,人们已经 描述、集成了复杂的工业系统,如火车、化工厂。随 着软件在系统中的比重不断增大,诸如用例建模、配 置管理等,软件工程技术正被应用于系统工程过程之 中。
ቤተ መጻሕፍቲ ባይዱ
(2) 软件工程过程是生产一个最终能满足需求且达 到工程目标的软件产品所需要的步骤。软件工程过程 主要包括开发过程、运作过程、维护过程。它们覆盖 了需求、设计、实现、确认以及维护等活动。需求活 动包括问题分析和需求分析。问题分析获取需求定义, 又称软件需求规约。需求分析生成功能规约。设计活 动一般包括概要设计和详细设计。概要设计建立整个 软件系统结构,包括子系统、模块以及相关层次的说 明、每一模块的接口定义。详细设计产生程序员可用 的模块说明,包括每一模块中数据结构说明及加工描 述。实现活动把设计结果转换为可执行的程序代码。 确认活动贯穿于整个开发过程,实现完成后的确认, 保证最终产品满足用户的要求。维护活动包括使用过 程中的扩充、修改与完善。伴随以上过程,还有管理 过程、支持过程、培训过程等。 (3) 软件工程的原则是指围绕工程设计、工程支持 以及工程管理在软件开发过程中必须遵循的原则。
1.3.5 软件工程不只是程序设计
软件工程不只是程序设计。复杂问题需要软件工程,单靠 程序设计无法解决复杂问题。复杂系统必须在编程之前 进行设计。像建筑业一样,在建造复杂系统之前必须进 行结构设计。必须用抽象和“分治”的方法对系统进行 模块化。在程序员编写代码之前,对每个模块都要进行 详细说明,并且必须定义与其他模块的接口。 在设计一个系统之前,软件工程师必须了解它的需求。这 就意味着必须做需求分析,而且必须用某种建模语言说 明。最终,软件工程还是一个团队活动,必须对团队进 行管理。因此,项目管理(project management)对软件工 程是有影响的,同时软件工程对项目管理也是有贡献的。 这包括计划、预算和进度、质量控制和风险管理、变更 和配置管理。 总之,软件工程为系统提供一个体系结构的解决方案,包 括设计体系结构组件,将组件集成为一个可操作的系统, 项目管理等。软件工程是一门精妙的学问,程序设计只 是其中一项有用的技能。
1.5.1 结构化开发方法
(1) 结构化分析的步骤 结构化分析(structured analysis,简称SA)与所有的软件分析方法一样, 也是一种模型的确立活动。SA方法就是使用独有的符号,来确立 描绘信息(数据和控制)流和内容的模型,划分系统的功能和行 为,以及其他为确立模型不可缺少的描述。其基本步骤是: ① 构造数据流模型:根据用户当前需求,在创建实体—关系图的基 础上,依据数据流图(DFD)构造数据流模型。 ② 构建控制流模型:一些应用系统除了要求用数据流建模外,通过 构造控制流图(CFD),构建控制流模型。 ③ 生成数据字典(DD):对所有数据元素的输入、输出、存储结构, 甚至是中间计算结果进行有组织的列表。目前一般采用CASE的 “结构化分析和设计工具”来完成。 ④生成可选方案,建立需求规约:确定各种方案的成本和风险等级, 据此对各种方案进行分析,然后从中选择一种方案,建立完整的 需求规约。