第10章 软件工程
《软件工程》第10章 软件维护
北京大学远程教育课程
Software Engineering_Chapter10-2
问题定义
计划 时期 可行性论证 及软件计划
需求分析
概要设计 开发 时期
详细设计Байду номын сангаас
编码
测试 运行时期 运行/维护
北京大学远程教育课程
Software Engineering_Chapter10-3
本章主要内容
• 10.1 软件维护的定义,目标与任务 • 10.2 软件维护的类型 • 10.3 软件的可维护性
北京大学远程教育课程
Software Engineering_Chapter10-13
10.2.1 改正性维护(续)
• 实践表明,软件测试和排错不可能完全暴露并改正一个大 型软件系统中的所有错误。 • 经过统计分析,在典型的市场销售的软件包中,还有缺陷 的代码行约占代码总行数的3%。正式投入使用的软件中 含有错误是不足为奇的,即使是已运行多年的软件。 • 改正性维护举例:
北京大学远程教育课程
Software Engineering_Chapter10-6
10.1.3 软件维护的任务
• 一个软件开发机构60%的精力用在维护现有的软件上。随 着产品的增加,这个比例还将不断提高。不仅当前的软件 版本要维护,仍在使用的旧版本和即将投入使用的新版本 也将需要维护。 • 在软件整个运行周期中,不仅要解决原有问题,还要解决 修改过程中产生的新问题。因此软件维护是一个无穷尽的 过程。
Software Engineering_Chapter10-18
10.2.4 预防性维护
• 维护人员不要单纯等待用户提出维护的请求,而应该选择 那些还能使用数年、目前虽能运行,但不久就须作重大修 改或加强的软件,进行预先的维护。预防性维护可以改善 软件的可维护性,减少今后对它们维护时所需要的工作量。
软件工程导论第10章面向对象分析
易于理解,同时减少了代码冗余和重复,提高了开发效率和代码质量。
03
提高软件的可重用性
面向对象分析鼓励使用抽象和封装技术,使得软件组件更加模块化和可
重用,减少了重复开发的工作量,提高了软件开发的效率。
02
面向对象分析的主要步骤
问题识别
总结词
明确问题的本质和范围
详细描述
在面向对象分析中,问题识别是首要步骤,它要求对问题进行深入理解和明确, 包括确定问题的范围、目标、限制条件等,以便为后续的分析和设计工作提供 清晰的方向。
面向对象分析的优势与不足
过度抽象
面向对象分析有时会过度抽象,导致 系统过于复杂,难以理解和实现。
缺乏对系统流程的关注
面向对象分析更关注静态结构,可能 忽略系统流程和动态行为。
面向对象分析与传统分析方法的结合使用
在实际软件开发中,可以结合 面向对象分析和传统分析方法, 取长补短,提高软件开发的效
率和成功率。
05
面向对象分析与传统分析方法的 比较
传统分析方法的问题与挑战
缺乏对系统整体结构的考虑
传统分析方法往往只关注单个功能或模块,忽略了系统整体的结 构和关系。
难以处理复杂系统
对于复杂系统,传统分析方法难以有效地进行抽象和建模。
难以维护和扩展
由于缺乏整体结构和面向对象的思维,传统分析方法构建的系统往 往难以维护和扩展。
对象是指系统中具有明确边界和状态 的结构,它可以包含数据和操作,并 且具有封装性、继承性和多态性等特 征。
面向对象的基本特征
封装
封装是将对象的属性和操作封装 在一起,形成一个独立的实体, 对外隐藏内部实现细节,只通过 接口与外界交互。
继承
继承是指子类可以继承父类的属 性和方法,并且可以扩展或修改 它们,从而实现代码的重用和扩 展。
[软件工程]CH10
1.传统的项目管理
传统的项目管理主要是从生产大型、高费用、进度 要求严的复杂系统的需要中发展起来的。 美国在60年代只有航空、航天、国防和建筑工业才 愿意采用项目管理。 70年代项目管理在新产品开发领域中扩展到了复杂 性略低、变化迅速、环境比较稳定的中型企业中。 到70年代后期和80年代,愈来愈多的中小企业也开 始注目项目管理,将其灵活地运用于企业活动的管 理中,项目管理技术及其方法本身也在此过程中逐 步发展和完善 到80年代,项目管理已经被公认为是一种有生命力 并能实现复杂的企业目标的良好方法。
PMBOK和ISO10006
国际标准化组织还以美国项目管理学会(PMI)的项 目管理知识体系(PMBOK)指南等文件为框架,制 订了ISO10006这一关于现代项目管理的标准。
3.软件项目管理
软件项目管理是为了完成一个既定的软件
开发目标,在规定的时间内,通过特殊形 式的临时性组织运行机制,通过有效的计 划、组织、领导与控制,在明确的可利用 的资源范围内完成软件开发。 软件项目管理是一般化的现代工程项目管 理理论和方法在软件工程领域的特殊化。 软件项目管理的对象是软件项目。
软件信息域中的计数
(1) 用户输入数 (2) 用户输出数 (3) 用户查询数 (4) 文件数 (5) 外部接口数
软件复杂性估计的经验关 系式
10.2.4 面向特征点的度量
功能点度量本来是为了商用信息系统应用而设计 的。 特征点是对功能点度量的扩充,使这种度量可以 被用于系统和工程软件应用。特征点度量适合于 算法复杂性高的应用
软件工程
软件工程
软件工程
刘迎春
第10章软件项目管理
概述 10.2 软件度量 10.3 软件开发成本估算 10.4 进度安排 10.5 软件文档管理
计算机科学与技术专业课课件_软件工程SE_Chapter10
拥有银行账户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过 ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取 款),或查询有关自己账户的信息(例如,某个指定账户上的余额)。将 来可能还要求使用ATM办理转账、存款等事务。
2013-8-31
上海大学计算机学院
7
ATM系统的需求陈述
择事务类型(取款、查询等)。当用户选择取款时,ATM请求用户输 入取款额。最后,ATM从现金出口吐出现金,并且打印出账单交给用 户。
2013-8-31
上海大学计算机学院
8
建立对象模型
◆面向对象分析首要的工作,是建立问题域的对象 模型。 ◆对象模型描述了现实世界中的“类-&-对象”以 及它们之间的关系,表示了目标系统的静态数据 结构。
上海大学计算机学院
12
候选类—&—对象
银行,自动取款机(ATM),系统,中央计算机,分行计算机, 柜员终端,网络,总行,市,街道,分行,营业厅,储蓄所, 软件,成本,柜员,储户,现金,支票, 账户, 事务,现金兑 换卡,余额,磁卡,分行代码,卡号,副本,访问,用户,信息, 密码,类型,取款额,账单。
●找出所有候选的类-&-对象; ●筛选候选的类-&-对象。
2013-8-31
上海大学计算机学院
11
找出候选的类-&-对象
◆ 非正式分析方法
● 以用自然语言书写的需求陈述为依据,把陈述中的
1) 名词作为类-&-对象的候选者, 2) 形容词作为确定属性的线索, 3) 动词作为服务(操作)的候选者。
2013-8-31
去除冗余
银行,ATM,中央计算机,分行计算机,柜员终端,网络,总行, 市,街道,分行,营业厅,储蓄所,软件,成本,柜员,储户,现 金,支票, 账户,事务,现金兑换卡,余额,分行代码,卡号, 访问,信息, 密码,类型,取款额,账单,通信链路,事务 日志。
软件工程第十章形式化方法优秀课件
所谓集合,乃是有某些可以相互区分的如何对象, 如数、变量、函数、字母、数字、图、语言、程序、 事件等,或者没有任何对象,汇集在一起所组成的 整体。
➢ 例10--2:一个包含4个元素的自然数集合: {1,3,5,7}
➢ 例10--3:包含五种程序设计语言的名字的集合: {C ,C++, Pascal, Basic, FORTRAN }
形式化规约语言的语法域通常基于从标准集合 论符号和谓词演算导出的语法。
10.2有限状态机(FSM)
很多实时系统,特别是实时控制系统,其整个 分析机制与系统的状态有相当大的关系。有限 状态机由有限的状态和相互之间的转移构成, 在任何时候只能处于给定数目的状态中的一个。
当接收到一个输入事件时,状态机产生一个输 出,同时也可能伴随着状态的转移。主要有两 种方法来建立有限状态机,一种是"状态转移 图",另一种是"状态转移表",分别用图形方式 和表格方式建立有限状态机。
软件工程第十章形式化 方法
第十章 形式化方法
形式化方法提供了规约环境的基础,它使得所 生成的分析模型比用传统的或面向对象的方法 生成的模型更完整、一致和无二义性。集合论 和逻辑符号的描述设施使得我们可以创建清晰 的关于事实的陈述。
支配形式化方法的基本概念是:数据不变式、 状态、离散数学、序列相关联的符号体系、形 式化规约语言。
4.没有队列元素包含相同的块号。 5.已用块和未用块的集合将是组成文件的块的 总集。
6.在已用块集合中没有重复的块号。
10.1.4 形式化规约语言 形式化规约语言通常由三个主要的成分构成:
(1)语法,定义用于表示规约的特定符号; (2)语义,帮助定义用于描述系统的“对象的全 域(universe of objects)”; (3)一组关系,定义确定出哪个对象真正满足规 约的规则。
软件工程 第10章 软件开发环境
软件工程第10章软件开发环境在软件工程的领域中,软件开发环境是一个至关重要的概念。
它就像是一个为软件开发团队提供各种工具和资源的“大工具箱”,旨在提高开发效率、保证软件质量,并促进团队之间的协作。
软件开发环境并不仅仅是指一堆硬件设备和软件工具的简单组合,它涵盖了从开发过程中所使用的编程语言、编译器、调试器,到项目管理工具、版本控制系统,以及团队协作平台等多个方面。
一个良好的软件开发环境能够为开发者提供舒适、高效的工作空间,让他们能够将更多的精力集中在解决业务问题和实现软件功能上。
首先,让我们来谈谈编程语言和编译器。
不同的编程语言适用于不同的应用场景,比如 Python 在数据科学和机器学习领域表现出色,Java 在企业级应用开发中占据重要地位,C++则常用于对性能要求较高的系统编程。
而编译器则负责将开发者编写的源代码转换为可执行的机器代码。
一个优秀的编译器能够优化代码,提高程序的运行效率,同时还能提供丰富的错误提示和警告信息,帮助开发者及时发现和纠正代码中的问题。
调试器也是软件开发环境中不可或缺的一部分。
当程序出现错误时,调试器能够帮助开发者逐行执行代码,查看变量的值,设置断点,从而快速定位并解决问题。
现代的调试器通常具有强大的功能,如条件断点、内存查看、线程调试等,大大提高了调试的效率和准确性。
除了这些基础的工具,项目管理工具在软件开发中也起着举足轻重的作用。
它们可以帮助项目经理制定项目计划、分配任务、跟踪进度、评估风险等。
常见的项目管理工具如 Jira、Trello 等,提供了直观的界面和丰富的功能,使得团队成员能够清晰地了解项目的整体情况和自己的职责,有效地提高了项目的管理水平和执行效率。
版本控制系统则是保障软件开发过程中代码一致性和可追溯性的重要手段。
通过版本控制系统,开发者可以方便地对代码进行修改、提交、回滚等操作,同时还能够与团队成员共享代码,协同开发。
Git 作为目前最流行的版本控制系统之一,具有分布式、高效、灵活等优点,已经成为了软件开发领域的标配。
软件工程 第10章 面向对象的方法
第10章例题分析与解答作者:不详来源:2006年9月4日发表评论进入社区一、填空题1.面向对象方法认为系统是由应用域的___对象___组成。
2.对象具有状态,描述对象的状态用它的_属性值_____。
3.对象的抽象是_类_____。
4.类之间有两种结构关系,它们是分类关系和__组装____关系。
5.面向对象程序设计语言与其他程序设计语言的最主要差别是它具有_继承性_____。
6.动态模型描述了系统的__动态行为____。
二、选择题1.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是( D)关系。
A.组装B.整体成员C.has aD.一般具体2.面向对象分析阶段建立的三个模型中,核心的模型是( C )模型。
A.功能B.动态C.对象D.分析3.对象模型的描述工具是( C)。
A.状态图B.数据流图C.对象图D.结构图4.在有多重继承的类层次结构中,它的类层次结构是(B )层次结构。
A.树型B.网状型C.环型D.星型5.描述类中对象的行为,反映了状态与事件关系的是( B )。
A.对象图B.状态图C.流程图D.结构图6.在确定属性时,所有( C)是候选的属性。
A.动词B.名词C.修饰性名词词组D.词组三、应用题1.建立窗口系统的对象模型。
问题陈述如下:窗口分为对话窗、图形窗、滚动窗三种;对话窗中有若干对话项,由唯一的项名字来确定,对话项分为按钮、选择项、正文项三种,选择项中有若干对话项入口;图形窗中有若干形状元素,形状元素分为一维形状和二维形状,一维形状又分为直线、圆弧、折线;二维形状分为圆、椭圆、矩形、多边形,其中多边形和折线由若干有序顶点组成,正文窗是滚动窗的一种,而图形滚动窗既是一种图形窗又是一种滚动窗。
2.在学校教学管理系统中,学生查询成绩就是系统中的一次交互,请用状态图来描述这种查询的交互行为。
答案:一、填空题1.对象2.属性值3.类4.组装5.继承性6.动态行为二、选择题1.D2.C3.C4.B5.B6.C三、应用题1.2.第10章自测题及参考答案作者:不详来源:2006年9月1日发表评论进入社区一、名词解释1.对象2.类3.属性4.操作5.消息6.消息传递7.方法8.关系9.关联10.一般具体关系 11.整体部分关系12.继承13.单重继承 14.多重继承15.多态性 16.角色17.受限关联 18.封装19.对象模型20.动态模型21.功能模型 22.事件23.状态24.事件追踪25.状态图26.动作27.活动28.处理29.数据流30.动作对象31.数据存储对象 32.重用性二、填空题1.对象具有封装性,实现了__数据与操作____的结合。
第10章软件工程标准化及软件
软件工程标准化
1、软件工程功能标准框架
⑥数据:包括判定表规范、文档编制符号和约定、程序结构 和约定及其表示、计算机系统配置图符号和约定、软件状态转换 的人际通信的表示、基于计算机的应用系统的文档编制指南、软 件生存周期过程信息产品的内容指南、软件工程数据定义和交换 及高级Petri网等。
2、基于软件生存周期过程的软件工程路径框架
(11)开发进度月报
(6)详细设计说明书
(12)项目开发总结报告
(13)维护修改建议
软件文档
4、软件文档的编制要求
高质量的文档应当体现在以下几个方面: 准确、简明、完整、 灵活、有针对性、可追溯性。 为了能够编写出高质量的文档,应注意以下一些问题:
(1)应根据具体的软件开发项目,决定编制的文档种类。 (2)当所开发的软件系统非常大时,一种文档可以分成几卷编写。 (3)应根据任务的规模、复杂性,确定文档的详细程度。 (4)对国标中所建议的所有条款都可以扩展,以适应需要。 (5)程序的设计可采用多种表现形式。 (6) 文档的表现可以使用自然语言、也可以使用形式化的语言。 (7)当可以建立一些特殊的文档种类要求。
④技术:技术标准的框架以及相关国际标准如图10-7。包括 软件产品评价、软件过程评估、软件可信性、科技系统功能安全 的风险分析、功能人员和材料资源:包括TR15504-6:《软件过程评估第6 部分:评估员资格指南》和《计划中的对于知识软件工程体指南 的快速批准》。
(4) 质量保证标准(ISO9001~ISO9003)之间及其 与质量管理标准(ISO9004-1)的关系
①ISO9001、9002、9003质量保证标准之间的关系 从用途上看,它们各自独立,但它们内在有着紧密的关
系。ISO9003是最终检验和试验质量保证模式,含16项体系 要素,是三者中要求提供证据最少的质量保证模式; ISO9002是生产、安装和服务的质量保证模式,含19项体系 要素,ISO9002包容了ISO9003的要素;ISO9001是设计、 开发、生产、安装和服务的质量保证模式,含20项体系要 素,ISO9001包容了ISO9002的要素。
软件工程 第10章 软件开发环境
软件工程第10章软件开发环境在当今数字化的时代,软件已经成为了推动社会发展和变革的重要力量。
而软件开发环境则是软件工程师们施展才华、创造优秀软件产品的关键舞台。
软件开发环境是什么呢?简单来说,它是一组集成的工具、设施和流程,旨在支持软件开发的整个生命周期,从需求分析、设计、编码、测试到维护。
一个良好的软件开发环境能够极大地提高开发效率和软件质量。
想象一下,如果开发者们在一个混乱、缺乏有效工具和协作机制的环境中工作,就如同在黑暗中摸索,不仅进展缓慢,还容易出错。
而拥有了合适的开发环境,就像是有了明亮的灯塔指引,能够让开发工作更加顺畅、高效。
首先,软件开发环境包含了各种开发工具。
这些工具涵盖了多个方面,比如代码编辑器,它为开发者提供了一个舒适、便捷的编写代码的界面,具备语法高亮、自动补全等功能,帮助开发者更轻松地写出准确无误的代码。
还有版本控制系统,它能够记录代码的变更历史,让团队成员可以方便地协同工作,并且在出现问题时能够快速回滚到之前的稳定版本。
编译器和解释器也是必不可少的工具。
它们将开发者编写的源代码转换为可执行的程序,确保代码能够在目标平台上正确运行。
此外,调试工具能够帮助开发者找出代码中的错误和问题,提高程序的稳定性和可靠性。
除了工具,软件开发环境还包括了开发框架和库。
开发框架为软件开发提供了一种结构化的方式,规定了代码的组织方式、模块之间的交互方式等,使得开发者能够更快速地搭建起软件的架构。
库则是预先编写好的代码模块,提供了各种常见的功能,如数据处理、图形显示、网络通信等,开发者可以直接调用这些库,避免重复造轮子,从而节省开发时间。
软件开发环境中的集成开发环境(IDE)也是一个重要的组成部分。
IDE 通常将多种开发工具集成在一起,提供了一个统一的界面,让开发者能够在一个地方完成代码编写、调试、编译、版本控制等一系列操作。
常见的 IDE 有 Visual Studio、Eclipse、IntelliJ IDEA 等,它们都具有强大的功能和友好的用户界面,深受开发者的喜爱。
《软件工程与项目管理》第10章-软件项目管理
项目收尾过程
要点一
验收项目成果
组织相关干系人对项目成果进行验收,确保项目目标已实 现。
要点二
总结经验教训
对项目执行过程中的经验教训进行总结,为今后的项目提 供借鉴和改进依据。
04
软件项目管理工具与技术
项目管理软件工具
微软Project
Trello
一款功能强大的项目管理软件,提供 项目计划制定、任务分配、进度跟踪 等功能。
进度与Hale Waihona Puke 本的控制进度与成本控制挑战
软件开发过程中,进度延误和成本超 支是常见问题。
解决方案
制定详细的项目计划,合理分配资源 ,加强项目监控和调整,确保项目按 计划进行并控制成本。
质量保证与测试
质量保证与测试挑战
软件质量是软件项目的核心要求之一,但质量保证与测试过程中可能存在疏漏 和不足。
解决方案
Extreme Programming
一种敏捷开发方法,强调编程实践和持续集成,适合需求变化频繁 的项目。
统一过程方法
统一建模语言(UML)
一种用于软件工程的标准化建模语言,支持从需求分析 到系统设计的全过程。
统一过程(UP)
一种结构化的软件开发过程,包括初始阶段、细化阶段 、构建阶段和交付阶段。
保证按时交付
降低风险
通过有效的进度管理和时间安排,可以确 保软件按时交付给客户。
项目管理有助于识别和评估软件开发过程 中可能出现的风险,并采取相应的措施来 降低或消除这些风险。
软件项目管理的历史与发展
20世纪60年代
软件工程的概念开始出现, 人们开始意识到软件开发需 要系统化的管理方法。
20世纪80年代
预测完成项目所需的总成本。
计算机科学导论:第十章-软件工程
十软件工程软件工程是建立在这样一个基础上,即利用合理的工程方法和原则来获得在真实机器上工作的可靠软件10.1 软件的生命周期软件最初由开发者小组开发。
通常,在它需要修改之前会使用一段时间。
由于软件中会发现错误、设计改变规则或公司本身发生变化,这些都导致需要经常修改软件。
为长久使用考虑软件应该被修改。
使用和修改,这两个步骤一直进行下去直到软件过时。
“过时”意味着因效率低下、语言过时、用户需求的重大变化或其他因素而导致软件失去它的有效性。
开发过程模型开发过程包括4个阶段:分析、设计、实现和测试最常见的两种开发过程模型1.瀑布模型: 开发过程只有一个方向的流动,这意味着前一个阶段不结束,后一个阶段不能开始优缺点–优点:在下一个阶段开始前每个阶段已经完成–缺点:如果过程中一部分有问题,必须检查整个过程1.增量模型(迭代模型): 软件的开发要经历一系列步骤。
开发者首先完成整个系统的一个简化版本,这个版本表示了整个系统,但不包括具体的细节10.2 分析阶段整个开发过程始于分析阶段,这个阶段生成规格说明文档,这个文档说了软件要做什么,而没有说明如何去做分析阶段的两种独立方法•面向过程分析:依赖于实现阶段使用过程编程语言•面向对象分析:依赖于实现阶段使用面向对象编程语言面向过程分析如果实现阶段使用过程式语言,那么面向过程分析(也称为结构化分析或经典分析)就是分析阶段使用的方法。
这种情况下的规格说明有使用多种建模工具•数据流图: 数据流图显示了系统中数据的流动。
•实体关系图: 用于数据库设计•状态图: 它通常用于当系统中的实体状态在响应事件时将会改变的情况下面向对象分析如果实现阶段使用面向对象语言,那么面向对象分析就是分析阶段使用的方法。
规格说明文档至少使用下列几个工具,•用例图: 给出了系统的用户视图:它显示了用户与系统间的交互。
4种组件–系统、用例、动作者和关系。
•系统(用矩形表示)执行功能。
•系统中的行动由用例(圆角的矩形)显示•动作者(线条人物)是使用系统的某人或某事。
精品文档-软件技术基础(鲍有文)-第10章
第10章 面向对象软件工程
2) 建立对象之间的联系 各个对象在系统中并非独立存在,只有定义和描述了对象 类之间的关系,各个对象类才能构成一个完整的系统模型。 对象模型图中,对象及类间的关系主要有4种:一般/特殊 关系、整体/部分关系、实例关联和消息连接。
第10章 面向对象软件工程 (1) 一般/特殊关系。识别类之间的一般/特殊关系要考虑
第10章 面向对象软件工程
把众多的事物归纳并划分为不同的类是人类在认识客观世 界时经常采用的思维方法,分类的原则是抽象,从那些与当前 目标有关的本质特征中找出事物的共性,并将具有共同性质的 事物划分成一类,得出一个抽象的概念。例如,学生、教师、 学校等都是一些抽象的概念。类的概念使我们能对属于该类的 全部个体事物进行统一的描述,“学生具有学号、姓名、性别、 年龄,能够入学注册、选课等”,这个描述适合所有学生,而 不必对每一个具体的学生进行描述。
在一般/特殊关系中,可以将共同的属性放在上层,将特 有的属性放在下层,将共同的方法放在上层,而将特有的方法 放到下层,如图10-4所示。
第10章 面向对象软件工程 图 10-4 一般/特殊关系举例
第10章 面向对象软件工程
第10章 面向对象软件工程 2) 类 类(Class)是具有相同属性和服务的一组对象的集合,它
为属于该类的全部对象提供了统一的抽象描述,其内部包括属 性和服务两个主要部分。类好比是一个对象模板,用它可以产 生多个对象。类所代表的是一个抽象的概念或事物,在客观世 界中实际存在的是类的实例,即对象。例如,在学校教学管理 系统中,“学生”是一个类,其属性具有学号、姓名、 性别 等,可以完成的操作有“入学注册”、“ 选课”等。学生 “王平”是一个具体的对象, 也是“学生”类的一个实例。
917574-计算机软件技术基础-第10章 软件生命周期与软件工程过程2015
返回
5
• 软件工程以系统工程的方法制作软件产品,它包括: • • 软件的生存周期 • • 软件的需求分析 • • 软件的架构设计与开发 • • 软件的测试 • • 软件的交付及维护 • • 软件的质量保证
• 软件工程的提出,导致了对软件本质的研究。软件 不仅仅是可运行的程序系统,为了维护和适应市场 技术的发展,它必须有全套完整的文档,所以
• 有了软件规范和标准,软件工具才有市场。软件工具从最初 的编译器、连接器、加载运行的必备工具(现在已纳入操作系 统范畴)到测试排错工具、格式美化器,到当今可执行的规范 说明语言、模型—描述—代码自动生成工具等。以“软件开 发软件”的大量自动工具的出现,构成了良好的软件开发环 境(Environment),即开发和运行工具集的总称。这些集成工 具的互联和集成(在单一的界面上可以方便、灵活地使用这些 工具)及其支持的软、硬件就构成了软件开发平台(Flat)。
• RUP的核心工作流 RUP中有9个核心工作流,分为 6个核心工作流和3个核心支持工作流
商业建模
需求
分析和设计
实现
测试
部署
配置和变更管理
项目管理 环境
返回
21
• 构件组装模型
• 面向对象和基于构件包的软件要重用大量构件,这些 构件是适用于某个领域的(例如建筑、财经、商场、电 信等)。它将以前开发并使用良好的构件规范化之后放 入项目库。这类软件的开发过程当今也用螺旋模型, 只是把做工程和构造及发布合成一个步骤。风险分析 后,转入客户评价。步骤如下:
• 软件=程序+文档。
返回
6
• 10.2 软件生存周期
1.需求分析:把用户的需求编程对软件的需求是一 项十分重要的工作,做成需求文档。需求文档是 最后测试项目合格的依据。
《软件工程实用教程》第10章_软件工程标准与文档
第10章 軟體工程標準與文檔
10.2.4 軟體文檔的品質要求 (1)針對性 (2)精確性 (3)清晰性 (4)完整性 (5)靈活性 (6)可追溯性
第10章 軟體工程標準與文檔
本章學習內容: 1.掌握軟體工程標準的層次、類型 等概念 2.明確軟體文檔的編寫要求 3.熟悉軟體文檔的主要內容 4.理解軟體文檔的重要作用
第10章 軟體工程標準與文檔
10.1 軟體工程標準
10.1.1 軟體工程標準 專業基礎標準(軟體工程術語,流程圖,系統配置圖 軟體開發與文檔編制(軟體生存期過程,軟體生存期過 程使用指南,配置管理,維護) 軟體品質保證(軟體品質保證計畫,軟體品質特性,內 部度量,外部度量) 軟體產品評價(ISO/IEC 14598系列標準) 軟體過程評估(ISO/IEC 15504系列標準) 軟體品質體系與認證(ISO9000系列標準) 軟體能力評估(軟體能力成熟度模型,關鍵慣例,過程 剪裁和軟體能力成熟度模型,成熟度模型評估框架) CASE工具
第10章 軟體工程標準與文檔
10.1.2 軟體工程標準的層次 1.國際標準 2.國家標準 3.行業標準 4.企業規範 5.專案規範
第10章 軟體工程標準與文檔
10.1.3 軟體工程國家標準 GB/T16260-1996 資訊技術 軟體產品評價 品質特性 及其使用指南 GB/T17544-1998 資訊技術 軟體包 品質要求和測試 GB/T8567-1988 電腦軟體產品開發檔編制指南 GB/T9385-1988 電腦軟體需求說明編制指南 GB/T9386-1988 電腦軟體測試檔編制規範 GB/T11457-1995 軟體工程術語 GB/T12504-1990 電腦軟體品質保證計畫規範 GB/T12505-1990 電腦軟體配置管理計畫規範 GB/T13423-1992 工業控制用軟體評定準則 GB/T13502-1992 資訊處理 程式構造及其表示的約定 GB/T13702-1992 電腦軟體分類與代碼
软件工程管理
第十章 软件工程管理10.1 软件工程管理概述软件工程管理是对软件项目的开发管理,是对整个软件生存期的所有活动进行管理。
任何工程的成败,都与管理的好坏密切相关,软件工程更不例外。
尤其是软件产品的特殊性,软件工程的管理对于保证软件产品的质量具有极为重要的作用,是软件项目开发成功的关键。
由软件危机引出软件工程,这是计算机发展史上一个重大进展。
为了对付大型复杂的软件系统,必须采用传统的“分解”方法。
软件工程的分解是从横向(空间)和纵向(时间)两个方面进行的。
横向分解就是把一个大系统分解为若干小系统,一个小系统分解为若干个子系统,一个子系统分解为若干个模块,一个模块分解为若干过程。
纵向分解就是生存期,把软件开发分解为几个阶段,每个阶段有不同的任务、特点和方法。
为此,软件工程管理需要有相应的管理策略和技术。
随着软件的规模和复杂度的不断增大,开发人员的增加以及开发时间的增长,这些都增加了软件工程管理的难度,同时也突出了软件工程管理的必要性和重要性。
事实证明由管理失败造成的后果要比开发技术错误造成的后果更为严重。
很少由软件项目的实施进程能准确地符合预定目标、进度和预算的,这也就足以说明软件管理的重要。
例如:Windows 2000的开发是微软公司历史上最艰巨的任务,仅仅是核心部门的成员就有2500人,测试用的代码就有1000万行,测试中所用到的脚本程序就有6500种。
类似规模如此之大的软件系统,如果没有科学的、规范的、有效的管理,是不可能成功的。
因此软件工程管理是软件工程的重要研究内容之一。
10.1.1 软件管理的任务与目标为使软件项目开发成功,必须对软件开发项目的工作范围、可能遇到的风险、需要的资源、要实现的任务、经历的里程碑、花费的工作量,以及进度的安排等等做到心中有数。
而软件项目管理可以提供这些信息。
任何技术先进的大型项目的开发如果没有一套科学的管理方法和严格的组织领导,是不可能取得成功的。
即使在管理技术较成熟的发达国家中尚且如此,在我国管理技术不高、资金比较紧缺的情况下,大型软件项目开发的管理方法及技术就显得尤为重要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第10章 软件工程
(1) 不能准确估计软件开发的成本与进度; (2) 用户对“已完成的”软件系统经常不满意; (3) 软件产品质量往往靠不住; (4) 软件难以维护; (5) 软件无完整的文档,无法用以管理和控制软件的开发
和维护; (6) 软件费用急剧上升; (7) 软件生产效率低,供不应求。
第10章 软件工程
第10章 软件工程
② 技术可行性。对要求的功能、性能以及限制条 件进行分析,看是否能够做成一个可接受的系统。所考 虑的因素通常还应包括开发的风险,是否能够得到需要 的软件和硬件资源,以及一个熟练的有能力的开发队伍, 另外与系统开发有关的技术是否足以支持系统的研制。 技术可行性的估计,需要有经验的人员去完成。
第10章 软件工程
3.软件生存周期 软件生存周期的概念是从工业中产品生存周期的 概念借用过来的。一种产品从定货开始, 经过设计、制 造、调试、使用维护,直到该产品淘汰为止,这就是所 谓的产品生存周期。
第10章 软件工程
计划期 开发期 运行期
问题定义 项目说明
可行性研究 可行性分析报告
需求分析 需求说明书
③ 操作可行性。判断系统的操作方式在该用户组 织内是否可行。
程序是按既定算法,用某种计算机语言规定的指令或语句 编写的指令或语句的集合。软件是程序再加上程序实现和 维护程序时所必需的文档的总称。软件是程序和程序设计 发展到规模化和商品化后所逐渐形成的概念。
第10章 软件工程
随着计算机技术的迅速发展,计算机软件在计算 机系统中占有越来越重要的地位。在软件需求量迅速增 加,规模日益增长的情况下,计算机软件的开发和维护 过程中遇到了一系列严重问题。如软件开发的复杂度大 大上升,导致大型软件的开发费用经常超出预算,完成 时间也常常超期,同时,软件可靠性随规模的增长而下 降,质量保证也越来越困难,即产生了软件危机。软件 危机主要有以下几种表现:
第10章 软件工程
软件工程研究的对象是大型软件系统的开发过程, 它研究的内容是生产流程、各生产步骤的目的、任务、 方法、技术、工具、文档和产品规格。
软件是一种逻辑产品,与物质产品有很大差 别,它看不见,摸不着,具有无形性,是脑力劳动的结 晶。它以程序和文档形式存在,通过计算机来体现它的 作用,在研制过程中,能见度差,这给开发过程的管理 带来极大的困难,进度难以控制,质量难以保证。
第10章 软件工程
软件工程是一门交叉学科,涉及到计算机科 学、管理科学、工程学和数学。凡是计算机科学中的成 果均可用于软件工程,但计算机科学着重于理论研究, 如自动机理论、形式语言理论、编译原理、数据库原理、 操作系统原理、人工智能原理等,而软件工程着重于具 体软件系统的研制和建立。软件工程的理论、方法、技 术都是建立在计算机科学的基础上,它是用管理学的原 理、方法来进行软件生产管理;用工程学的观点来进行 费用估算,制定进度和方案;用数学的方法来建立软件 可靠性模型以及分析各种算法和性质。
第10章 软件工程
2.可行性研究 1) 可行性研究的任务 可行性研究的目的在于用最小的代价确定在问题 定义阶段确定的系统目标和规模是否现实,所确定的问 题是否可以解决,系统方案在经济上、技术上和操作上 是否可以接受。 可行性研究着重考虑以下几个方面: ① 经济可行性。估计开发费用以及新系统可能 带来的收益,将两者进行权衡,看结果是否可以接受。
第10章 软件工程
第10章 软件工程
10.1 软件工程概述 10.2 问题定义与可行性研究 10.3 软件的需求分析 10.4 软件的设计 10.5 软件的编程 10.6 软件的测试 10.7 软件的维护 习题
第10章 软件工程
10.1 软件工程概述
1.软件与软件危机 软件是由计算机程序演变而形成的一种概可行性研究
1.问题定义 问题定义阶段的任务是要确定软件系统所要 解决的任务。分析人员在与用户和部门负责人交流之后, 应提出关于问题性质、工程目标和规模的书面报告,即 软件系统目标与范围的说明。 为了成功地完成问题定义阶段的任务,需要硬件 人员和软件人员的共同参与,这一阶段是软件生存周期 中较短的阶段。
设计 设计说明书
编码 程序
测试 测试报告
维护
图10-1 瀑布模型
第10章 软件工程
软件生存周期是从用户提出开发要求开始,直到 该软件报废为止的这段时间,可分为3个时期:计划期、 开发期和运行期。计划期又分为问题定义和可行性研究 两个阶段;开发期分为4个阶段:需求分析阶段、设计阶 段(总体设计、详细设计)、编码阶段和测试阶段;运行 期即维护阶段。各阶段的工作按顺序开展,图10-1是这 种软件生存周期的模型示意图,由于其形状似多级瀑布, 常称为“瀑布模型”。
2.软件工程
“ 软 件 工 程 ” 一 词 是 1968 年 北 大 西 洋 公 约 组 织 (NATO)在联邦德国召开的一次会议上首次提出的。它的 中心思想是把软件当作一种工业产品,而不是某种个体 或小作坊的神秘技巧,要求“采用工程化的原理与方法 对软件进行计划、开发和维护”。这样做的目的,不仅 是为了实现按预期的速度和经费完成软件生产计划,也 是为了提高软件的生产率与可靠性。软件工程是从技术 (方法和工具)和管理两方面研究如何更好地开发和维护 计算机软件的一门新兴学科。
第10章 软件工程
因此,软件生产的管理也是软件工程的一个重要 研究领域,大型软件开发过程的管理是一件非常复杂的 事情,因此,管理不当也会导致软件开发的失败。软件 生产的管理包括开发人员的层次结构和组织方式、开发 进度的控制、软件质量的保证、开发费用的估算和管理、 软件开发文档的管理等。
第10章 软件工程