软件工程的内容与方法.ppt
《软件工程的内容与方法.ppt》由会员分享,可在线阅读,更多相关《软件工程的内容与方法.ppt(104页珍藏版)》请在三一办公上搜索。
1、实用软件工程(第3版),美丽的北师大珠海分校(1)校园黎明静悄悄-赵池龙摄,学习与评估,1.教材:赵池龙 杨林主编著,实用软件工程(第3版),电子工业出版社,2011。2.成绩评估:期末开卷笔试占总成绩的60%左右。平时课堂表现及小考试占总成绩的40%左右。,第1章 软件工程的内容与方法,本章对软件、软件工程、软件工程学科体系、软件工程课程进行了定义。本章提出了“面向过程方法、面向对象方法、面向元数据方法、形式化方法”的软件工程方法论,以及“面向流程分析、面向元数据设计、面向对象实现、面向功能测试、面向过程管理”的“五个面向”软件工程实践论。本章还简介了ISO9001、CMMI、软件企业文化、
2、信息系统的定义与案例分析。本章既是软件工程课程的绪论,又是软件工程课程的总结。,1.1 软件定义,1计算机硬件与软件计算机(Computer)由硬件(Hardware)和软件(Software)组成。硬件是看得见、摸得着的电子机械设备块,如机箱、主板、硬盘、光盘、U盘、电源、显示器、键盘、鼠标、打印机、电缆等等。软件是依附在硬件上面的程序、数据和文档的集合,是指挥控制计算机系统(包括硬件和软件)工作的神经中枢。如果将硬件比做人的身体,那么软件就相当于人的神经中枢和知识才能。,计算机工程(Computer Engineering)由硬件工程(Hardware Engineering)和软件工程(
3、Software Engineering)组成。硬件工程是研究硬件生产和硬件管理的工程科学,其内容包括计算机及网络硬件的分析、设计、生产、采购、验收、安装、培训、维护。软件工程是研究软件生产和软件管理的工程科学,其内容包括市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、实施、系统维护、版本升级。,【例1-1】请读者规划、设计、安装一个校园网。这是一个硬件工程,工作内容包括:制定设计方案,网络设备的选型、配置、采购、验货、布线、安装、调试、运行和交付。在安装和调试中,又要安装和调试许多软件,如网络操作系统、数据库管理系统、教学软件系统
4、、办公自动化系统、防火墙及杀毒软件等。由于有这么多软件也需要选型、配置、采购、安装、调试,所以在今天,除了生产硬件的厂商之外,纯粹的“硬件工程”几乎不存在,大多数硬件工程都与软件有关,于是就出现了一个新名词“网络工程”,它是介于硬件工程和软件工程之间的系统工程,有时也称它为“系统集成工程”。,2软件定义为了弄清软件工程的概念,首先要了解程序和软件的概念。程序是计算机为完成特定任务而执行的指令的有序集合。站在应用的角度可以更通俗地理解为:面向过程的程序=算法+数据结构面向对象的程序=对象+消息面向构件的程序=构件+构架通常,软件有以下定义:软件=程序+数据+文档,这里的“程序”,是对计算机任务的
5、处理对象和处理规则的描述;这里的“文档”,是为了理解程序所需的详细描述性资料;这里的“数据”,主要是软件系统赖以运行的初始化数据。上述定义来之不易。表1-3列出了美国人对软件定义的认识过程。直到今天,仍然有少数人认为:“软件就等于程序”。这些人在软件开发的过程中,上来就写程序,而不是写文档。软件工程大师Roger S Pressman对这些人提出了尖锐的批评:“越早开始写代码的人,就是越迟完成代码的人”。,至于对管理文档的全面认识,那就更晚了。1974年,美国人才开始认识到软件需要管理。1984年,美国人开始认识到软件管理是一个过程管理,或是一个管理过程。1991年,出现了软件过程能力成熟度模
6、型CMM(Capability Maturity Model for Software)1.0版,人们研究了软件过程管理的具体内容与方法,并将软件开发和管理中产生的各种文档叫做“软件工作产品”,而将最后交付给用户使用的软件工作产品叫做“软件产品”。1996年,出现了统一建模语言UML 0.9版,称软件管理文档为“管理制品”,称软件开发文档为“技术制品”,两者合称为“制品(Artifact)”。,3文档的重要性文档在软件工程中特别重要,文档是否规范与齐全,是衡量软件企业是否成熟的重要标志之一。软件文档分为开发文档和管理文档两大类。开发文档主要由项目组书写,用于指导软件开发与维护;管理文档主要由软
7、件工程管理部门书写,用于指导软件管理和决策。软件工程规定:文档必须指挥程序,而决不允许程序指挥文档;文档与程序必须保持高度一致,而决不允许程序脱离开文档。,开发文档本身具有严格的层次关系和依赖关系,这种关系反映在如下的覆盖关系之中,即有:(1)目标程序覆盖源程序;(2)源程序覆盖详细设计说明书;(3)详细设计说明书覆盖概要设计说明书;(4)概要设计说明书覆盖需求分析规格说明书;(5)需求分析规格说明书覆盖用户需求报告;(6)用户需求报告覆盖软件合同/软件任务书。,管理文档本身具有严格的时序关系,这种时序关系反映在如下的软件过程之中,而过程由一系列的时间序列所组成的:(1)需求分析过程管理文档;
8、(2)软件策划过程管理文档;(3)软件设计过程管理文档;(4)软件实现过程管理文档;(5)软件测试过程管理文档;(6)软件维护过程管理文档;(7)软件过程改进管理文档。,4软件最新定义软件=知识+程序+数据+文档定义中增加了“知识”。对这一定义的讨论正在进行。正方认为:因为软件是知识在网络上的体现,所以这个定义非常好。反方认为:程序、数据、文档本身就是知识的载体与表现,所以这个定义是画蛇添足。,1.2 软件工程定义,1软件危机软件工程来源于软件危机,即先有软件危机,后有软件工程。二十世纪六十年代中期,在美国就出现了软件危机(Software Crisis),这种危机表现在研发大型软件时,软件开
9、发的成本增大、进度延期、维护困难和质量得不到保障。所谓软件危机,就是在软件开发和维护过程中所遇到一系列难以控制的问题。,2软件工程定义1993年,权威杂志IEEE对软件工程的定义是:软件工程是将系统化的、严格约束的、可量化的方法,应用于软件开发、运行和维护中去。2001年,软件工程大师Roger S Pressman 对软件工程的定义是:软件工程是一个过程、一组方法和一系列工具。由于软件技术是飞速发展的,所以软件工程的定义也要与时俱进。下面,根据当前软件技术的进展状况,给出现代软件工程的最新定义。,【定义1-1】软件工程是研究软件开发和软件管理的一门工程学科。这里,一是强调开发,二是强调管理,
10、三是强调工程,四是强调学科。开发和管理是一个问题的相辅相成的两个方面。许多软件项目的失败,不是在开发技术上出了问题,而是在管理过程上出了问题。要将软件的开发当作一项工程,既要按照工程的办法去开发,又要按照工程的办法去管理。时至今日,软件工程不只是一门课程,而是一个学科体系,即软件工程知识体系。,3软件工程学科体系软件工程作为一个学科体系,到本世纪初才初步形成。2001年4月18日,美国发布了软件工程知识体系指南SWEBOK(Guide to the Software Engineering Body of Knowledge)0.95版。2004年,软件工程学科体系的内容才基本确立,就在这一年
11、,美国ACM和IEEE-CS联合制订SWEBOK 2004年版,它将软件工程学科体系的知识划分为如下10个知识域:,(1)软件需求(Software Requirements)。软件需求是真实世界问题而必须展示的特性。软件需求知识域有七个子域:需求基础、需求过程、需求获取、需求分析、需求规格说明、需求确认和实践考虑。,(2)软件设计(Software Design)。软件设计既是定义一个系统的体系结构、组件、接口和其他特征的过程,又是这个过程的结果。软件设计知识域有六个子域:软件设计基础、软件设计关键问题、软件结构与体系结构、软件设计质量的分析与评价、软件设计符号、软件设计的策略与方法。,(3
12、)软件构造(Software Construction)。它指通过编码、验证、单元测试、集成测试和排错的组合,具体创建一个可以工作的、有意义的软件。其知识域有三个子域:软件构造基础、管理构造、实际考虑。,(4)软件测试(Software Testing)。它是由在有限测试用例集合上,根据期望的行为,对程序的行为进行的动态验证组成,测试用例是实际上无限的执行域中适当选择出来的。软件测试域有五个子域:软件测试基础和测试级别、测试技术、需求分析、与测试相关的度量、测试过程。,(5)软件维护(Software Maintenance)。软件一旦投入运行,就可能出现异常,运行环境可能发生改变,用户会提出
13、新的需求。生命周期软件维护,从软件交付时开始。软件维护的知识域有四个子域:软件维护基础、软件维护的关键问题、维护过程、维护技术。,(6)软件配置管理(Software Configuration Management)。软件配置是为了系统地控制配置的变更和维护在整个系统生命周期中的完整性及可追踪性,而标志软件在时间上不同点的配置的学科。软件配置管理域有六个子域:软件配置管理过程管理、软件配置标志、软件配置控制、软件配置状态统计、软件配置审核、软件发行管理和交付。,(7)软件工程管理(Software Engineering Management)。处理软件工程的管理与度量,虽然度量是所有知识域
14、的一个重要方面,但是这里涉及的是度量程序的专题。软件工程管理域有六个子域:启动和范围定义、软件项目计划、软件项目实施、评审与评价、关闭、软件工程度量。前五个覆盖软件过程工程管理,第六个描述软件度量的程序。,(8)软件工程过程(Software Engineering Process)。涉及软件工程过程本身的定义、实现、评定、度量、管理、变更和改进。软件工程过程域有四个子域:过程实施与改变、过程定义、过程评定、过程和产品度量。(9)软件工程工具和方法(Software Engineering Tool and Method)。有软件工程工具、软件工程方法两个子域。,(10)软件质量(Softwa
15、re Quality)。处理跨越软件生命周期过程的软件质量的考虑,由于软件质量在软件工程中无处不在,其他知识域也涉及质量问题。软件质量域有三个子域:软件质量基础、软件质量过程、实践考虑。在上述软件工程学科体系中,前五个知识域是讲软件开发,后五个知识域是讲软件管理。由此可见,软件工程知识体系包括软件开发和软件管理两大部分,所以软件工程的定义也应该包括软件开发和软件管理两项内容。,4软件工程课程研究的内容软件工程课程与软件工程学科体系是有区别的:前者是一门课程,或是大学的软件工程教科书,后者是一个知识体系;前者是一个局部,后者是一个整体。作为一门软件工程课程,它的研究的内容至今没有统一的说法。可以
16、这么认为,软件工程课程研究的内容,应该涵盖“软件生命周期模型、软件开发方法、软件支持过程、软件管理过程”这四个方面,如表1-4所示。,5软件工程基本原理习惯上,人们常常把软件工程的方法(开发方法)、工具(支持方法的工具)、过程(管理过程)称为软件工程三要素。而把美国著名的软件工程专家B.W Boehm于1983年提出的7条原理,作为软件工程的基本原理。(1)用分阶段的生命周期计划严格管理软件开发。阶段划分为计划、分析、设计、编程、测试和运行维护。,(2)坚持进行阶段评审。上一阶段评审不通过,就不能进入下一阶段开发。(3)实行严格的产品版本控制。(4)采用现代程序设计技术。(5)结果应能清楚地审
17、查。因此,对文档要有严格要求。(6)开发小组的成员要少而精。(7)要不断地改进软件工程实践的经验和技术,要与时俱进。上述七条原理,虽然是在面向过程的程序设计时代(结构化时代)提出来的。但是,直到今天,在面向元数据和面向对象的程序设计新时代,它仍然有效。,根据“与时俱进”的原则,还有一条基本原理在软件的开发和管理中特别重要,需要补充进去,作为软件工程的第八条基本原理。(8)二八定律。对软件项目进度和工作量的估计:一般人主观上认为已经完成了80%,但实际上只完成了20%;对程序中存在问题的估计:80%的问题存在于20%的程序之中;对模块功能的估计:20%的模块,实现了80%的功能;对人力资源的估计
18、:20%的人,解决了软件中80%的问题;对投入资金的估计:企业信息系统中80%的问题,可以用20%的资金来解决。,研究二八定律的现实意义,在于指导软件开发计划的制订与执行。如果事先掌握了二八定律,就能自觉地用二八定律去制订、跟踪与执行软件开发计划。也就是说,计划中要用开始的20%时间,去完成80%的开发进度;剩下20%的进度,要留下80%的时间去完成。只有这样,项目的开发计划与项目的开发进度才能吻合。,6软件工程在中国1982年,软件工程的创始人、美藉华人叶祖尧博士,带着自己开创的“软件工程学”理论来到中国,成为当时中国政府计算机领导小组的顾问。1984年,国家科委在北京召开“软件工程”大会。
19、会议其间,国防科技大学陈火旺院士与孟庆余教授,宴请了美国软件工程专家叶祖尧博士。席间,时任美国马里兰大学计算机系主任的叶祖尧博士说:“软件工程,只有你们长沙(国防科技大学)并行机的研究搞的最好!”巨型机银河机系列与天河机系列的历史证明:叶祖尧的话是对的。,1.3 软件工程作用,软件工程是软件行业的一门管理科学,也是系统分析员和项目经理以上人员必备的一种领导艺术,为了将我国的软件产业搞上去,使软件产业成为国民经济的支柱产业,使中国早日成为一个软件大国与软件强国,对于软件工程的作用,在软件界怎么强调也不过分。为了说明软件工程的作用,先来看一个例子。,【例1-3】20世纪90年代初,有两个软件团队,
20、一个较大(10多人),一个较小(6人),都在开发财务系统。烟台的较大的那个团队,工作不规范,没有文档,没有评审,也没有团队协作精神,结果开发出来的产品可维护性差,没有打开市场,没有产生经济效益和社会效益,致使产品与团队最后同归于尽。北京的较小的那个团队,同舟共济,工作规范,有正规文档,有阶段评审,分工明确:,一人负责原始凭证和输出报表的收集、归类和整理,这实际上是做需求分析;一人负责科目和数据字典(代码表),这实际上是做信息的标准化与规范化;一人负责记账凭证的录入和修改,这实际上是做数据库的设计和加载工作;一人负责日记账、明细账和总账之间的平衡与对账,这实际上是做数据处理;一人负责统计、报表和
21、查询,这实际上是做数据输出工作;一人负责总体设计和项目管理,这就是项目经理的工作。较小的那个团队,后来发展成为巨大的用友软件公司。,因为软件工程来自于软件企业,又服务于软件企业,所以讨论它的作用,主要是讨论它在软件企业中的作用。从历史上讲,软件工程的作用,是为了克服上个世纪60年代出现的软件危机。从当前来讲,软件工程的作用,就是告诉人们怎样去开发软件和管理软件。具体地讲,它表现在与软件开发和管理有关的人员和过程上。为了说明这个问题,首先,来分析一下软件企业的人才结构,看看这些人员的工作与软件工程有什么关系。,(1)高层管理人员。他们应具备的基本条件是:软件专业宏观知识、软件工程管理知识,加上商
22、业与资本运作知识。他们要用软件工程的理论和方法,来管理整个公司的软件业务。(2)中层项目经理和软件工程师。他们应具备的基本条件是:系统分析知识、系统设计知识,加上项目管理知识。他们要用软件工程的理论和方法,来管理项目组的软件开发。他们的个人奋斗目标是软件管理专家、分析设计专家、开发技术专家。这两部分人员,他们是软件工程的拥有者和实践者。,(3)软件蓝领工人。他们应具备的基本条件是:掌握阅读文档的技能、程序设计的技巧,加上软件测试的知识。他们要用软件工程的理论和方法,来实现软件项目的软件功能、性能、接口、界面。(4)软件营销人员。他们应具备的基本条件是:营销知识、售前知识,加上软件工程基本知识。
23、他们要用软件工程的基本思路,来与客户进行沟通,以赢得客户的信任。(5)软件实施和维护人员。他们应具备的基本条件是:软件客户化及安装、运行、维修技术。他们要用软件工程的基本方法,来实现软件功能、性能与接口的实施和维护。,(6)软件售前人员。他们是软件公司的产品形象代表,其奋斗目标是:既要成为某个行业领域的产品专家,又要成为该产品的实现顾问。只有这样,他们才能看懂招标书、写好投标书、讲好投标书。在制作和宣讲投标书的过程中,有许多与软件工程相关的知识和内容,如项目开发方法、开发工具、开发环境、运行环境、管理方法、质量和进度控制方法,只有把这些方法写清讲透,用户才能相信认可,投标才有成功把握。这些知识
24、和内容,离不开软件工程知识的学习和教育。,从软件项目团队来讲,软件工程的作用在于:在规定的时间内,按照规定的成本,完成预期质量目标(软件的功能、性能和接口达到需求报告标准)的软件。从软件企业本身来讲,软件工程的作用在于:持续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。从软件大国与强国来讲,软件工程的作用在于:它在一个国家的计算机界及软件界的普及与推广,可以使这一个国家变为一个软件大国,进而变为一个软件强国。,从软件发展进程来讲,软件工程的作用在于:克服软件危机,控制软件进度,节约开发成本,提高软件质量。从软件开发的前景来讲,由于
25、软件开发的前景如同开发大海与开发蓝天,潜力无限无垠,所以软件工程的前景也无限无垠。由于软件工程的作用越来越大,它的地位也越来越高。以前,软件工程只是作为一门课程或一本书。现在,它作为一个学科体系,设立了软件工程专业和软件工程学位,产生了有软件工程硕士和博士学位。,1.4 软件工程方法论1.4.1 软件工程方法论的提出,长期以来,人们将软件开发方法与软件生命周期模型混为一体,甚至将软件开发方法与软件过程改进模型也混为一体,因而误认为软件生命周期模型或软件过程改进模型就是软件开发方法。例如,他们将迭代模型RUP(Rational Unified Process)和过程改善模型CMMI(Capabi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 内容 方法

链接地址:https://www.31ppt.com/p-6206874.html