软件工程与实践第10章

合集下载

《软件工程》第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章面向对象分析

软件工程导论第10章面向对象分析

易于理解,同时减少了代码冗余和重复,提高了开发效率和代码质量。
03
提高软件的可重用性
面向对象分析鼓励使用抽象和封装技术,使得软件组件更加模块化和可
重用,减少了重复开发的工作量,提高了软件开发的效率。
02
面向对象分析的主要步骤
问题识别
总结词
明确问题的本质和范围
详细描述
在面向对象分析中,问题识别是首要步骤,它要求对问题进行深入理解和明确, 包括确定问题的范围、目标、限制条件等,以便为后续的分析和设计工作提供 清晰的方向。
面向对象分析的优势与不足
过度抽象
面向对象分析有时会过度抽象,导致 系统过于复杂,难以理解和实现。
缺乏对系统流程的关注
面向对象分析更关注静态结构,可能 忽略系统流程和动态行为。
面向对象分析与传统分析方法的结合使用
在实际软件开发中,可以结合 面向对象分析和传统分析方法, 取长补短,提高软件开发的效
率和成功率。
05
面向对象分析与传统分析方法的 比较
传统分析方法的问题与挑战
缺乏对系统整体结构的考虑
传统分析方法往往只关注单个功能或模块,忽略了系统整体的结 构和关系。
难以处理复杂系统
对于复杂系统,传统分析方法难以有效地进行抽象和建模。
难以维护和扩展
由于缺乏整体结构和面向对象的思维,传统分析方法构建的系统往 往难以维护和扩展。
对象是指系统中具有明确边界和状态 的结构,它可以包含数据和操作,并 且具有封装性、继承性和多态性等特 征。
面向对象的基本特征
封装
封装是将对象的属性和操作封装 在一起,形成一个独立的实体, 对外隐藏内部实现细节,只通过 接口与外界交互。
继承
继承是指子类可以继承父类的属 性和方法,并且可以扩展或修改 它们,从而实现代码的重用和扩 展。

[软件工程]CH10

[软件工程]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

计算机科学与技术专业课课件_软件工程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,中央计算机,分行计算机,柜员终端,网络,总行, 市,街道,分行,营业厅,储蓄所,软件,成本,柜员,储户,现 金,支票, 账户,事务,现金兑换卡,余额,分行代码,卡号, 访问,信息, 密码,类型,取款额,账单,通信链路,事务 日志。

软件工程:理论与实践(第2版)

软件工程:理论与实践(第2版)

读书笔记
如果是初学者,不建议阅读此书,干巴巴得容易让人丧失兴趣,建议阅读《构建之法》。
目录分析
第1章软件与软 件工程
第2章软件过程
1.1软件 1.2软件危机 1.3软件工程 1.4软件开发方法 1.5软件工程工具 1.6 “小型网上书店系统”案例介绍 习题
2.1软件过程概述 2.2软件生命周期 2.3软件开发模型 2.4软件开发模型实例 习题
软件工程:理论与实践(第2 版)
读书笔记模板
01 思维导图
03 读书笔记 05 作者介绍
目录
02 内容摘要 04 目录分析 06 精彩摘录
思维导图
本书关键字分析思维导图
第版
内容
第章
面向对象
过程
实例
面向对象
软件
软件
工程 软件
案例
理论
习题
过程
系统
实验
ห้องสมุดไป่ตู้
书店
工程
内容摘要
本书按照典型的软件开发过程来组织内容,旨在培养读者具备软件工程思想及实际软件开发的能力。本书共 分为12章,内容涉及软件与软件工程、软件过程、可行性研究与项目开发计划、结构化分析、结构化设计、面向 对象方法与UML、面向对象分析、软件体系结构与设计模式、面向对象设计、软件实现、软件测试、软件维护与 软件工程管理。本书理论与实践相结合,内容翔实,可操作性强。本书是高等院校计算机科学、软件工程及相关 专业“软件工程”课程的理想教材。
第6部分软件维护与软件工程管 理
12.1软件维护 12.2软件估算 12.3软件开发进度计划 12.4软件开发人员组织 12.5软件开发风险管理 12.6软件质量保证 12.7软件配置管理概述 12.8软件工程标准与软件文档 12.9软件过程能力成熟度模型

第1-10章课件-软件工程与实践(第3版)-贾铁军-清华大学出版社

第1-10章课件-软件工程与实践(第3版)-贾铁军-清华大学出版社

第1章二维码内容[第1页]教学课件第1章课件资源(出版社指定的网址)知识拓展:软件危机的产生20 世纪60年代以前,计算机投入实际使用初期,软件设计只是为了某个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件常等同于编制程序,基本上是单人设计、使用、操作、私人化的软件生产方式。

60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长。

高级语言开始出现,操作系统的发展引起了计算机应用方式的变化,大量数据处理导致第一代数据库管理系统的诞生。

软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。

原来的个人设计及使用的方式不再能满足要求,迫切需要改变软件规范的研发生产方式,提高软件生产率,软件危机开始爆发。

[第2页]知识拓展:软件危机产生的过程20世纪60年代出现的软件危机直接导致软件工程的产生。

当时出现的软件危机致使所研发软件的功能、性能和可靠性等细节难以保障、研发进度无法把握、成本增长难以控制、研发人员不断增加、软件运行维护和管理方面的工作量不断增大等问题。

软件开发过程涉及多个方面,是一项高度集成的脑力劳动。

软件开发初期的“生产作坊式”模式和技术已根本无法适应软件快速发展的实际需要,致使大量质量低劣的软件产品投入运行且管理维护不当故障频发,一些开发过程中的大型软件系统遇到了许多不标准规范等问题,有些软件研发比原计划推迟了多年,或费用大大超出预算,有的系统不能符合用户预期,有的无法进行修改更新和维护,有些研发甚至半途而废无法继续。

[第2页]知识拓展:软件工程术语的由来1968年北大西洋公约组织(NATO)在联邦德国召开的一次会议上首次提出的“软件工程”术语,并专门讨论了软件危机问题。

从此将软件开发纳入了工程化的轨道,基本形成了软件工程的概念、框架、技术和方法。

软件工程 第10章 软件开发环境

软件工程  第10章  软件开发环境

软件工程第10章软件开发环境在软件工程的领域中,软件开发环境是一个至关重要的概念。

它就像是一个为软件开发团队提供各种工具和资源的“大工具箱”,旨在提高开发效率、保证软件质量,并促进团队之间的协作。

软件开发环境并不仅仅是指一堆硬件设备和软件工具的简单组合,它涵盖了从开发过程中所使用的编程语言、编译器、调试器,到项目管理工具、版本控制系统,以及团队协作平台等多个方面。

一个良好的软件开发环境能够为开发者提供舒适、高效的工作空间,让他们能够将更多的精力集中在解决业务问题和实现软件功能上。

首先,让我们来谈谈编程语言和编译器。

不同的编程语言适用于不同的应用场景,比如 Python 在数据科学和机器学习领域表现出色,Java 在企业级应用开发中占据重要地位,C++则常用于对性能要求较高的系统编程。

而编译器则负责将开发者编写的源代码转换为可执行的机器代码。

一个优秀的编译器能够优化代码,提高程序的运行效率,同时还能提供丰富的错误提示和警告信息,帮助开发者及时发现和纠正代码中的问题。

调试器也是软件开发环境中不可或缺的一部分。

当程序出现错误时,调试器能够帮助开发者逐行执行代码,查看变量的值,设置断点,从而快速定位并解决问题。

现代的调试器通常具有强大的功能,如条件断点、内存查看、线程调试等,大大提高了调试的效率和准确性。

除了这些基础的工具,项目管理工具在软件开发中也起着举足轻重的作用。

它们可以帮助项目经理制定项目计划、分配任务、跟踪进度、评估风险等。

常见的项目管理工具如 Jira、Trello 等,提供了直观的界面和丰富的功能,使得团队成员能够清晰地了解项目的整体情况和自己的职责,有效地提高了项目的管理水平和执行效率。

版本控制系统则是保障软件开发过程中代码一致性和可追溯性的重要手段。

通过版本控制系统,开发者可以方便地对代码进行修改、提交、回滚等操作,同时还能够与团队成员共享代码,协同开发。

Git 作为目前最流行的版本控制系统之一,具有分布式、高效、灵活等优点,已经成为了软件开发领域的标配。

软件工程 第10章 面向对象的方法

软件工程 第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章软件工程标准化及软件

第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的要素。

软件工程方法与实践知到章节答案智慧树2023年昆明理工大学

软件工程方法与实践知到章节答案智慧树2023年昆明理工大学

软件工程方法与实践知到章节测试答案智慧树2023年最新昆明理工大学第一章测试1.软件产品与物质产品有很大区别,软件产品是一种()产品。

参考答案:逻辑2.软件会逐渐退化而不会磨损,其原因在于()。

参考答案:不断的变更使组件接口之间引起错误3.软件工程要解决的问题是()。

参考答案:以上都是4.软件工程的基本要素包括方法、工具和()。

参考答案:过程5.软件一般包括以下()部分。

参考答案:文档;数据;程序;规程第二章测试1.基于计算机系统的元素包括软件、硬件、人员、数据库、文档和()。

参考答案:规程2.基于计算机的系统本身可以成为一个更大的基于计算机系统中的一个()。

参考答案:元素3.经济可行性分析中的效益包括经济效益和()效益。

参考答案:社会4.在基于计算机系统的元素中,硬件包括()。

参考答案:提供外部世界功能的电子机械设备(如传感器、马达等);提供计算能力的电子设备;支持数据流的互连设备(如网络交换器、电信设备)5.系统工程的任务包括()。

参考答案:可行性分析;识别用户的要求;系统建模和模拟;成本估算及进度安排第三章测试1.在软件生存周期中,()阶段主要任务是“弄清楚要做什么?”。

参考答案:需求分析2.通常将软件生命周期划分为系统工程、需求分析、软件设计、编码实现、软件测试、运行维护等阶段,每个阶段都有各自侧重的任务和目标,以下不属于需求分析阶段的任务是()。

参考答案:弄清楚怎么做,规划系统体系结构3.需求规格说明描述了()。

参考答案:计算机系统的功能、性能及其约束4.常用的需求分析方法包括()。

参考答案:面向对象的分析方法;面向数据结构的分析方法;面向数据流的结构化分析方法5.软件需求规格说明SRS的作用包括()。

参考答案:用于规划和控制系统的开发过程;成为用户、分析人员和设计人员之间进行理解和交流的手段;支持系统测试活动第四章测试1.软件设计是将软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息,传送给设计阶段,产生数据/类设计、体系结构设计、()、部件级设计。

软件工程 第10章 软件开发环境

软件工程  第10章  软件开发环境

软件工程第10章软件开发环境在当今数字化的时代,软件已经成为了推动社会发展和变革的重要力量。

而软件开发环境则是软件工程师们施展才华、创造优秀软件产品的关键舞台。

软件开发环境是什么呢?简单来说,它是一组集成的工具、设施和流程,旨在支持软件开发的整个生命周期,从需求分析、设计、编码、测试到维护。

一个良好的软件开发环境能够极大地提高开发效率和软件质量。

想象一下,如果开发者们在一个混乱、缺乏有效工具和协作机制的环境中工作,就如同在黑暗中摸索,不仅进展缓慢,还容易出错。

而拥有了合适的开发环境,就像是有了明亮的灯塔指引,能够让开发工作更加顺畅、高效。

首先,软件开发环境包含了各种开发工具。

这些工具涵盖了多个方面,比如代码编辑器,它为开发者提供了一个舒适、便捷的编写代码的界面,具备语法高亮、自动补全等功能,帮助开发者更轻松地写出准确无误的代码。

还有版本控制系统,它能够记录代码的变更历史,让团队成员可以方便地协同工作,并且在出现问题时能够快速回滚到之前的稳定版本。

编译器和解释器也是必不可少的工具。

它们将开发者编写的源代码转换为可执行的程序,确保代码能够在目标平台上正确运行。

此外,调试工具能够帮助开发者找出代码中的错误和问题,提高程序的稳定性和可靠性。

除了工具,软件开发环境还包括了开发框架和库。

开发框架为软件开发提供了一种结构化的方式,规定了代码的组织方式、模块之间的交互方式等,使得开发者能够更快速地搭建起软件的架构。

库则是预先编写好的代码模块,提供了各种常见的功能,如数据处理、图形显示、网络通信等,开发者可以直接调用这些库,避免重复造轮子,从而节省开发时间。

软件开发环境中的集成开发环境(IDE)也是一个重要的组成部分。

IDE 通常将多种开发工具集成在一起,提供了一个统一的界面,让开发者能够在一个地方完成代码编写、调试、编译、版本控制等一系列操作。

常见的 IDE 有 Visual Studio、Eclipse、IntelliJ IDEA 等,它们都具有强大的功能和友好的用户界面,深受开发者的喜爱。

《软件工程与项目管理》第10章-软件项目管理

《软件工程与项目管理》第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章_软件工程标准与文档
技術術語的使用應該適當控制,避免濫用; 使用技術術語前要準確定義每個術語; 每種文檔均應該有一個辭彙表和索引。
第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 電腦軟體分類與代碼
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

可以使用两种方式建立继承(即泛化)关系: (1) 自底向上: 抽象出现有类的共同性质泛化出父 类,这个过程实质上模拟了人类归纳思维过程。 (2) 自顶向下: 把现有类细化成更具体的子类,这 模拟了人类的演绎思维过程。。 利用多重继承可以提高共享程度,但是同时也 增加了概念上以及实现时的复杂程度。使用多 重继承机制时,通常应该指定一个主要父类, 从它继承大部分属性和行为;次要父类只补充 一些属性和行为。
图10.2 ATM系统
银行柜员使用柜员终端处理储户提交的储蓄事务。 储户可以用现金或支票向自己拥有的某个账户内存 款或开新账户。储户也可以从自己的账户中取款。 通常,一个储户可能拥有多个账户。柜员负责把储 户提交的存款或取款事务输进柜员终端,接收储户 交来的现金或支票,或付给储户现金。柜员终端与 相应的分行计算机通信,分行计算机具体处理针对 某个账户的事务并且维护账户。
在概念上可以认为,面向对象分析大体上按照下列 顺序进行:寻找类与对象,识别结构,识别主题, 定义属性,建立动态模型,建立功能模型,定义服 务。大型、复杂系统的模型需要反复构造多遍才能 建成。 大多数需求陈述都缺乏必要的信息,所缺少的信息 主要从用户和领域专家那里获取,同时也需要从分 析员对问题域的背景知识中提取。
10.3.6 反复修改
仅仅经过一次建模过程很难得到完全正确的对象模 型。事实上,软件开发过程就是一个多次反复修改、 逐步完善的过程。
1. 分解“现金兑换卡”类 实际上,“现金兑换卡”有两个相对独立的功能, 它既是鉴别储户使用ATM的权限的卡,又是ATM 获得分行代码和卡号等数据的数据载体。因此,把 “现金兑换卡”类分解为“卡权限”和“现金兑换 卡”两个类,将使每个类的功能更单一。 2. “事务”由“更新”组成 通常,一个事务包含对账户的若干次更新,这里所 说的更新,指的是对账户所做的一个动作(取款、 存款或查询)。“更新”虽然代表一个动作,但是 它有自己的属性(类型、金额等),应该独立存在, 因此应该把它作为类。
有一种更简单的分析方法,即所谓的非正式分析。 这种分析方法以用自然语言书写的需求陈述为依据, 把陈述中的名词作为类与对象的候选者,用形容词 作为确定属性的线索,把动词作为服务(操作)的候 选者。通常,非正式分析是更详细、更精确的正式 的面向对象分析的一个很好的开端。
银行,自动取款机(ATM),系统,中央计算机,分 行计算机,柜员终端,网络,总行,分行,软件, 成本,市,街道,营业厅,储蓄所,柜员,储户, 现金,支票,账户,事务,现金兑换卡,余额,磁 卡,分行代码,卡号,用户,副本,信息,密码, 类型,取款额,账单,访问。 分析员应该根据领域知识或常识进一步把隐含的类 与对象提取出来。例如,在ATM系统的需求陈述 中虽然没写“通信链路”和“事务日志”,但是, 根据领域知识和常识可以知道,在ATM系统中应 该包含这两个实体。
(5) 派生关联 “分行计算机维护账户”的实际含义是“分行保管账 户”和“事务修改账户”。 3. 进一步完善 应该进一步完善经筛选后余下的关联,通常从下述 几个方面进行改进: (1) 正名 “分行提供分行计算机和柜员终端” (2) 分解 “事务” (3) 补充 “柜员输入柜员事务”、“柜员事务输进柜 员终端” (4) 标明重数
10.3.1 确定类与对象
系统分析员主要任务就是通过分析找出有用的类与 对象。首先找出所有候选的类与对象,然后从候选 的类与对象中筛选掉不正确的或不必要的。 1. 找出候选的类与对象 对象是对问题域中有意义的事物的抽象,它们既可 能是物理实体,也可能是抽象概念。 (1) 可感知的物理实体 (2) 人或组织的角色 (3) 应该记忆的事件 (4) 两个或多个对象的相互作用 (5) 需要说明的概念
图10.3 ATM系统原始的类图
10.3.3 划分主题
在开发大型、复杂系统的过程中,为了降低复杂程 度,人们习惯于把系统再进一步划分成几个不同的 主题,也就是在概念上把系统包含的内容分解成若 干个范畴。 应该按问题领域而不是用功能分解方法来确定主题。 此外,应该按照使不同主题内的对象相互间依赖和 交互最少的原则来确定主题。 以ATM系统为例,可以把它划分成总行(包含总 行和中央计算机这两个类)、分行(包含分行、分 行计算机、柜员终端、柜员事务、柜员和账户等类) 和ATM(包含ATM、远程事务、现金兑换卡和储 户等类)等3个主题。
10.3.2 确定关联
多数人习惯于在初步分析确定了问题域中的类与对 象之后,接下来就分析确定类与对象之间存在的关 联关系。 分析确定关联,能促使分析员考虑问题域的边缘情 况,有助于发现那些尚未被发现的类与对象。
1. 初步确定关联 (1) 直接提取动词短语得出的关联 总行拥有多台ATM。 分行提供分行计算机和柜员终端。 柜员终端设在分行营业厅及储蓄所内。 (2) 需求陈述中隐含的关联 总行由各个分行组成。 分行保管账户。 总行拥有中央计算机。 (3) 根据问题域知识得出的关联 现金兑换卡访问账户。 分行雇用柜员。
2. 筛选 筛选时主要根据下述标准删除候选的关联: (1) 已删去的类之间的关联 (2) 与问题无关的或应在实现阶段考虑的关联 “系统处理并发的访问” (3) 瞬时事件 “ATM读现金兑换卡” “中央计算机确定事务与分行的对应关系” (4) 三元关联 三个或三个以上对象之间的关联,大多可以分解为 二元关联或用词组描述成限定的关联。 “柜员输入针对账户的事务”
10.3.4 确定属性
属性是对象的性质,藉助于属性我们能对类与对象 和结构有更深入更具体的认识。一般说来,确定属 性的过程包括分析和选择两个步骤。
1. 分析 不可能在需求陈述中找到所有属性,分析员还必须 藉助于领域知识和常识才能分析得出需要的属性。 属性对问题域的基本结构影响很小。随着时间的推 移,问题域中的类始终保持稳定,属性却可能改变 了,相应地,类中方法的复杂程度也将改变。 应该仅考虑与具体应用直接相关的属性,不要考虑 那些超出所要解决的问题范围的属性。在分析过程 中应该首先找出最重要的属性,以后再逐渐把其余 属性增添进去。在分析阶段不要考虑那些纯粹用于 实现的属性。
第10章 面向对象分析
10.1 10.2 10.3 10.4 10.5 10.6 10.7
面向对象分析的基本过程 需求陈述 建立对象模型 建立动态模型 建立功能模型 定义服务 小结
在面向对象分析中过程得出的最重要的文档资料是 软件需求规格说明,主要由对象模型、动态模型和 功能模型组成。 需求分析过程是系统分析员与用户及领域专家反复 交流和多次修正的过程。也就是说,理解和验证的 过程通常交替进行,反复迭代,而且往往需要利用 原型系统作为辅助工具。 面向对象分析(OOA)的关键是识别出问题域内的类 与对象,并分析它们相互间的关系,最终建立起问 题域的简洁、精确、可理解的正确模型。 在用面向对象观点建立起的3种模型中,对象模型 是最基本、最重要、最核心的。
系统分析员必须与用户及领域专家密切配合协同工 作,共同提炼和整理用户需求。在这个过程中,很 可能需要快速建立起原型系统,以便与用户更有效 地交流,这个过程也是反复迭代的。 面向对象分析的目的,就是全面深入地理解问题域 和用户的真实需求,建立起问题域的精确模型。
10.2.2 例子
某银行拟开发一个自动取款机系统,它是一个由自 动取款机、中央计算机、分行计算机及柜员终端组 成的网络系统。ATM和中央计算机由总行投资购 买。总行拥有多台ATM,分别设在全市各主要街 道上。分行负责提供分行计算机和柜员终端。柜员 终端设在分行营业厅及分行下属的各个储蓄所内。 该系统的软件开发成本由各个分行分摊。
10.1 面向对象分析的基本过程
10.1.1 概述
面向对象分析,就是抽取和整理用户需求并建立问 题域精确模型的过程。 面向对象分析过程从分析陈述用户需求的文件开始。 接下来,系统分析员应该深入理解用户需求,抽象 出目标系统的本质属性,并用模型准确地表示出来。
在面向对象建模的过程中,系统分析员必须认真向 领域专家学习。 在面向对象建模的过程中,还应该仔细研究以前针 对相同的或类似的问题域进行面向对象分析所得到 的结果。
3. 把“分行”与“分行计算机”合并 区分“分行”与“分行计算机”,对于分析这个系 统来说,并没有多大意义,为简单起见,应该把它 们合并。类似地,应该合并“总行”和“中央计算 机”。
拥有银行账户的储户有权申请领取现金兑换卡。使 用现金兑换卡可以通过ATM访问自己的账户。目 前仅限于用现金兑换卡在ATM上提取现金(即取款), 或查询有关自己账户的信息(例如,某个指定账户 上的余额)。将来可能还要求使用ATM办理转账、 存款等事务。
10.3 建立对象模型
面向对象分析的首要工作是建立问题域的对象模型。 需求陈述、应用领域的专业知识以及关于客观世界 的常识,是建立对象模型时的主要信息来源。 典型的工作步骤是: 首先确定对象类和关联(因为它 们影响系统整体结构和解决问题的方法),对于大型 复杂问题还要进一步划分出若干个主题;然后给类 和关联增添属性,以进一步描述它们;接下来利用 适当的继承关系进一步合并和组织类。而对类中操 作的最后确定,则需等到建立了动态模型和功能模 型之后,因为这两个子模型更准确地描述了对类中 提供的服务的需求。
2. 选择 认真考察经初步分析而确定下来的那些属性,从中 删掉不正确的或不必要的属性。 (1) 误把对象当作属性 (2) 误把关联类的属性当作一般对象的属性 (3) 把限定误当成属性 (4) 误把内部状态当成了属性 (5) 过于细化 (6) 存在不一致的属性
10.3.5 识别继承关系
确定了类中应该定义的属性之后,就可以利用继承 机制共享公共性质,并对系统中众多的类加以组织。 通常,许多归纳关系都是根据客观世界现有的分类 模式建立起来的,只要可能,就应该使用现有的概 念。
10.2 需求陈述
10.2.1 书写要点
通常,需求陈述的内容包括:问题范围,功能需求, 性能需求,应用环境及假设条件等。 应该避免对设计策略施加过多的约束,也不要描述 系统的内部结构。 对系统性能及系统与外界环境交互协议的描述,开 发标准、可维护性的要求都是合适的需求。 书写需求陈述时,要尽力做到语法正确,描述清楚。 系统分析员必须把需求与实现策略区分开。
相关文档
最新文档