软件工程讲义

合集下载

软件工程讲义

软件工程讲义
软件工程 10
quadrilateral1 (46, 37) (50, 45) (60, 35) (56, 10) draw move(∆x, ∆y) ∆ contains?(aPoint)
quadrilateral2 (35, 60) (35, 85) (50, 85) (50, 60) draw move(∆x, ∆y) ∆ contains?(aPoint)
软件工程
起重车 类 汽车类
15
b) 增加一个新类拖拉机。它的底盘、发动机等与 增加一个新类拖拉机。它的底盘、发动机等与 拖拉机 底盘 汽车不同 不同, 驱动装置、轮胎等与汽车相同 等与汽车相同。 汽车不同,但驱动装置、轮胎等与汽车相同。 调整继承结构。建立一个新的一般的车辆类 车辆类, 调整继承结构。建立一个新的一般的车辆类, 拖拉机与汽车类的共性放到车辆类中 的共性放到车辆类 把拖拉机与汽车类的共性放到车辆类中,拖拉 汽车类都成为车辆类的子类 都成为车辆类的子类。 机与汽车类都成为车辆类的子类。 车辆是抽象类 相关操作到子类汽车 是抽象类, 汽车找 车辆是抽象类,相关操作到子类汽车找。
软件工程
13
建立继承结构的好处: 建立继承结构的好处: 易编程、 代码短, 易编程、易理解 代码短, 结构清晰 易修改 共同部分只要在一处修改即可 易增加新类 只须描述不同部分 怎样建立一个好的继承层次 类可以从父类继承,父类又可以从它的父 类可以从父类继承, 类继承,形成多层次的继承结构。 类继承,形成多层次的继承结构。 当增加一个新类时,不一定在最低层, 当增加一个新类时,不一定在最低层,可 能需要插在中间层, 能需要插在中间层,这样可能需要调整原 来的层次结构。 来的层次结构。
quadrilateral1 (46, 37) (50, 45) (60, 35) (56, 10) draw move(∆x, ∆y) ∆ contains?(aPoint)

软件工程讲义04

软件工程讲义04

软件工程讲义041. 引言本讲义主要介绍软件工程领域的重要概念和技术,包括软件生命周期、软件过程模型、需求工程和软件设计等内容。

通过本讲义的学习,学生将能够理解和应用软件工程的基本原理和方法,提高软件开发的效率和质量。

2. 软件生命周期软件生命周期是指软件从创建、开发、测试到维护和退役的整个过程。

它包括需求分析、设计、编码、测试和维护等阶段。

软件生命周期的目标是确保软件开发过程中的可控性和可追溯性,以保证软件的质量和进度。

2.1 需求分析在需求分析阶段,软件工程师与用户合作,收集并理解用户的需求。

这个阶段的主要任务包括需求的获取、需求的分析和需求的规约。

需求分析是软件开发的关键步骤,它决定了后续软件设计和开发的方向。

2.2 软件设计软件设计是根据需求分析结果,将软件划分为模块,确定模块之间的关系和接口,以及设计模块的具体实现。

软件设计的目标是保证软件的灵活性、可维护性和可扩展性。

2.3 编码和测试在编码阶段,开发人员根据软件设计的结果实现软件的具体功能。

编码过程应符合规范和标准,以保证代码的可读性和可维护性。

测试阶段是为了验证软件的功能和质量。

测试包括单元测试、集成测试和系统测试等不同层次的测试,以确保软件满足用户需求,并且具有良好的性能和可靠性。

2.4 维护和退役软件维护是指在软件投入使用后,对软件进行错误修复、功能增强和性能优化等活动。

软件维护的任务往往占据了软件开发过程的很大一部分,因此合理的维护策略和方法对于软件的长期稳定运行至关重要。

软件退役是指当软件不再使用或者需要被替换时,执行的相关操作,包括数据迁移、代码重构、资源清理等工作。

3. 软件过程模型软件过程模型是指将软件开发过程划分为不同的阶段和活动,并进行组织和管理的模型。

常见的软件过程模型包括瀑布模型、迭代模型和敏捷模型等。

3.1 瀑布模型瀑布模型是软件开发最早应用的模型,将软件开发划分为需求分析、系统设计、编码、测试和维护等严格按顺序执行的阶段。

软件工程讲义第一章课件

软件工程讲义第一章课件
❖ 由以上简单事实可得出一个结论:各种形式、 各个 应用领域的软件都需要工程化。
什么是软件工程
❖ 软件工程是建立和使用一套合理的工程 原则,以便经济地获得可靠的、可以在 实际机器上运行的软件。
❖ 软件工程:(1)将系统化的、严格约束 的、可量化的方法应用于软件的开发、 运行和维护,即将工程化应用于软件。 (2)在(1)中所定义的过程中的方法 研究。
❖ 神话:如果我将一个软件外包给另 一家公司,则我可以完全放手不管 。
❖ 事实:如果一个组织对软件项目的 内部组织和控制毫无了解,那无一 例外地讲在外包项目中遇到困难。
软件神话的几个例子
客户:
• 软件改起来简单,你们先做着,做好 了我看看,不合适再改。
• 我就需要你们做一个类似Excel的功能, 但是要符合我的要求。
➢ 开发方式逐步由个体合作方式转向工程方式
➢ 软件工程方面的研究主要包括软件开发模型、软件 开发方法及技术、软件工具与环境、软件过程、软 件自动化系统等
➢ 软件方面研究以智能化、自动化、集成化、并行化、 以及自然化为标志的软件开发新技术
软件的本质
❖现在的软件技术具有产品和产品交付载体的双 重作用。作为一个产品,它显示了由计算机硬件 体现的计算能力。而作为产品生产的载体,软件 提供了计算机控制、信息通信以及应用程序开发 和控制的基础平台。 ❖软件提供了我们这个时代最重要经 济中的主导因素。
❖ 引起软件危机的诸多原因可以追溯到软件 开发的早期阶段产生的神话。它不象古代 的神话那样可以给人以经验和教训,软件 神话使人产生误解和混乱。软件神话具有 一些特征使得它们很有欺骗性:例如,它 们表面上看很有道理(有时含有一定真实 的成份);它们符合人的直觉;它们常常 是有经验的实践者发布出来的。

软件工程讲义-11

软件工程讲义-11

知识领域
分析阶段 设计阶段 实现阶段
用过程和 用评审来 控制和监 评审来控 控制质量; 视测试; 制质量; 监视测试 错误日志; 确保最终 系统质量; 组织团队; 提供团队 提供培训; 引导团队 培训; 引导绩效 大厦; 标识/增加 评审; 标识/增加 资源; 人员; 引导绩效 评审; 11 软件工程管理
监视正在 发生的各 种成本; 更新成本/ 效益;
监视正在 发生的各 种成本; 评审预算/ 资金流;
监视正在 发生的各 种成本; 评审预算/ 资金流;
10
软件工程管理
计划阶段 (项目启动) 质量管理 标识质量 的度量; 标识项目 成功度量; 建立质量 控制过程; 人力资源 标识项目 管理 经理; 制定人员 计划; 招募人员;
项目启动应做如下工作: 1) 设定目标:收集事实、信息、意见、需求; 探讨假设情况;确定应包括的内容和应排除 的东西。
软件工程管理 14

2) SWOT分析:S(优势) W(劣势) O(机会) T(威胁) 3) 确定需要进行的主要工作及需要的技能和资 源,即明确项目的资源和范围。 4) 考虑可能的解决方案,标明技术上和管理上 的限制。 根据这些信息,可确定合理精确的成本估算, 实际可行的任务分解以及可管理的进度安排。
软件工程管理 27

软件度量领域的分类
技术度量 质量度量
生产率度量
面向规模的度量
面向功能的度量
面向人的度量
软件工程管理
28
11.3.1 面向规模的度量

面向规模的度量是对软件和软件开发过程的直 接度量。 可以建立一个面向规模的数据表格来记录项目 的某些信息。该表格列出了在过去几年完成的 每一个软件开发项目和关于这些项目的相应面 向规模的数据。

软件工程讲义-01

软件工程讲义-01
软件工程 3
一、软件的概念
软件的定义软件由计算机程序、数据及文档组成。 软件的定义软件由计算机程序、数据及文档组成。 软件与硬件、数据库、 软件与硬件、数据库、人、过程等共同构成计算 机系统。 机系统。 软件按功能分类:应用软件、系统软件、 软件按功能分类:应用软件、系统软件、支撑软 件。 软件的发展经历了三个阶段:程序设计阶段、 软件的发展经历了三个阶段:程序设计阶段、程 序系统阶段、软件工程阶段。 序系统阶段、软件工程阶段。
软ቤተ መጻሕፍቲ ባይዱ工程
20
解决软件危机的途径
树立对计算机软件的正确认识。 树立对计算机软件的正确认识。 软件开发应该是组织良好、管理严密、 软件开发应该是组织良好、管理严密、各类人 员团结协作共同完成的工程项目。 员团结协作共同完成的工程项目。必须充分吸 取和借鉴人类长期以来从事各种工程项目所积 累的行之有效的原理、概念、技术和方法, 累的行之有效的原理、概念、技术和方法,并 研究能更有效地开发软件的技术和方法。 研究能更有效地开发软件的技术和方法。 积极开发和使用计算机辅助软件工程(CASE) 积极开发和使用计算机辅助软件工程(CASE) 工具。 工具。 总之,为了解决软件危机就要从技术措施( 总之,为了解决软件危机就要从技术措施(方 法和工具)和组织管理两个方面去研究。 法和工具)和组织管理两个方面去研究。
软件工程方法时期(70初至80年代中) 软件工程方法时期(70初至80年代中) 初至80年代中 集成的计算机辅助软件工程时期( 集成的计算机辅助软件工程时期(ICASE 80年代后 年代后) Integrated CASE -80年代后)
软件工程
5
软件发展的三个时期及其特点
时 期 程序设计 程序系统 软件工程 程序、文档、 软件所指 程序 程序及规 程序、文档、 格说明书 数据 主要程序设 汇编及机器 高级语言 软件语言 计语言 语言 软件工作范 编写程序 包括设计 软件生存期 围 和测试 需求者 程序设计者 少数用户 本人

软件工程讲义软件工程电子书ppt课件

软件工程讲义软件工程电子书ppt课件
– 软件开发过程,是把用户要求转化为软件需 求,把软件需求转化为设计,用代码实现设 计并对代码进行测试,完成文档编制并确认 软件可以投入运行使用的过程。
12/360
1.2 软件工程学
• 为什么要引入软件过程?(1/2)
– 软件工作的范围
扩展到
只考虑 编写程序
涉及整个软件生存周期
– 软件的开发风险(规模、周期、复杂度)
36/360
2.2 需求分析的任务
• What(1/3)
– 需求:主要是在产品构建之前确定的系统必 须符合的条件或具备的功能,它们是关于系 统将要完成什么工作的一段描述语句,它们 必须经过所有相关人员的认可,其目的是彻 底地解决客户的问题。
– 需求文档
• 一组需求的集合 • 用户需求文档、系统需求文档和软件规约文档
户和维护用户信息等功能 – 管理购物车 – 实现结帐处理 – 查询订货情况 – 统计销售记录
26/360
案例-在线宠物商店(2/3)
• 问题(1/2):
– 从何开始? – 采用什么技术? – 需要多少时间? – 需要多少人?哪些角色?能否并行、协作地开发?
人力应该如何高效率的投入? – 开发计划? – 直接编码? – 需求? – 设计方案和模型? – 人机交互的界面? – 功能优先级?
27/360
案例-在线宠物商店(3/3)
• 问题(2/2):
– 开发风险? – 可扩展性? – 复用? – 设计模式? – 编码规范? – 需求变更? – 测试? – 开发过程? – 软件度量? – 最后期限?
28/360
Chapter 2 软件计划
• 2.1 软件问题定义及可行性研究 • 2.2 需求分析的任务 • 2.3 需求分析步骤 • 2.4 实体-关系图 • 2.5 数据流图 • 2.6 状态转换图 • 2.7 数据字典 • 2.8 需求分析的其他图形工具 • 2.9软件计划阶段文档

软件工程讲义

软件工程讲义

软件工程讲义(师大讲课提纲__Y ang XS)1.软件工程基础(1)为什么要有软件工程(2)软件工程概念(3)软件生命周期(4)软件计划、需求分析(5)软件设计(概要设计、详细设计)(6)程序编码(7)软件测试(8)软件维护(9)软件开发管理技术2.面向对象的软件工程新技术——UML(1)UML简介(2)用例图与需求分析(3)组织结构图(概要设计)(4)类图与顺序图(详细设计)(5)关系型数据库表的设计3.VC++2005/2008程序调试(1)从C、C++到VC++语句精简、递归、结构钵、指针;类、对象;可视化、基础类库(2)C++两个标准:IS0/ANSI标准C++、C++/CLI(Microsoft专为而.net开发) (3)VC++中的类(4)VC++文档类型(5)VC++项目/工程的创建与打开(6)Win32控制台程序的创建与调试(7)MFC程序的创建与调试(8)使用VS2005/2008编辑图像和程序1.软件工程基础程序是为完成一定功能和性能而设计的计算机可执行的指令序列;数据是程序能操作的数字信息;文档是程序开发、维护和使用有关的图文资料。

软件是计算机系统中程序、数据和相关文档的完整集合。

软件分为系统软件、支撑软件和应用软件。

计算机程序的功能越来越强,综合性越来越强,就成了软件。

程序设计阶段、程序系统阶段、软件工程阶段。

(1)为什么要有软件工程开发一个中、大型软件不是一人能做到,需要很多人参与。

如何组织好多人软件开发,需要有一套科学的管理流程,有一套软件开发各阶段工程技术人员都能看懂并且遵守的描述与约束规则。

为使软件达到预期目的,需要软件工程。

为使软件维护性好、可升级,需要软件工程。

(2)软件工程的概念Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。

IEEE:软件工程是开发、运行、维护和修复软件的系统方法。

Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。

软件工程讲义

软件工程讲义

软件工程讲义在当今信息时代,软件产业已经成为了世界经济发展的重要组成部分。

软件工程作为软件产业的基石,扮演着不可忽视的角色。

本文将以软件工程讲义的形式,系统介绍软件工程的基本概念、原理和方法,助力读者全面理解和掌握软件工程的知识体系。

第一章:软件工程概述1.1 软件工程的定义和意义1.2 软件生命周期1.3 软件工程的基本原则第二章:软件开发过程2.1 瀑布模型2.2 快速原型模型2.3 敏捷开发模型2.4 喷泉模型第三章:需求工程3.1 需求获取3.2 需求分析与规约3.3 需求验证和确认第四章:设计工程4.1 结构化设计4.2 面向对象设计4.3 软件体系结构设计第五章:编码与测试5.1 编码规范5.2 测试策略与方法5.3 软件质量保证与评估第六章:软件项目管理6.1 项目计划与组织6.2 软件配置管理6.3 软件项目风险管理第七章:软件工程的新兴技术7.1 云计算与软件工程7.2 大数据与软件工程7.3 物联网与软件工程结语软件工程是软件产业持续发展的保障,掌握软件工程的基本原理和方法对于从事软件开发和软件项目管理的人员来说至关重要。

通过本讲义的学习,读者将了解软件工程的核心概念、开发过程和各个阶段的具体内容。

同时,本讲义也对软件工程的新兴技术进行了简要介绍,帮助读者掌握行业的最新动态。

期望读者能够通过学习软件工程,提升软件开发和管理的能力,为软件产业的发展做出更大的贡献。

总结起来,软件工程讲义涵盖了软件工程的概述、软件开发过程、需求工程、设计工程、编码与测试、软件项目管理以及软件工程的新兴技术等内容。

通过细致而系统的学习,读者将逐步掌握软件工程的知识体系,为未来在软件产业中的发展打下坚实的基础。

简明扼要的软件工程讲义.pptx

简明扼要的软件工程讲义.pptx

2. 软件工程环境 称软件工程环境是全面支持软件开发全过程的软
件工具集合。
计算机辅助软件工程(CASE)是将各种软件工具、 开发机器和一个存放开发过程信息的中心数据库 组合起来,形成软件工程环境。
2 软件需求分析
2.1需求分析与需求分析方法 1.需求分析
软件需求是指用户对目标软件系统在功能、行为、 性能、设计约束等方面的期望。 需求分析阶段的工作包括四个方面: ① 需求获取 ② 需求分析 ③ 编写需求说明书 ④ 需求评审
②去掉具体模型中非本质因素,抽象出当前系统的逻辑模型:
③根据计算机的特点分析当前系统与目标系统的差别,建立目标 系统的逻辑模型
④完善目标系统并补充细节,写出目标系统的软件需求规格说明; ⑤评审直到确认完全符合用户对软件的需求。
(2)结构化分析的的常用工具 1. 数据流图
数据流图是描述数据处理过程的有力工具,是从数 据传递和加工的角度,以图形的方式刻画数据流 从输入到输出的移动变换过程。
软件工程
1. 软件工程基本概念。 2. 结构化分析方法。 3. 结构化设计方法。 4. 软件测试的方法。 5. 程序的调试。
1 软件工程的基本概念
1.1软件以及特点
(1)软件的组成 计算机软件(Software)是计算机系统中与硬件相互
依存的另一部分,包括程序、数据及其相关文 档。软件由两部分组成: 机器可执行的程序和数据; 有关文档。
1.2软件危机与软件工程
软件工程概念的提出源自软件危机。 软件危机主要表现在:
① 软件需求的增长得不到满足; ② 软件开发的成本和进度无法控制; ③ 软件质量难以保证; ④ 软件不可维护或维护成度非常低; ⑤ 软件成本不断提高; ⑥ 软件开发生产率的提高赶不上硬件的发展和

软件工程讲义_第二章

软件工程讲义_第二章

演化过程模型评述[NOG00]
首先,原型开发(和其他更加复杂的演化过程) 由于构建产品需要的周期数目不确定,给项目策 划带来了困难。 其次,演化软件过程没有确定演进的最快速度。 如果演进的速度太快,完全没有间歇时间,项目 肯定会陷入混乱;反之,如果演进速度太慢,则 会影响生产率…… 再次,软件过程应该侧重于灵活性和可扩展性, 而不是高质量。为了追求高质量而延长开发时间 势必造成产品推迟交付,从而失去进入市场的良 机。

过程模式

过程模式提供了一种有效的机制来描述各 种软件过程。模式使得软件工程组织能够 从高层抽象开始,开发层次化的过程描述。 高层抽象描述又进一步细化为一系列步骤 模式以描述框架活动,然后每一个步骤模 式又进一步逐层细化为更详细的任务模式。 过程模式一旦建立起来,就可以在过程变 体的定义中复用——即软件开发队伍可以 将模式作为过程模式的构建模块,定制特 定的过程模型。

演化过程模型评述

演化模型的初衷是采用迭代或者增量的方式开 发高质量软件。可是,用演化模型也可以做到强 调灵活性、可扩展性和开发速度。软件开发团队 及其经理所面临的挑战就是在这些严格的项目和 产品参数与客户(软件质量的最终仲裁者)满意 度之间找到一个合理的平衡点。
专用过程模型
专用过程模型具有传统过程模型的一些特 点,但是,专用过程模型往往应用面较窄, 只适用于某些特定的软件工程方法。 在某些情况下,这些专用过程也许更确切 地应该称为技术的集合或方法论,是为了 实现某一特定的软件开发目标而制定的。 但它们确实也提出了一种过程。
模式名称:应能清楚地表述该模式在软件过程中的功能。 驱动力:模式使用环境及主要问题, 以明确主要难点 并可能影响解决方案。 类型:定义模式类型。 启动条件:描述模式应用的前提条件。 问题:描述模式将要解决的问题。 解决办法:描述模式的实现。 结束条件:描述模式成功执行之后的结果。 相关模式:以层次或其他图的方式列举与该模式相关的 其他模式。 已知应用实例:介绍该模式的具体实例。

软件工程讲义_第十七章软件配置管理

软件工程讲义_第十七章软件配置管理

SCM场景
软件工程师的目标是高效地工作。即软件工程师在代 码的创建和测试以及编写支持文档时不做不必要的相互 交流;但同时,软件工程师们又尽可能地进行有效的沟 通和协调。特别是,软件工程师可以使用相应的工具来 协助开发一致的软件产品;软件工程师之间可以通过相 互通报任务要求和任务完成情况来进行沟通和协调;通 过合并文件,可以使变更在彼此的工作中传播。对于同 时有多个变更的构件,要用机制来保证具有某种解决冲 突和合并变更的方法。依据系统变更原因日志和究竟如 何变更的记录,历史资料应该保持对系统中所有构件的 演化过程的记录。软件工程师有他们自己创建、变更、 测试和集成代码的工作空间。在特定点,可以将代码转 变成基线,并从基线做进一步的开发。
软件工程
第17章 软件配置管理
主要内容
软件配置管理概述 SCM中心存储库 SCM过程 小结
软件配置管理
软件配置管理(SCM),也称为变更管理,是 一组管理变更的活动。它通过下面的方式来管理 变更:识别可能发生变更的工作产品,建立这些 工作产品之间的关系,制定管理这些工作产品的 不同版本的机制,控制所施加的变更,审核和报 告所发生的变更。 参与软件过程的每个人在某种程度上都参与变 更管理,但是有时候也设专人来管理SCM过程。
基线化的SCI和项目数据库
图17-1 基线化的SCI和项目数据库
软件配置项
软件配置项是在软件工程过程中创建的信息。在极端情 况下,大型规格说明中的一节、大型测试用例集中的一 个测试用例都可以看做是一个SCI。再实际点,一个 SCI可以是工作产品的全部或部分。 除了这些来自软件工程工作产品的SCI之外,很多软件 工程组织也将软件工具列入配置管理的范畴,即,特定 版本的编辑器、编译器、浏览器以及其他自动化工具都 被“固化”为软件配置的一部分。因为要使用这些工具 来生成文档、源代码和数据,所以当要对软件配置进行 变更时,必须得到这些工具。虽然并不多见,但一个工 具的新版本有可能产生和原版本不同的结果。因此,就 像它们协助开发的软件一样,工具也可以基线化为完整 配置管理过程的一部分。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程概述一、软件工程学科介绍二、学习目标三、部分参考资料四、课程特点和学习的注意事项五、教材简介六、课程考核方式一、软件工程学科介绍软件程学科发展历史三个阶段:概念提出、学科雏形、学科确立第一阶段:概念提出1968 年NATO 会议(北大西洋公约组织的计算机科学家的国际会议)提出“软件工程”概念。

当时对“软件工程”代表性定义:为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法。

1972 年IEEE 学会的计算机分会IEEE 一CS 第一次出版了“软件工程学报”第二阶段:学科雏形上世纪70 年代末,美国将软件工程教程列入研究生教育计划。

1980 年代末和1990 年代初,软件工程教育得到卡内基一梅隆大学软件工程研究所(CMU / SEI )的支持。

1991 年,“软件工程”被ACM (美国计算机协会)和IEEE / CS 列为计算学科的九个知识领域之一。

1993 年,IEEE 一CS 和ACM 为了把软件工程建设成为一个专业,建立了IEEE 一CS / ACM 联合指导委员会。

第三阶段:学科确立2004 年8 月,IEEE 一CS 和ACM 给出:软件工程知识体(SWEBOK , Software Engineering Body of Knowledge ) 软件工程教育知识体(SEEK ) 最终版,标志着软件工程学科在世界范围正式确立。

软件工程、计算机科学、计算机工程、信息系统、信息技术并列成为计算学科下的独立学科。

软件工程知识体(SWEBOK ) :全面描述了软件工程实践所需的知识。

SWEBOK (软件工程知识体》10 个领域软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量SWEBOK详细结构(1)软件工程与其他学科的关系1 、软件工程是计算学科9 个领域之一.算法和数据结构计算机系统结构人工智能和机器人学数据库和信息检索人一机交互操作系统程序设计语言软件方法学和软件工程数字和符号计算计算学科中12个重复出现的基本概念绑定.概念和形式模型效率抽象层次按时间排序安全性大问题的复杂性一致性和完备性演化按空间排序重用折衷与决策2 、8 个相关学科知识域计算机工程计算机科学数学管理学项目管理质量管理系统工程学软件人类工程学其中:计算机科学、数学是基础工程学科、管理学科也非常重要软件程是一门什么样的学科?它是指导计算机软件开发与维护的一门工程学科。

工程:将科学及数学原理运用于实际用途的应用手段,如:设计、制造、机器操纵、构架等。

典型的传统工程:建筑工程、机械工程、电力工程等。

概括的说,软件工程即用工程、科学和数学的原则和方法研制、维护计算机软件的有关技术及方法,其优点是以较小的代价开发高质量的软件并有效地维护它。

二、学习目标(1)掌握软件工程的基础知识和理论,对软件工程学有一个全貌的了解;熟悉软件项目开发和维护的一般过程;熟练掌握软件需求分析、设计、编码和测试等阶段的主要思想和技术方法;二、学习目标(2)通过学习,特别是通过课程设计,真正运用和深刻体会软件工程的思想方法,转变对软件开发的认识:从个人的单纯编程活动转移到进行系统分析与设计方面上来转变思维定式:程序员―系统工程师(系统分析员)三、部分参考资料《软件工程理论与实践》许家冶等编著,高等教育出版社,2005 年《软件工程》(第二版),齐治昌等,高等教育出版社,2004 年《面向对象的系统分析》,杨芙清等编著,清华大学出版社,2001 年《UML 用户指南》G Booch 等著,邵维忠等译,机械工业出版社2002 年四、课程特点和学习的注肯事项1 、知易行难要将理论知识与实践运用结合,进行对照,以加深理解和掌握。

2 、内容纷杂软件工程涉及计算机科学、数学、工程科学和管理科学等多个领域。

其中:计算机科学和数学用于构造模型与算法;工程科学用于制定规范、设计范型、评估成本及确定权衡管理科学用于计划、资源、质量和成本的管理。

五、教材总目录第 1 章软件工程学概述第 2 章可行性研究第 3 章需求分析第 4 章形式化说明技术第 5 章总体设计第 6 章详细设计第7 章实现第8 章维护第9 章面向对象方法学引论第10 章面向对象分析第11 章面向对象设计第12 章面向对象实现第13 章软件项目管理附录AC + +类库管理系统分析与设计附录 B 汉字行编辑程序设计课程内容学时安排章节课程内容学时l 软件工程学概述 42 可行性研究 43 需求分析 45 总体设计 66 详细设计 47 实现8章节课程内容学时8 软件维护 29 面向对象方法学引论 410 面向对象分析 211 面向对象设计 212 面向对象实现213 软件项目管理 614 总结2六、课程考核方式分数组成:平时成绩(10 % ) :以理论课课堂表现为主。

作业(30 % ) :书面作业期末考试(60 % ) :第 1 章软件工程学概述学习重点1、软件危机、软件工程产生的原因2、软件工程过程和软件生命周期3、软件生命周期模型掌握几个基本概念软件危机软件工程软件过程软件生命周期软件生命周期模型软件危机与软件工程学软件工程学的产生要从“软件危机”说起1968 年,第一届NAT0 (北大西洋公约组织的计算机科学家的国际会议)会议,“ 软件工程” 的慨念作为一种有效解决“ 软件危机” 的途径被正式提出。

什么是软件危机?软件危机有什么典型表现?为什么会产生软件危机?怎么解决软件危机?§1 软件危机§ 1 . 1 . 1 软件危机介绍什么是软件危机?软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。

软件危机主要包括的问题(两方面):①如何开发软件②如何维护软件软件危机有什么典型表现?(1)开发费用和进度难以估算和控制,大大超过预期的资金和规定日期;软件需求分析不够充分,用户不满意“已经完成”的软件系统。

软件质量难于保证;软件维护困难;难以改正程序中的错误;难以根据用户的需要在原有程序中增加一些新的功能。

软件危机有什么典型表现?通常没有保留适当的文档资料。

文档的作用:软件开发管理人员:用于管理和评价软件开发工程的进展状况软件开发人员:用于开发人员对各个阶段的工作都进行周密思考、全盘权衡、从而减少返工。

并且可在开发早期发现错误和不一致性,便于及时加以纠正软件维护人员:软件维护的依据开发成本逐年上升,软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

几个软件危机的著名案例①1966年,IBM 360 机的操作系统。

花费5000 人一年的工作量,写了近 1 万行代码。

错误百出,每次的新版本就是从前一版本中找 1 000个程序错误而修正的结果。

②1963 年,美国用于控制火星探测器的计算机软件中的一个“ , ”号被误写为“.”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。

③美国丹佛新国际机场自动化行李系统软件。

投资 1. 93 亿美元,计划1993 年万圣节启用。

但开发人员一直为系统错误困扰,屡次推后启用时间,直到1994 年6 月,机场计划者承认无法预测何时能启用。

④1996 年,欧洲阿里亚纳5 型运载火箭坠毁,造成5 亿美元损失。

原因是控制软件中的一个错误。

§1 . 1 . 2 产生软件危机的原因主要两个原因:1 、与软件本身的特点有关2 、与软件开发与维护的方法不正确有关。

一、软件本身的特点(1)软件与硬件、一般程序存在很多不同之处。

1 、软件与硬件不同抽象性。

软件生产没有明显的制造过程,难以衡量开发进展,也难以控制软件质量。

问题的隐蔽性。

没有硬件的磨损、老化问题,但存在开发早期在分析、设计阶段的错误,修改难度较大。

失效率蜘线改正一个问题需付出的代价2 、软件与一般程序不同(1)①软件远比一般程序规模庞大,复杂性高软件所反映的实际问题的复杂性程序逻辑结构的复杂性。

例1 : Windows95 , 1000 万行代码;Windows2000 ,5000 万行代码例2 : Exchange 2000 和windows 2000 开发人员软件的规模软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。

2 、软件与一般程序不同(2 )②大型软件开发既有技术问题,还有社会问题。

社会因素:组织机构、体制、管理方式、观念、人的心理素等。

开发团队成员分工合作技术与管理的矛盾软件开发人员对软件应用的领域知识的了解二、软件开发维护方法中存在的问题(1)①对用户需求的获取不正确用户的原因分析人员的原因对分析人员的要求:沟通能力、归纳总结能力、经验越是早期产生的错误,付出的代价越大。

图:不同时期引入同一变动的代价二、软件开发维护方法中存在的问题( 2 )②软件开发就是编写程序。

一个完整的软件产品由一整套完整的配置组成,程序只是其中的一个组成部分。

软件开发过程包括多个阶段,每个阶段的产品都是最终的完整的软件产品的一部分。

③软件开发只要依靠个别编程高手就能完成。

④轻视软件维护软件维护约占软件费用55 一75 % ,包括修改软件运行的错误;对软件进行改进和功能扩充。

软件维护在软件费用的比例三、其他产生软件危机的原因①软件开发尚未完全摆脱手工艺的开发方式。

②软件成本相当昂贵,主要依靠大量复杂的、高强度的脑力劳动③软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。

软件的“ 可移植性” 就是指的软件对硬件的依赖程度。

好的可移植性依赖少。

§1 . 1 . 3 消除软件危机的途径1 、彻底消除“软件就是程序”的错误观念。

2 、充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目,不是个人独立的劳动。

3 、推广和使用在实践中总结出来的软件开发的成功技术和方法。

4 、开发和使用更好的软件工具总结:“软件工程”的方法理论是摆脱软件危机的一个主要出路。

计算机和软件科学家为解决软件危机问题,尝试将在其它领域中行之有效的工程学知识运用到软件开发工作中来,经过不断实践和总结,最后得出一个结论;按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一个主要出路。

思考题( 1 )1 )只要是编程高手,即使是不懂软件工程,也能编出很好的软件。

软件是服务于大众,却是由个性化的开发人员完成的。

如果个性化太强,程序就无法阅读,其他人员也就无法维护。

例:国内80 年代涌现出来的众多汉字操作系统均是由编程高手完成的。

思考题( 2 )2 )只要拥有一套讲述如何开发软件的书籍,并了解了书中的标准与示例,就可以解决软件开发中遇到的任何问题。

软件是用来解决现实问题的,现实问题的特殊性对规范提出了挑战(要进行适应)。

相关文档
最新文档