任务1 选择软件开发模 型 .能力目标 能够针对具体软件开发项目选择合适的开发模型。 能够熟练说出软件生命周期的各个阶段。 .知识目标 掌握与软件工程相关的基本概念。 了解软件危机产生的原因、表现形式和解决途径。 掌握软件工程的基本目标和原则。 掌握软件生命周期各个阶段的主要活动。 理解典型的软件开发过程模型。 领会软件工程的核心思想和意义。 任务导入 在信息社会中,需要大量高质量的计算机软件来进行信息的获取、处理、交换和供人 们做出决策。人们对计算机软件的种类、数量、功能、质量、成本、开发时间和软件资源共 享等提出越来越高的要求,并越来越重视软件、软件开发及运行环境的标准化。20 世纪 60 年代发生的软件危机(softwarecrisis)促使了“软件工程”这个概念的诞生。人们开始 重视软件开发方法、工具和环境的研究,并在这些领域取得了重要成果。 如何以较低的成本开发出高质量的、满足用户需求的、易于维护的软件,如何延长软 件的使用时间,这些都是软件工程学研究的问题。软件工程学是指导计算机软件开发和 维护的工程学科。 任务清单 () 对软件的认知。 () 对软件危机的认知。 () 对软件工程的认知。 () 对软件生命周期的认知。 () 对软件开发模型的认知。 () 对计算机辅助软件工程的认知。 软件工程与UML项目化实用教程(第3版) 1 对软件的认知 1. 1.软件的概念和特点 1.1 软件(software)是指使计算机运行所需的程序、数据和有关文档的总和。 1.软件包括的内容 软件包括以下三方面内容。 (1)能够完成预定功能和性能的程序。 (2)运行程序需要的数据。 (3)描述程序功能、使用和维护的各种文档 。 提示 : (1)软件产品的构成包括程序代码,开发、使用和维护程序所配套的文档。对于软件 的概念要完整理解。 (2)“程序”不是软件的全部,与程序相关的文档是软件不可缺少的组成部分。文档 是与软件开发、使用和维护相关的图文资料。软件是一种特殊产品,搞清楚软件开发与一 般产品制作过程的区别,对深入了解软件工程方法中蕴含的软件工程思想非常重要。 2.软件具有的特点 (1)软件是逻辑产品,具有无形性的特点,通过计算机的执行才能体现它的功能和 作用。 (2)软件只会退化,不存在磨损和消耗问题。 (3)软件的成本主要体现在开发和研制上,可进行大量的复制。 (4)软件主要靠脑力劳动生产,开发和维护成本高。 1.2 软件的分类 1. 按照不同的原则和标准,可将软件划分为不同的种类。 1.根据软件的功能进行分类 根据软件的功能可将软件划分为系统软件和应用软件两大类。 (1)系统软件。系统软件泛指为了有效地使用计算机系统、给应用软件开发与运行 提供支持,或者能为用户管理与使用计算机提供方便的一类软件。如基本输入/输出系统 (BIOS )、操作系统(如Windows)、程序设计语言处理系统(如C语言编译器)、数据库管 理系统(如Oracle、Aces)、常用的实用程序(如磁盘清理程序、备份程序)等都是系统 软件。 任务1 选择软件开发模型 系统软件的主要特征:它与计算机硬件有很强的交互性,能对硬件资源进行统一的 控制、调度和管理。系统软件有一定的通用性,它并不是专为解决某个具体应用而开发 的。在通用计算机系统中,系统软件是必不可少的。 (2)应用软件。应用软件泛指专门用于解决各种具体应用问题的软件。由于计算机 的通用性和应用的广泛性,应用软件比系统软件更丰富多样。 按照开发方式和适用范围,应用软件可再分成通用应用软件和定制应用软件两 大类。 ① 通用应用软件。不论是学习、工作、娱乐,人们都需要阅读、书写、通信和查找信 息,而这些活动都有相应的软件为我们提供更方便、更有效的操作。这样的软件称为通用 应用软件。 通用应用软件分为若干类,如办公软件、信息检索软件、游戏软件、媒体播放软件、网 络通信软件、绘图软件等。这些软件设计精巧、易学易用,多数用户几乎不经培训就能使 用。在普及计算机应用的进程中,它们起到了很大的作用。 ② 定制应用软件。定制应用软件是按照不同领域用户的特定应用要求而专门设计 开发的软件,如超市的销售管理系统、大学教务管理系统、酒店客房管理系统等。这类软 件专用性强,设计和开发成本相对较高,只有一些机构用户需要购买。 提示:由于应用软件是在系统软件的基础上开发和运行的,而系统软件又有多种 , 果每种应用软件都要提供能在不同系统上运行的版本,将导致开发成本大大增加。目前,(如) 有一类称为“中间件”(middleware)的软件,它们作为应用软件与各种系统软件之间使用 的标准化编程接口和协议,可以起到承上启下的作用,使应用软件的开发相对独立于计算 机硬件和操作系统,并能在不同的系统上运行,实现相同的应用功能。 2.根据软件的权益进行分类 根据软件的权益进行分类,软件可分为商品软件(productsoftware)、共享软件 (saer和自由软件(rr hrwae) fewae)。 (1)商品软件。用户需要付费才能得到其使用权。它除了受版权保护外,通常还受 软件许可证的保护。软件许可证是一种法律合同,它确定了用户对软件的使用方式,扩大 了《中华人民共和国著作权法》给予用户的权利。例如,《中华人民共和国著作权法》规定 将一个软件复制到其他机器去使用是非法的,但软件许可证允许用户将购买的软件安装 在本单位的若干台计算机上使用,或者允许所安装的软件同时被若干个用户使用。 (2)共享软件。这是一种“买前免费试用”的具有版权的软件,它通常允许用户试用 一段时间,也允许用户进行复制和散发。但过了试用期若还想继续使用,需要缴纳注册 费,成为注册用户。 (3)自由软件。用户可共享自由软件,允许随意复制、修改其源代码,允许销售和自 由传播。但对软件源代码的任何修改都必须向所有用户公开,允许此后的用户享有进一 步复制和修改的自由。自由软件有利于软件共享和技术创新,它的出现成就了TCP/IP 、 Apache服务器软件和Linux操作系统等一大批软件精品的产生。 软件工程与UML 项目化实用教程(第 3 版) 3.根据软件的规模进行分类 根据开发软件所需的人力、时间以及完成的源程序大小,可划分为下述六种不同规模 的软件。 (1)微型软件。微型软件是指一个人在几天之内完成的、自己编写的语句不超过50 行 的软件 (2 。 )小型软件。小型软件是指一个人在半年之内完成的、自己编写的、语句在2000行 以内的程序。 (3)中型软件。中型软件是指5个人以内在一年左右时间里完成的、语句为5000~ 5万行的程序。 (4)大型软件。大型软件是指10~20人年(1人年为一个人工作一年的工作量)完成 的、语句为5万~10万行的程序。 (5)甚大型软件。甚大型软件是指100~1000人参加、用4~5年时间完成的、语句 为100万行程序的软件项目。 (6)特大型软件。特大型软件是指2000~5000人参加、10年左右时间完成的、语句 为1000万行以内的程序。 1.3 软件生产的发展过程 1. 自从20世纪40年代电子计算机问世以来,计算机软件随着计算机硬件的发展而逐 步发展,其发展经历了四个阶段。 1.程序设计时期 1946年到20世纪60年代初,是计算机软件发展的初期,一般称为程序设计时期,其 主要特征是程序生产方式为个体手工方式。程序设计往往是为了一个特定的应用而在指 定的计算机上设计和编制程序,采用密切依赖于计算机的机器代码或汇编语言,软件的规 模比较小,文档资料通常也不存在,很少使用系统化的开发方法,基本上是一种个人设计、 个人使用、个人操作、自给自足的软件生产方式。 2.程序系统时期 20世纪60年代初到70年代初,是计算机软件发展的第二个时期,一般称为程序系 统时期。生产方式是作坊式小集团合作生产,生产工具是高级语言,并开始提出结构化设 计方法。 这个时期程序的规模已经很大,需要多人分工协作,软件的开发方式由“个体生产”发 展到了“软件作坊”。可是“软件作坊”基本上沿用了软件发展早期所形成的个体化的开发 方式,导致软件的开发与维护费用以惊人的速度增加。许多软件产品根本不能维护,最终 导致出现了严重的“软件危机”。 任务1 选择软件开发模型 3. 软件工程时期 20 世纪70 年代中期至80 年代中期,是计算机软件发展的第三个时期,一般称为软 件工程时期。软件的开发以工程化的思想为指导,用工程化的原则、方法和标准来开发与 维护软件。 4. 面向对象时期 20 世纪80 年代中期至今,面向对象方法日益受到人们的重视,给软件产业带来了新 的飞跃。这个时期一般称为面向对象时期,面向对象软件开发技术在迅速取代传统的软 件工程开发方法。 1.我国软件产业的发展历程 1.4 我国的软件产业起步时间较晚,最初的发展是从20 世纪70 年代开始的,发展历程主 要分为萌芽期、起步期、成长期和发展期四个阶段。软件在我国从无到有、从小到大,其发 展史就是一部波澜壮阔的创新史。 1. 萌芽期 20 世纪70 年代至80 年代初,我国软件产业进入萌芽时期。1978 年,计算机工业管 理局的成立,标志着计算机工业在我国的开始。在此期间,中国计算机服务公司(中软前 身)、中国计算机软件公司及中国计算机系统集成公司的相继成立,为我国软件产业的发 展奠定了良好的基础。 2. 起步期 20 世纪80 年代初至80 年代末,我国软件产业的发展进入了起步期。1984 年,中国 软件行业协会的成立,标志着软件以产业的身份登上了中国的历史舞台。1986 年,第一 个关于软件产业发展规划的指导性文件《关于建立和发展我国软件产业的报告》出台,中 共中央、国务院批准了《高技术研究发展计划纲要》(863 计划)。其间,国产软件的龙头企 业中国计算机软件与技术服务总公司(简称中软)成立,第一个国家级高新技术产业开发 区北京中关村科技园区建立,我国的软件产业开始了面向市场、面向客户的转变。 3. 成长期 20 世纪90 年代初至2000 年初,我国软件产业的发展进入了成长期。“三金工程” (即金桥工程、金关工程和金卡工程)启动,Internet在国内逐步兴起,推动了软件产品和 服务面在各个方面的应用,使得软件市场急速膨胀,对软件产业的发展产生深远影响。 随着我国软件市场的急剧扩大,国际软件厂商微软、IBM 、Oracle等公司纷纷在我国 设立微软(中国)、IBM 中国公司、Oracle中国公司等分公司,在推进我国软件市场的壮大 发展中也发挥了重要作用。 软件工程与UML 项目化实用教程(第 3 版) 我国软件产业开始探索新的发展方式,借鉴国外软件产业发展的成功模式,我国采取 了集群式的发展方式,分别在北京、上海、大连、济南等10个城市建设10个国家软件产业 基地;东软集团、用友网络科技股份有限公司等多家软件公司先后成功上市。 4.发展期 2000年至今,随着《鼓励软件和集成电路产业发展的若干政策》国发〔2000 〕18号)、 《振兴软件产业行动纲要(2002年至2005年)》(国办发〔2002 〕47号)、《国务院关于加快培 育和发展战略性新兴产业的决定》国发〔2010 〕32号)和《新时期促进集成电路产业和软 件产业高质量发展的若干政策》(国发〔2020 〕8号)等一系列政策的出台,我国软件产业的 发展环境得到了进一步的优化。特别是近几年,随着“创新驱动发展”“互联网+”“网络强 国”“一带一路”“数字中国”等重大战略的实施,新一轮科技和产业革命正在不断深化,互 联网、大数据、云计算、人工智能和区块链等新技术迅速发展,为我国软件产业的发展提供 全新机会,开辟出一条新的发展道路,我国软件产业因此迎来新的机遇增长期,将进入自 主创新、融合应用、协同突破的新时期。 在国家的高度重视和大力支持下,软件产业快速发展,并取得了显著成就。产业规模 效益快速增长,综合竞争力实现新的跃升。操作系统(深度、统一、麒麟、鸿蒙等)、数据库 (达梦、神舟OSCAR 、南大通用GBase和OceanBase等)、办公软件(WPSOfice等)等取 得一系列标志性成果,部分新兴平台软件、应用软件达到国际领先水平。据工业和信息化 部统计,全国软件和信息技术服务业规模以上企业超3.软件业务收入跃 2022年,5万家, 上十万亿元台阶。下一步我们要重点突破关键软件,推动软件产业做大做强,提升关键软 件技术创新和供给能力。 软件名人 中国软件产业从无到有、从弱到强、从点到面,最终形成了一个发展最快、前景最好、 影响最大的一个全新产业。在软件产业的发展过程中,先后涌现出了许许多多在软件史上 做出杰出贡献的人物,在此不一一列举,下面仅简要介绍部分软件名人(排名不分前后)。 (1)“中关村之父”陈春先(1934—2014):1978—1981年三次访问美国,受美国“硅 谷”现象的启发,在1980年10月提出要在中关村建立“中国的硅谷”,并身体力行成立了 “先进技术服务部”。此举大大推进了中关村高新技术企业的发展,并导致后来北京新技 术产业开发试验区和中关村园区的成立。 (2)“CCDOS的作者”严援朝(1951— ):1983年严援朝为PC长城机开发了CCDOS 软件,其突出贡献便是解决了汉字在计算机内存储和显示的问题,具有划时代意义。 (3)“中国第一程序员”求伯君( — ):1989年成功开发WPS1.填补了我国 中文字处理软件的空白。 19640, (4)“中国中间件第一人”袁红岗(1969— ):他是中国最早在Windows平台上开发 企业应用软件的程序员之一。他组织开发了国内第一个符合JavaEE标准的应用服务器 产品,并通过了JavaEE标准认证,这是国内首次在系统级软件方面站在了世界的前列。 (5)“杀毒英雄”王江民(1951—2010):他是我国最早的计算机反病毒专家。1989年 任务1 选择软件开发模型 开始从事微机反病毒研究,开发出KV系列反病毒软件。38岁开始学习计算机,两三年 之内成为中国最出色的反病毒专家之一;45岁只身一人独闯中关村办公司,产品很快占 据反病毒市场的80%以上。他身残志坚的毅力和品质也让很多程序员面对困难和挫折 时从中得到鼓舞。 (6)“五笔字型之父”王永民(1943— ):1978—1983年,发明被国内外专家评价为 “其意义不亚于活字印刷术”的“五笔字型”(王码),覆盖国内90%以上用户。冲破了国内 汉字形码快速输入必须借助188键大键盘的思想束缚,首创26键标准键盘形码输入方 案,开创了汉字输入能像西文一样方便输入的新纪元。 (7)鲍岳桥(1967— )0。1993年5月进入希望计算机 :1992年编写出PTDOS1. 公司,从事UCDOS的开发工作, 0。19941997年先后主持开 同年10月发布UCDOS3.— 发UCDOS3.0,以及UCWINGo0。1998年组建北京联众电脑技术有 1~UCDOS7.ld1. 限公司。 (8)邓中翰(1968— ):1999年10月,邓中翰回国与国家信息产业部在北京中关村 共同创建了中星微电子有限公司,担任董事长,并担任星光中国芯工程总指挥,成功地开 发出中国第一个打入国际市场的星光中国芯,彻底结束了“中国无芯”的历史。2009年, 邓中翰当选为中国工程院最年轻的院士。 (9)李彦宏(1968— ):2000年创办百度,发展成为全球第二大独立搜索引擎和最 大的中文搜索引擎,中国最具价值的品牌之一。2017年4月19日,百度发布面向汽车行 业及自动驾驶领域合作伙伴的软件平台Apolo(阿波罗),是全球范围内自动驾驶技术的 第一次系统级开放。 (10)雷军(1969— ):1992年加盟金山公司,1998年8月担任金山公司总经理; 2000年年底,金山公司股份制改组后,出任北京金山软件股份有限公司总裁;2011年7 月,出任金山软件董事长。2010年,联合创办小米科技,组建了国际化团队,推出小米手 机、小米之家、小米生态等,并成功走向海外。 (11)刘强东(1974— ):1998年6月18日在中关村创办京东公司。2004年涉足电 子商务领域,目前京东商城已成为中国最大的自营式电商企业之一。带领京东成为全球 前十大互联网企业,在美国纳斯达克上市。 (12)周鸿祎(1970— ):360公司创始人、董事长兼CEO,1998年创建3721公司; 1999年正式提供网络实名中文上网服务,开创中文上网服务之先河。2006年,创建奇虎 360公司,首倡互联网“免费安全”模式,颠覆了传统互联网安全概念,改变了市场格局,迅 速成长为中国最大的互联网安全服务提供商。2018年2月28日,历时三年运作,360回 归A股,在上交所上市,成为“网络安全国家队”。 (13)李开复(1961— ):1998年7月,李开复加入微软并在中国创建、领导微软中 国研究院(现为微软亚洲研究院)。2005年,负责谷歌中国研发中心的运营,并担任谷歌 全球副总裁兼大中华区总裁。2009年9月从谷歌离职后创办创新工场,旨在培育创新人 才和新一代高科技企业。 (14)张一鸣(1983— ):2012年,张一鸣创办字节跳动。推出基于数据挖掘的推荐 引擎产品今日头条、火山小视频、抖音、悟空问答等。 软件工程与UML项目化实用教程(第3版) 职业素质 软件产业是关系国民经济和社会发展全局的基础性、战略性和先导性产业,也是发展 极其迅猛、技术日新月异的产业。软件人才的质量和数量对软件产业的发展影响重大,我 国迫切需要大量的高素质软件技术技能人才。软件技术等专业的学生能否满足企业需求 并为国家发展做出较大贡献,在很大程度上取决于本人的职业素质。职业素质越高的人 , 满足企业需求和为国家做贡献的能力就会越强一些。希望大家在学习专业知识和技能的 同时,也要注重职业素质的全面提升。 职业素质由思想政治素质、职业道德素质、科学文化素质、专业技能素质和身体心理 素质五方面构成。在职业素质中,思想政治素质是灵魂,职业道德素质是核心,科学文化 素质是基础,专业技能素质是关键,身体心理素质是前提。通过企业调研和查阅相关文献 资料,现把许多企业在招聘软件开发人员时的任职要求归纳如下。 (1)坚定拥护中国共产党的领导,在习近平新时代中国特色社会主义思想指引下,自 觉践行社会主义核心价值观,坚持正确的历史观、民族观、国家观和文化观,具有深厚的爱 国情怀,树立正确的世界观、人生观和价值观。 (2)爱岗敬业、诚信守法,具有社会责任感。 (3)具有较强的科学精神、工匠精神和团队精神,具有较强的责任意识、服务意识、规 范意识、质量意识、软件工程意识、知识产权保护意识、信息安全意识、创新意识和集体 意识。 (4)具有软件开发人员必备专业知识和专业技能,具有较强的学习能力、沟通能力、 分析和解决问题的能力、技术文档撰写能力和抗压能力,具有规范化、标准化的代码编写 和测试调试习惯。 (5)具有健康的体魄、心理和健全的人格。 2 对软件危机的认知 1. 20 世纪60 年代中期到70 年代中期,软件开始作为一种产品被广泛使用,并出现了 “软件作坊”,专门为他人的需求写软件。软件开发基本上仍然沿用早期的个体化软件开 发方式。 随着计算机应用范围的迅速扩大,对软件需求快速增长。软件规模逐步扩大,复杂 程度提高,软件可靠性问题日益突出。落后的软件生产方式无法满足迅速增长的软件 需求,从而导致软件开发与维护过程中出现一系列严重问题,“软件危机”就这样爆 发了。 1968 年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一 次提出了“软件危机”这个名词。软件危机包括两方面问题:如何开发软件以满足用户对 软件日益增长的需求;如何维护数量迅速增长的已有软件。 任务1 选择软件开发模型 2.软件危机的主要表现 1.1 (1)软件开发生产率提高的速度远远不能满足用户的需要。 (2)软件功能与实际需求不符。 (3)软件产品质量差。软件开发团队缺少完善的软件质量评审体系及科学的软件测 试规程,导致最终的软件产品存在很多缺陷。 (4)对软件开发成本和进度的估计常常不准确。 (5)软件文档既不完整也不合格。 (6)软件的可维护性差,维护费用高。很多程序缺乏相应的文档资料,程序中的错误 难以改正,有时改正了已有的错误又引入新的错误。随着软件的社会拥有量越来越大,维 护占用了大量人力、物力和财力。 自20 世纪80 年代以来,尽管软件工程研究与实践取得了可喜的成就,软件技术水平 有了长足的进步,但软件危机并没有消失,且有加剧之势。 1.2 软件危机产生的原因 2. 软件危机的出现,使得人们去寻找产生软件危机的原因,发现其原因主要有以下几 方面。 (1)软件具有可运行的行为特性,在写出程序代码并在计算机上运行之前,软件开发 过程的进展质量较难衡量,很难检验开发的正确性。 (2)软件规模庞大,逻辑结构复杂。 (3)对软件需求分析工作不够重视,导致最后研制出的软件产品无法满足用户的 需求。 (4)软件开发人员之间、软件开发人员与用户之间交流沟通过程中发生的理解差异。 (5)软件开发技术和工具落后。 (6)软件管理技术落后,没有统一的软件质量管理规范。 1.3 软件危机的解决途径 2. 为了克服软件危机,北大西洋公约组织提出了“软件工程”的概念,运用其他工程学的 基本原理和方法,设计和管理软件生产。软件工程学从此诞生了,这是目前发现的解决软 件危机唯一有效的方法。 软件工程学主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原 则、方法、技术和工具。指导和支持软件系统的生产活动,达到降低软件生产成本、改进软 件产品质量、提高软件生产水平的目标。软件工程学从硬件工程和其他人类工程中吸收 了很多成功的经验,明确提出了软件生命周期模型,发展了许多软件开发与维护阶段适用 的技术和方法,并应用于软件工程实践,取得了良好效果。 软件工程与UML 项目化实用教程(第 3 版) 在软件开发过程中,人们开始研制和使用软件工具,用于辅助进行软件项目管理与技 术生产。人们还将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成 能够连续支持软件开发与维护全过程的集成化软件支援环境,从管理和技术两方面解决 软件危机问题。 此外,基于程序变换、自动生成和可重用软件等新技术的研究也取得了一定的进展,并 把程序设计自动化的进程向前推进了一步。在软件工程理论的指导下,发达国家已经建立 起较为完备的软件工业化生产体系,形成了强大的软件生产能力。软件标准化与可重用性 得到了工业界的高度重视,这在避免重复劳动及缓解软件危机方面起到了重要作用。 3 对软件工程的认知 1. 自1970 年起,软件开发进入了软件工程阶段。由于“软件危机”的产生,迫使人们不 得不研究、改变软件开发的技术手段和管理方法,从此,软件生产进入了软件工程时代。 1.1 软件工程的基本概念 3. 自从1968 年北大西洋公约组织在国际学术会议上正式提出“软件工程”一词,一门为 研究和克服软件危机的工程学科———软件工程学应运而生,人们开始了对软件工程的 研究。 软件工程学有多种定义,概括地说,软件工程是用科学知识和技术原理来定义、开发、 维护软件的一门学科。它应用工程的概念、原理、技术和方法,以及应用科学的开发技术 和管理方法来开发软件。 软件工程学研究的主要内容是软件开发技术和软件开发管理两个方面:软件开发技 术包括软件开发方法学、软件开发过程、软件开发工具和环境;软件开发管理包括软件度 量、项目估算、进度控制、人员组织、配置管理、项目计划等。 1.2 软件工程的目标 3. 软件工程的目标是提高软件产品的质量和软件开发效率,减少软件维护的难度。衡 量质量的详细指标如下。 (1)适用性。软件在不同的系统约束条件下,使用户需求得到满足的难易程度。 (2)有效性。软件系统能最有效地利用计算机的时间和空间资源。各种软件无不把 系统的时/空开销作为衡量软件质量的一项重要技术指标。时/空开销折中是经常采用的 技巧。 (3)正确性。软件能够准确无误地执行用户需求的各种功能,满足用户要求的各种 性能指标。 (4)可靠性。可靠性有时也称为健壮性,就是在硬件、操作系统出现小故障,或者人 10