第1篇软件工程与软件过程
01-软件工程与软件过程

5. 软件是复杂的,而且以后会更加复杂
– 软件是人类有史以来生产的复杂度最高的工业产品。
– 软件的复杂,不是因为软件本身复杂,而是人的思想复杂。
2023/11/6
8
1.1 软件危机
• 软件危机的介绍
2023/11/6
30
瀑布模型
• 在20世纪80年代之前,瀑布模型一直是唯一被广泛 采用的生命周期模型,现在仍然是应用得最广泛的 过程模型。
• 按照传统的瀑布模型来开发软件,有如下特点。
– 阶段间具有顺序性和依赖性 – 推迟实现的观点
• 清楚地区分逻辑设计与物理设计,尽可能推迟程序的 物理实现。
2023/11/6
软件工程
– 1968年秋,提出软件工程
1) 将系统化、规范化、可量化
软件开发技术 软件项目管理
的工程原则和方法,应用于 软件的开发、运行和维护。
2) 对1)中方法的理论研究。
• 软件工程
软件工程环境 软件工具
软件开发方法学
– 认为:按照工程化的原则和方法组织软件开发工作,是 摆脱软件危机的一个主要出路。
16
• 软件工程方法学
– 把在软件生命周期全过程中使用的一整套技术的集合称为 方法学(methodology),也称范型(paradigm)。
– 软件工程方法学三个要素:方法、工具和过程。
• 方法是完成软件开发各项任务的技术,回答“如何做”; • 工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什
善; • 预防性维护,即修改软件为将来的维护活动预先做准备。
2023/11/6
软件工程过程与软件工程

目录
• 软件工程过程概述 • 软件需求分析 • 软件设计 • 编码与测试 • 软件维护与演化 • 软件工程工具与技术 • 软件工程实践与案例研究
01 软件工程过程概述
软件工程过程的定义
01
软件工程过程是指软件开发和维 护的整个生命周期中,所涉及的 一系列活动和任务的集合。
持续集成与持续部署(CI/CD):自动化测试和部署软件变更。
06 软件工程工具与技术
建模工具
01
02
03
UML工具
用于绘制各种UML图,如 类图、时序图、用例图等, 帮助理解和设计软件系统。
流程图工具
用于绘制流程图、状态图 等,有助于理解和优化业 务流程。
原型设计工具
快速创建软件原型,帮助 团队更好地理解用户需求 和交互设计。
需求获取的方法和技术
原型开发
根据初步需求,制作软件原型,供利 益相关者评估和反馈。
观察法
通过观察利益相关者的操作和业务流 程,了解其需求。
需求获取的方法和技术
需求建模
使用图形化建模工具(如UML)描述软件需求。
数据挖掘
从现有数据中挖掘潜在需求。
自然语言处理
利用自然语言处理技术对文本进行分析,提取 需求信息。
Junit
Java语言的单元测试框架,帮助开发者编写和执 行测试用例。
TestNG
基于Java的测试框架,支持多种测试类型和方法。
集成开发环境(IDE)
Eclipse
流行的Java集成开发环境,也支持其他语言和插件。
Visual Studio Code
轻量级的代码编辑器,支ຫໍສະໝຸດ 多种编程语言和扩展。IntelliJ IDEA
软件工程第1章软件过程

2.1 软件过程模型与过程流
过程流(模型)是最主要的一类软件过程模型。 过程流描述了如何在执行顺序和执行时间这一层面上,组织 软件过程中(除维护之外的)的活动。 几种主要的过程流及典型过程模型:
线性过程流:瀑布模型 迭代过程流:原型开发模型 演化过程流:螺旋模型 并行过程流: 混合过程流:增量模型
❖ 2011年,宣布诺基亚与微软公司达成战略合作伙伴,将在所有智能手机 上都采用Windows Phone 7操作系统。
软件工程第1章软件过程
微软坑我千百遍
但由于:
微软在WP7的研发和发布等发面,并未给予Nokia特别的优待; 微软的Windows Phone系统与原有的Symbian系统并不兼容(连导入/导 出通讯录都很麻烦); 微软在2011年推出Windows Phone 7后不久,就正式宣布运行WP7的手 机无法升级到即将发行的WP8系统。
软件工程第1章软件过程
2.2 瀑布模型的不足
瀑布模型要求在项目开始的需求分析阶段就能够完整的得到客 户的所有需求。但在实际中客户通常难以清楚地描述出所有的 需求;同时,客户自身的需求也可能会随着时间的变化而发生 变化。
1988年的发表的一份关于软件项目的研究报告指出,平均每个项目有 25%左右的需求功能点变化; 1997年的另一份研究报告中,需求功能点的变化率则达到了35%-50% 。
过程管理的任务:
发现、去除非增值活动,简化过程 通过合理安排活动顺序提高过程效率 适当改变过程以适应环境变化 对过程执行情况加以监控,寻找过程中的错误、薄弱、低效环节并加 予以纠正
软件工程第1章软件过程
1.2 软件过程定义
软件过程:构建、维护软件产品时所执行的一系列活动、动作 和任务的集合。
软件工程的基本原理和开发流程介绍

软件工程的基本原理和开发流程介绍第一章:软件工程基本原理软件工程是一门研究如何在规定时间、预算和资源限制下开发高质量软件的学科。
它的基本原理包括:软件生命周期、需求工程、软件设计、软件测试、软件维护等。
1.1 软件生命周期软件生命周期指软件从概念到废弃的全过程。
它由几个阶段组成,包括需求分析、设计、编码、测试、部署和维护。
在每个阶段,有特定的任务和交付物需要完成。
1.2 需求工程需求工程是软件开发的第一阶段,其目标是明确和规范软件系统的功能需求和性能要求。
需求工程师与用户和其他相关利益相关者进行沟通,收集并分析用户需求,最后得到明确的需求规格说明。
1.3 软件设计软件设计是实现需求规格说明的过程,它的目标是将需求转化为可执行的软件设计和架构。
软件设计需要考虑软件模块和组件的结构、关系以及数据存储和处理等方面。
1.4 软件测试软件测试是为了发现和修复软件中的错误和缺陷而进行的过程。
它包括单元测试、集成测试、系统测试和验收测试等阶段,通过执行测试用例来验证软件是否达到了预期的功能和性能。
1.5 软件维护软件维护是软件生命周期中最长的一个阶段,其目标是确保软件一直处于可用状态。
它包括纠正错误、改进性能以及适应新的需求变化等活动。
第二章:软件开发流程软件开发流程指导开发团队在软件工程实践中的活动顺序和方法。
常见的开发流程模型有瀑布模型、迭代模型和敏捷模型等。
2.1 瀑布模型瀑布模型是最早被广泛采用的软件开发流程模型,它按照严格的顺序执行各个阶段,阶段之间有明确的交付物和沟通。
这种模型适用于需求明确且不易变动的项目。
2.2 迭代模型迭代模型是一种循环迭代的开发流程模型,它将软件开发过程划分为多个迭代阶段。
每个迭代都包含需求分析、设计、编码、测试和评审等活动。
该模型适用于需求变化频繁的项目。
2.3 敏捷模型敏捷模型是一种注重灵活性和快速交付的开发流程模型,它强调团队合作、面对面沟通和快速反馈。
敏捷开发常用的方法有Scrum、XP、Lean等。
软件与软件工程-软件过程

2.3 软件过程模型
3.瀑布模型与快速原型模型之间地关系
2.3 软件过程模型
2.3 软件过程模型
• 2.3.5 喷泉模型
喷泉模型是一种过程模型,同时也支持面向对象开发。在面向对 象地方法中,分析模型与设计模型采用相同地符号标示体系,各阶 段之间没有明显地界限,而且常常重复,迭代地进行。
“喷泉”一词体现了面向对象方法地迭代与无间隙性。迭代是 指各阶段需求多次重复,例如,分析与设计阶段常常需求多次,重 复进行,以更好地实现需求。无间隙性是指各个阶段之间没有明 显地界限,并常常在时间上互相交叉,并行进行。
2.3 软件过程模型
2.瀑布模型与增量模型之间地关系
增量模型是把待开发地软件系统模块化,将每个模块作为一个 增量组件,一个模块接着一个模块地进行开发,直到开发完所 有地模块。
在开发每个模块时,通常都是采用瀑布模型,从分析,设计,编码 与测试这几个阶段进行开发。所以,增量模型中有瀑布模型, 即宏观上是增量模型,微观上是瀑布模型。
增量模型地缺点是要求待开发地软件系统可以被模块化。如果待开
2.3 软件过程模型
增量模型适用于具有以下特征地软件开发项目。 软件产品可以分批次地进行交付 待开发地软件系统可以被模块化 软件开发人员对应用领域不熟悉,难以一次性地进行系统开发 项目管理人员把握全局地水平较高
2.3 软件过程模型
• 2.3.4 螺旋模型 • 螺旋模型是一种用于风险较大地大型软件项目开发地过程
2.3 软件过程模型
• 2.3.1 瀑布模型
瀑布模型是一种线性地开发模型,具有不可 回溯性。开发人员必须前一阶段地任务完成 后,才能开始进行后一阶段地工作,并且前一 阶段地输出往往就是后一阶段地输入。由于 其不可回溯性,如果在软件生命周期地后期 发现并要改正前期地错误,那么需求付出很 高地代价。传统地瀑布模型是文档驱动地。 如图所示。
软件工程软件过程

软件工程软件过程概述软件工程软件过程是指在软件开发过程中,使用系统化、规范化并可重复的方法来组织和管理软件开发,以提高软件产品质量、降低开发成本和缩短开发周期的一套活动。
软件工程软件过程是软件工程的核心和基础,对于软件项目的成功实施起着重要的作用。
在软件工程中,软件过程是一系列相互关联和依赖的活动,通过这些活动可以实现对软件开发过程的有效控制和管理。
软件过程能够帮助软件开发团队理解和分解复杂的问题,明确开发目标,并组织、规划和协调开发活动,最终实现高质量的软件产品交付。
软件过程的基本特征系统性软件过程需要从整体上考虑软件开发过程的方方面面,不仅仅是完成特定的任务。
它需要整合和协调软件开发过程中的各个环节,包括需求分析、软件设计、编码、测试、部署等。
只有将软件开发看作是一个系统,才能够更好地进行规划和管理。
规范性软件过程需要遵循一定的规范和标准,以确保软件开发过程的质量和一致性。
规范的软件过程能够提供清晰的工作指导,减少开发人员之间的误解和差异,并提升软件产品的开发效率和质量。
可重复性软件过程需要能够在不同的项目和团队中得到复用和重复利用。
通过定义和建立通用的软件过程模型,可以提高软件开发的效率和可靠性,并为后续的软件项目提供参考和借鉴。
风险管理软件过程应该能够及时识别和解决软件开发过程中的风险和问题。
通过采用合适的方法和工具,可以将风险降到最低,并及时调整软件开发计划和资源分配,确保软件项目的顺利进行。
软件过程的模型瀑布模型瀑布模型是软件工程中最经典的软件过程模型之一。
它将软件开发过程划分为多个阶段,每个阶段的输出成果作为下一个阶段的输入。
瀑布模型的阶段包括需求分析、系统设计、编码、测试和维护。
这种线性的阶段划分可以有效地保证软件开发过程的可控性和可管理性。
瀑布模型适用于那些需求稳定、开发目标明确的软件项目。
然而,瀑布模型也存在一些局限性,比如无法适应需求变化频繁的项目和无法在早期发现问题。
因此,在实际应用中,可以根据项目的需求和特点选择其他适合的软件过程模型。
总结:软件工程与软件过程基本概念.
增量模型
增量1 分析 增量2 设计 分析 编码 设计 分析 测试 编码 增量1 交付客户 测试 编码 增量2 交付客户 测试 增量3 交付客户
增量3
设计
…..
增量n
分析
设计 日历时间
编码
测试
增量n 交付客户
增量模型的特点
过程渐进性:每次提交一个满足用户需求子 集的增量构件; 增量模型强调每一个增量均发布一个可操作 的产品。 能在短时间内向用户提交可使用的软件; 软件系统的体系结构必须具有高度的开放性 和可扩充性; 在逐步增加产品功能的过程中有充裕的时间 学习和适应新的功能。
12 。 螺旋模型
螺旋模型是一个演化软件过程模型。 它将原型实现的迭代特征与线性顺序模型 中控制的和系统化的方面结合起来。 在螺旋模型中,软件开发是一系列的增量 发布。 在每一个迭代中,被开发系统的更加完善 的版本逐步产生。 螺旋模型被划分为若干框架活动,也称为 任务区域。
螺旋模型沿着螺线旋转,在四个象限上分别 表达了四个方面的活动,即: 制定计划──确定软件目标,选定实施方案, 弄清项目开发的限制条件。 风险分析──分析所选方案,考虑如何识别和 消除风险。 实施工程──实施软件开发。 客户评估──评价开发工作,提出修正建议。
14。 第四代技术
第四代技术包含了一系列的软件工具。 能使软件工程师在较高的级别上规约软件 的某些特征。 软件工具根据开发者的规约自动生成源代 码。
7。编码修复模型
编码修复模型是所有模型中最古老也是最 简单的模型。
编码 测试
交付
编码修复模型的特点
它几乎不执行任何预先的计划,该模型的 使用者很快就进入了所开发产品的编码阶 段。 典型的情况是,完成大量的编码,然后测 试产品并且纠正所发现的错误。 编码和测试工作一直持续到产品开发工作 全部完成并将产品交付给客户。
第一部分软件工程与过程精品PPT课件
❖ 第三代:传统软件工程阶段。20世纪70年代中期至 80年代中期,软件工程师把工程化的思想加入到软件 的开发过程中,用工程化的原则、方法和标准来开发 和维护软件。
12.10.2020
工具 方法 过程
质量焦点
zhu.
软件过程框架
❖ 定义:
▪ 框架是实现整个软件开发活动的基础,并且那些与 过程有关的角色、职责的定义以及实现也都离不开 框架的支持
❖ 两个方面
▪ 组织及管理框架 ▪ 技术及工具框架
12.10.2020
zhu.
软件过程模型
❖ 把软件生命周期中各项开发活动的流程用一个合理的 框架—开发模型来规范描述,这就是软件过程模型。
12.10.2020
zhu.
软件工程两大范型
❖ 面向对象范型
▪ 特征:将对象视作一个融合了数据及在其上操作的行 为的、统一的软件组件。
▪ 技术包括:
面向对象分析 面向对象设计 面向对象编程 面向对象测试 面向对象维护
▪ 优势:
对象的概念符合业务或领域的客观实际 维护容易
12.10.2020
zhu.
软件工程-方法与实践
12.10.2020
2014年3月
zhu.
学习基本要求 1、课前预习; 2、自主熟悉设计工具(PowerDesigner、Visio); 3、分组(最多六人)做一定规模的项目; 4、小组分阶段汇报项目进展; 5、主动参与项目开发; 6、在干中学习,在干中掌握本课程核心知识; 7、理论考试成绩与所做项目得分各50%; 8、必须是团队协作,不是单打独斗。
教学课件PPT软件工程软件过程
14
两步设计
总体设计:体系结构
阶段性产品
概要设计规格说明书 数据库或数据结构设计说明书 集成测试计划
Feasibility study
Is it technically and financially feasible to build the system?
Requirements elicitation and analysis
What do the system stakeholders require or expect from the system?
19
Software evolution
Software is inherently flexible and can change. As requirements change through changing business
circumstances, the software that supports the business must also evolve and change. Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new.
Interface design, where you define the interfaces between system components.
01-软件工程与软件过程
开发环境及开发时使用的技术方法等
因素,影响阶段的划分。
软件定义
• 生命周期模型规定了
把生命周期划分成哪
软件开发
些阶段及各个阶段的 执行顺序,因此,也
软件维护
称为过程模型。
2023/11/4
8
瀑布模型
• 在20世纪80年代之前,瀑布模型一直是唯一被广泛 采用的生命周期模型,现在仍然是应用得最广泛的 过程模型。
• 方法是完成软件开发各项任务的技术,回答“如何做”; • 工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什
么做”; • 过程是为获得高质量的软件要完成的一系列任务的框架,规定完成
各项任务步骤,回答“如何控制、协调、保证质量”。
管理方法
2023/11/4
2
1.3 软件生命周期
• 软件生命周期由软件定义、软件开发和运行维护 三个时期组成,每个时期又可进一步划分成若干 个阶段,12
传统的瀑布模型
10
– 质量保证的观点
• 每个阶段都必须完成规定的文档,没有交出合格的 文档就是没有完成该阶段的任务。
• 每个阶段结束前都要对所完成的文档进行评审,以 便尽早发现问题,改正错误。
2023/11/4
11
实际瀑布模型
• 可以在一定程度解决 “变化”的问题
• 如何“拥抱”变化?
实际的瀑布模型
些模块组成以及模块间的关系。
5. 详细设计
– 任务是把解法具体化,回答“应该怎样具体地实现这个系 统”这个关键问题。
– 还不是编写程序,而是设计出程序的详细规格说明。 – 又称为模块设计、物理设计或低层设计。
2023/11/4
5
6. 编码和单元测试
– 关键任务是写出正确的容易理解、容易维护的程序模块,并测 试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20
1.1.2
软件危机介绍
1.软件危机的产生 20世纪60年代中期以后,一些开发大型软件系统的要 求提了出来。然而软件技术的进步一直未能满足形势发展 的需要,在大型软件的开发过程中出现了复杂程度高、研 制周期长、正确性难以保证的三大难题。遇到的问题找不 到解决办法,致使问题堆积起来,形成了人们难以控制的 局面,出现了所谓的“软件危机”。 1963年,美国用于控制火星探测器的计算机软件中的 一个“,”号被误写为“。”,而致使飞往火星的探测器 发 生爆炸,造成高达数亿美元的损失。
的基本原理及目标、软件开发模型;
本章难点:五种软件开发模型的使用;
14
教学内容 1.1 1.2 1.3 1.4 软件与软件危机 软件工程 软件生命周期 软件过程
1.5
1.6
能力成熟度模型
关于软件的一些观点
本章小结
15
1.1
软件与软件危机
教学内容 1.1.1 1.1.2 1.1.3 1.1.4 软件及其特性 软件危机介绍 产生软件危机的原因 消除软件危机的途径
9
——参考书目
软件工程:实践者的研究方法(第六版)
梅宏等译 机械工业出版社
OOD启思录
Arthur J.Riel 人民邮电出版社
面向对象分析与设计(UML 2.0版)
Mike O„Docherty 著,俞志翔 译, 清华大学出版社
设计模式初学者指南
Allen Holub 著,徐迎晓译 机械工业出版社
返回目录
16
1.1.1
软件及其特性
1. 软件的定义
计算机软件是计算机系统中与硬件相互依存的另 一部分,它是由计算机程序的发展而形成的一个概念。 它是与计算机系统操作有关的程序、规则及其相关文 档和数据的统称。 可以写作为:软件=程序+数据+文档
程序:是按事先设计好的功能和性能要求执行的语句序列; 数据:是指程序能正常处理信息的数据和数据结构; 文档:是与程序开发、运行和维护有关的各种图文资料;
软件工程
1
——学习目标
为什么要学软件工程、在软件工程中学什么、 应该怎么学软件工程
有助于正确理解和认识“软件”的概念及其特点
理解软件开发面临的问题和挑战
掌握运用软件工程的原则、方法和思想系统地开发 软件,尤其是复杂、庞大的软件的开发
了解和接触软件开发所需的各种技术手段
理解、掌握和运用
2
理解
36
1.2.3
软件工程方法学
软件工程方法学:在软件生命周期全过程中
使用的一整套技术方法。亦称:范型。
传统方法学 面向对象方法学
37
1、传统方法学 亦称:生命周期方法学,或结构化范型。是采用结构 化技术(结构化分析、设计、编程)来完成软件开发的 各项任务。 特点:把软件生命周期的全过程划分为若干阶段,依 次完成各阶段的任务。 前一阶段任务的完成是后一阶段任务开始的基础; 前一阶段任务结束的结果是后一阶段开始的标准; 每一阶段完成后,建立相应的文档资料; 每一阶段的任务相对独立。
什么是软件工程
为什么需要软件工程(产生背景) 软件工程需要解决哪些问题 软件工程涉及哪些方面内容
3
掌握
软件工程
概念 技术 过程 手段 工具
4
运用
运用工程化思想进行软件开发
需求分析 软件设计
程序设计
软件测试 软件维护
5
——总目录
软件工程与软件过程 软件开发工具与环境 传统的方法学 面向对象方法学 软件项目管理 形式化方法及软件重用
软件工程正是从管理和技术两方面研究如何 更好地开发和维护计算机软件的一门新兴学科。
25
1.2
软件工程
返回目录
主要教学内容
1.2.1 软件工程的介绍
1.2.2
1.2.3
软件工程的基本原理
软件工程方法学
26
1.2.1
软件工程的介绍
1. 软件工程的形成与发展 为了解决软件危机,人们在软件开发中也不断改进和 发展,在计算机软件开发经历的三个发展阶段:
原因:把原本密切相关的数据和操作人为地分离成了 两个独立的部分,增加了软件开发与维护的难度。
40
2、面向对象方法学
将数据和对数据的操作行为看成同等重要,以数据为 主线、模拟数据行为的方法。 把对象作为数计语言
汇编及机器语言
高级语言
软件工作范围
程序编写
包括设计和测试
需求者
程序设计者本人
少数用户 开发小组(“软件作 坊”)
市场用户 开发小组及大中型 软件开发机构
开发软件的组织
个人
28
特点
软件规模
程序设计阶段 (50至60年代)
程序系统阶段 (60至70年代)
软件工程阶段 (70年代以后)
小型
正如建设动物的窝和高楼大厦
大型、复杂软件系统的开发是一项工程,必须按照工 程化的方法组织软件的生产和管理,必须经过分析、
设计、实现、测试、维护等一系列软件过程和活动
24
1.1.4
消除软件危机的途径
返回目录
解决软件危机的途径 首先应该对计算机软件有一个正确的认识,加强软件 开发过程的管理
推广使用开发软件的成功技术与方法,研究探索更好 更有效的技术和方法 开发和使用好的软件工具
证,形成相关文档,对系统进行需求分析的调研与设计。 通过广泛的调研与分析,满足用户的需求。
11
【例】 请读者开发一个“学生成绩管理信息系统”,即学生 成绩管理MIS。
这是一项软件工程,为了完成这项任务,首先要选择软
件开发模型,确定开发方法,准备开发工具,设计开发环境和 运行环境,然后进行需求分析、概要设计、详细设计(对模块 的功能和性能、数据结构、用户界面等进行必要的设计)、编 程、测试、试运行、正式运行、验收和交付,最后是系统维 护或系统升级换代。在程序用户使用的过程中,还要对程序进 行不断的完善与修改,以满足用户的实际需要。
软件生存周期; 软件工程经历了三个阶段: 第一阶段:20世纪70年代,传统软件工程时代 第二阶段:20世纪80年代,过程软件工程时代 第三阶段:20世纪90年代,构件软件工程时代
31
2. 软件工程的定义及目标
Fritz Bauer曾经为软件工程下了定义:“软件工程是为了经济地获 得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善
12
如:学生成绩管理信息系统总体框图如下:
13
第1章
软件工程与软件过程
本章主要内容:软件的发展、定义及特征;软件
危机的产生原因及解决途径;软件工程的基本知 识、包括软件工程的定义、基本原理及目标;软 件生命周期的内容;软件开发模型;能力成熟度 模型的结构及成熟度等级;
本章重点:软件工程的定义及三要素、软件工程
17
2. 软件的特点
(1) 软件固有的特性
复杂性、抽象性、依赖性 软件使用特性
(2) 软件生产特性
软件开发特性、软件维护特性 软件产品形式的特性
18
3. 软件的分类
按软件功能进行划分
系统软件
支撑软件
应用软件
按软件规模进行划分
按开发软件所需的人力、时间及完成的源程序行数,可
6
——学习要求
听
– –
理解知识点和思想 无需死记硬背
做
–
–
–
– –
实践 体会软件工程的原则、方法和技术,在实践 中提高 培养抽象思维能力 培养独立解决问题的能力 培养合作精神
阅读相关资料
想
–
7
——考核方式
课程设计
考试
8
——课程设计要求
内容 – 相关课堂内容讲解完成之后 时间 – 2周之内 分组 – 以小组(3-5人)为单位,4人一组为宜 提交内容 – 电子文档 评价方法 – 按阶段递交和打分、完成项目需求、设计、编程、测试、运 行的全过程 – 文档: 完整性、合理性、规范性 – 程序正确、界面友好、使用方便
35
1.2.2
软件工程的基本原理
1983年,软件工程专家B.W.Boehm提出的7条软件工 程的基本原理:
用分阶段的生命周期计划严格管理;(管理) 坚持进行阶段评审;(管理、监理) 实行严格的产品控制;(管理、技术) 采用现代程序设计技术;(技术) 软件结果应能清楚地审查;(技术) 开发小组的人员应该少而精;(管理) 承认不断改进软件工程实践的必要性。(技术研究)
中小型
大中小型
决定质量的因素
个人程序技术
小组技术水平
管理水平 数据库、开发工具、 开发环境、工程化 开发方法、标准和 规范、网络及分布 式开发、面向对象 技术
开发技术和手段
子程序 程序库
结构化程序设计
29
特点
维护责任者
程序设计阶段 (50至60年代) 程序设计者 价格高 存储容量小 工作可靠性差
程序系统阶段 (60至70年代) 开发小组 降价、速度、容量 及工作可靠性有明 显提高 软件技术的发展不 能满足需要,出现 软件危机
程序设计阶段:约为50至60年代
程序系统阶段:约为60至70年代 软件工程阶段:约为70年代以后 从下表中可以看到软件开发三个发展阶段的主要特点。
27
软件发展的三个时期
特点
软件所指 程序设计阶段 (50至60年代) 程序 程序系统阶段 (60至70年代) 程序及说明书 软件工程阶段 (70年代以后) 程序、文档、数据 软件语言(如需求 定义语言等) 软件生命周期