1、,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,软件工程,Software Engineering,2,第一篇面向过程的软件工程,第,1,章 软件工程概述,本章学习目标,熟练掌握软件工程概念、原理和方法,熟练掌握软件生命周期和软件过程模型,掌握软件危机产生的原因、解决的办法,掌握软件及其特点,了解软件工程的发展历程,了解软件工程相关规范,4,1.1,软件工程的发展历程,随着软件技术的发展,软件工程的研究范围和内容也在不断变化和发展。,第一阶段,,传统软件工程,阶段,20,世纪,70,年代,为了解决,软件项目错误率高,以及,软件维护任务重,等问题,人
2、们提出软件开发工程化的思想,希望使软件开发走上一条规范化的道路,并努力克服,软件危机,。形成了软件工程的概念、框架、方法和手段。,5,1.1,软件工程的发展历程,第二阶段,,过程软件工程,阶段,20,世纪,80,年代末逐步发展起来的面向对象方法,形成了完整的面向对象技术体系,适应更大规模、更广泛的应用。进一步提高,软件生产率、保证软件质量,成为软件工程追求的更高目标。,在重视发展软件开发技术的同时,提出了,软件能力成熟度模型,、个体软件过程和群组软件过程等概念。软件开发过程从,目标管理,转向,过程管理,。,6,1.1,软件工程的发展历程,第三阶段,,构件软件工程,阶段,20,世纪,90,年代以
3、后,软件开发技术的主要处理对象为网络计算和支持多媒体信息的,WWW,。,软件重用和软件构件技术,正逐步成为主流软件技术。迭代、敏捷、持续集成的理念,正成为业界的共识。,7,1.2,软件危机,软件危机,是在计算机软件开发、维护过程中所遇到的一系列严重问题,,这是由于软件自身的特点,以及在软件开发和维护过程中,采用了错误的方法和技术。,8,1.2.1,软件的概念特点及分类,1,软件的概念,关于软件争论不休的问题:,为什么需要那么长时间才能结束开发?,为什么成本如此之高?,为什么我们不能在把软件交给客户之前就发现所有的错误?,为什么在软件开发过程中我们难以度量其进展?,9,1.2.1,软件的概念特点
4、及分类,1,软件的概念,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。,IEEE,定义(,1983,年):计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。,软件程序数据文档,Institute of Electrical and Electronics Engineers,10,1.2.1,软件的概念特点及分类,1,软件的概念,程序,是按事先设计的功能和性能要求执行的指令序列。,数据,是使程序能正常操纵信息的数据结构。,文档,是与程序开发,维护和使用有关的图文材料。,11,1.2.1,软件的概念特点及分类,2,软件的特点,(,
5、1,)软件形态的逻辑性,软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性、不可见性。,开发过程的进度难以衡量,质量难以评价,管理和控制相当困难。,12,1.2.1,软件的概念特点及分类,(,2,)生产过程的非制造性,软件的生产与硬件不同,在它的开发过程中没有明显的制造过程。,13,1.2.1,软件的概念特点及分类,(,3,)使用方式的无磨损性,在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。,软件不会被“用坏”,但是较难维护,维护意味着改正或修改原来的设计。,14,1.2.1,软件的概念特点及分类,(,4,)开发和运行对环境的依赖性,软件软件的开发和运行常受到计算机系统的限
6、制,对计算机系统有着不同程度的依赖性。,15,1.2.1,软件的概念特点及分类,(,5,)开发方式的手工化,软件的开发至今尚未完全摆脱手工艺的开发方式。大多数软件是定制的,而不是通过已有的构件组装而来的。,16,1.2.1,软件的概念特点及分类,(,6,)软件的复杂性,软件本身是复杂的,软件是人类能够创造的最复杂的产物。,体现在,实际问题,的复杂性。,程序逻辑结构,的复杂性。,其他领域的专门知识,复杂性。,17,1.2.1,软件的概念特点及分类,软件的复杂性:,例:,1.Windows95,有,1000,万行,花费上千人。,2.Windows2000,有,5000,万行,花费五千多人。,3.L
7、otus 1-2-3 V3.0,近,40,万行,花费,263,人年,成本,22,百万美元。,4.WWMCCS,(全球军事指挥与控制系统)花费,3500,多人拖了几年,交付后发现,100,个错误。最后失败。,18,1.2.1,软件的概念特点及分类,(,7,)成本的昂贵性,软件成本相当昂贵。在软件开发过程中,会投入大量的、复杂的、高强度的脑力劳动,投入的研发成本相对比较高。,19,1.2.1,软件的概念特点及分类,(,8,)社会因素,相当多的软件工作涉及到社会因素。软件大大提高了工作的效率,必然释放劳动力,促进机构的重组,由此带来一系列的社会问题。,20,1.2.1,软件的概念特点及分类,3,软件
8、的分类,软件的分类有多种方法,可按软件的,功能,划分,也可按软件的,规模,划分,或者按软件,工作方式与服务对象,的划分。,(,1,)按软件的,功能,分类,软件可以分为如下三类:,系统软件、支撑软件和应用软件,。,21,1.2.1,软件的概念特点及分类,1,)系统软件,系统软件是负责计算机系统中各种独立的硬件部件、相关软件和数据,使得它们可以协调高效地开展工作的软件。,例如,:,操作系统、数据库管理系统、设备驱动程序、通信处理程序等软件均属于系统软件。,22,1.2.1,软件的概念特点及分类,2,)支撑软件,支撑软件是为方便用户使用而开发的,各种工具软件,,是一种通用性较强的软件。,例如,:,支
9、持需求分析、设计、实现、测试和支持管理的工具软件,微软公司的支持各种图表制作的,Visio,软件,,SYBASE,公司的数据库设计建模工具,PowerDesigner,软件等。,23,1.2.1,软件的概念特点及分类,3,)应用软件,各行各业都需要软件,但解决的问题不同。为解决特定应用领域问题而开发的软件,称为应用软件。,例如,:,商业数据处理软件、工程与科学计算软件、计算机辅助设计,/,制造软件、系统仿真软件、智能产品嵌入软件、医疗制药软件、办公自动化软件、计算机辅助教学软件等,。,24,(,2,)按照软件,规模,划分,类 别,参加人数,研制期限,产品规模(源代码行),微 型,1,1 4,周
10、,0.5K,小 型,1,1 6,月,1K 2K,中 型,2-5,1 2,年,5 50 K,大 型,5-20,2 3,年,50 500 K,甚大型,100-1000,4 5,年,1M,极大型,2000-5000,5 10,年,1M 10 M,(,3,)按照软件,工作方式,划分,实时处理软件交互式软件批处理软件,(,4,)按照软件,服务对象,的范围划分,项目软件,由客户委托开发的软件。,产品软件,由软件开发机构开发,提供给市场的。,25,1.2.2,软件危机,软件危机:在计算机软件开发、维护过程中所遇到的一系列严重问题。,在程序运行时发现的错误,必须设法改正;,用户有新的需求,必须相应地修改程序;
11、,硬件或,OS,的更新,通常需要相应地修改程序;,上述的软件维护工作,以令人吃惊的比例消耗资源;有些软件是不可维护的。,软件危机开始出现,!,26,1.2.2,软件危机,例,:,美国,IBM,公司在,1963,年至,1966,年开发的,IBM360,机的操作系统。这一项目花了,5000,人年的工作量,最多时有,1000,人投入开发工作,写出了近,100,万行源程序。,.,据统计,这个操作系统每次发行的新版本都是从前一版本中找出,1000,个程序错误而修正的结果。,27,1.2.2,软件危机,软件危机,包含下述两方面的问题:,(,1,)如何开发软件,以满足对软件日益增长的需求。,(,2,)如何维
12、护数量不断膨胀的已有软件。,28,1.2.3,软件危机产生的原因,1,软件自身的特点,软件作为逻辑产品,具有与硬件不同的特性(见上节)。这些特性决定了软件开发与维护的复杂性,导致软件的开发和维护比硬件更难。,29,1.2.3,软件危机产生的原因,2,在开发和维护过程中,采用了错误的方法和技术,(,1,)软件管理相对落后,由于缺乏软件开发的经验和相关数据的积累,使得开发工作的计划很难制定:,实际,成本,比估计成本有可能高出一个数量级;,实际,进度,比预期进度拖延几个月的现象并不罕见。这种现象降低了软件企业的信誉。,30,1.2.3,软件危机产生的原因,(,2,)软件需求不够清晰,软件开发人员常常
13、在对用户要求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就匆忙着手编写程序,急于求成。,开发工作开始后,软件人员和用户之间的沟通不够及时充分,造成矛盾在开发后期集中暴露。,“闭门造车”,。,31,1.2.3,软件危机产生的原因,(,3,)软件测试不够充分,未能在测试阶段充分做好检测工作,提交给用户的软件质量差,在运行中暴露出大量的问题,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。软件质量保证技术还没有坚持不懈地应用到软件开发的全过程中,这些都导致软件产品发生质量问题。,32,1.2.3,软件危机产生的原因,(,4,)软件开发方法相对陈旧,早期的个体化开发特
14、点,开发过程没有统一的、公认的方法论和规范指导,加上不重视文字资料工作,资料很不完整。忽视每个人与其他人的接口部分,发现了问题修修补补,这样的软件很难维护。很多程序中的错误是非常难改正的。,33,1.2.3,软件危机产生的原因,(,5,)没有软件生命周期概念,认为软件就是编程、运行,轻视软件维护这个重要环节。其实,编程工作量只占总工作量的,20%,左右,,软件维护的工作量占到,50%,以上,。,34,1.2.3,软件危机产生的原因,(,6,)忽视开发代价与时间的关系,软件开发过程中,在不同的时间段引入同一变动付出的代价具有明显的不同,引入变动的时间越晚付出的代价越高。,高,中,低,早,中,后,
15、代价,变化出现的时期,35,1.2.4,解决软件危机的方法,1,首先应该正确的认识计算机软件,“软件”不等于单一的“程序”,,软件,=,程序,+,数据,+,相关文档,,是程序、数据和文档的完整集合。,36,1.2.4,解决软件危机的方法,2,按工程化的原则和方法组织项目开发是软件开发的一个主要出路。,50,年代到,60,年代时,程序设计曾经被看做是一种任人发挥创造才能的技术领域。,写出的程序通篇充满了程序技巧,这些程序很难被别人看懂,。随着计算机技术的发展和广泛使用,逐渐抛弃了这种观点。人们要求这些程序容易看懂、容易使用,并且容易修改和扩充。多个软件人员分工合作、共同完成。只有在项目的总体要求
16、和技术规范的约束下充分发挥和施展自己的才能。,37,1.2.4,解决软件危机的方法,3,通过技术和管理的方法手段提升软件的质量,软件具有自己的生命周期。大型软件系统的开发与其他工程项目如建造桥梁、制造飞机等的开发是同理的。必须采用工程化思想,运用先进的技术方法和管理手段,来提升软件的开发质量和效率。,1968,年北大西洋公约组织(,NATO,)在联邦德国召开国际会议,,讨论软件危机问题,第一次提出了“软件工程”这个概念。,北大西洋公约组织(英语:,North Atlantic Treaty Organization,,缩写:,NATO,),38,1.3,软件工程,1软件工程的概念,软件工程,是
17、指导计算机软件开发和维护的一门学科。,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是,软件工程,。,39,1.3.1,软件工程的概念,NATO(1968),为了经济地获得可靠的且能在实际机器上运行的软件,而建立和使用完善的工程原理。,IEEE(1993),1,)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,即把工程应用于软件;,2,)研究,1,)中的途径。,软件工程是开发、运行、维护和修复软件的系统方法。,40,1.3.1,软件工程的概念,2,软件工程的
18、本质特性,(,1,)软件工程关注于大中型程序的构造,大中型程序相对比较复杂,因此有必要采用系统的工程理论与方法,规范软件的开发和维护过程,以保障软件的质量。,41,1.3.1,软件工程的概念,(,2,)软件工程的 中心课题是控制复杂性,软件所解决的问题十分复杂,以致于不能把问题作为一个整体通盘考虑,只能采用模块化分解的方法解决。模块化方法并不能降低问题的整体复杂性,但是却使它变成可以管理的。,许多软件的复杂性主要不是由问题的内在复杂性造成的,而是由必须处理的大量细节造成的。,42,1.3.1,软件工程的概念,(,3,)开发软件的效率非常重要,现实世界在不断的变化,软件为了不被很快的淘汰,必须随
19、着所模拟的现实世界一起变化。目前,社会对新应用系统的需求超过了人力资源所能提供的限度,软件供不应求的现象日益严重。,43,1.3.1,软件工程的概念,(,4,)和谐地合作是开发软件的关键,软件处理的问题十分庞大,必须许多人协同工作才能解决这类问题。纪律是成功地完成软件开发项目的一个关键,良好的团队合作有利于项目的成功。,软件开发人员必须学会合作与沟通,才能保证软件的质量和开发效率。,44,1.3.1,软件工程的概念,(,5,)软件必须有效地支持它的用户,在软件工程领域中是由具有一种文化背景的人为另一种文化背景的人创造产品。缺乏应用领域的相关知识,是软件开发项目出现问题的常见原因。软件工程师不仅
20、缺乏应用领域的实际专业知识,还缺乏该领域的文化知识。因此有必要通过访谈、阅读书面文件等方法了解用户组织的工作流程,然后用软件实现。,45,1.3.1,软件工程的概念,3,软件工程项目的基本目标,(,1,)成本低,付出比较低的开发成本;,(,2,)功能全,达到用户要求的软件功能;,(,3,)性能好,取得较好的软件性能;,(,4,)易移植,开发的软件易于移植;,(,5,)费用少,需要较低的维护费用;,(,6,)能按时完成开发工作,及时交付使用。,46,1.3.1,软件工程的概念,软件开发项目力图在以上目标的冲突中取得一定程度的平衡。,47,1.3.2,软件工程原理,B.W.Boehm,提出软件工程
21、的七条基本原理。,这七条原理是保证软件产品质量和开发效率的原理的最小集合。,48,1.3.2,软件工程原理,1.,用分阶段的生命周期计划严格管理,把软件生命生命周期划分为若干个阶段,并相应的制定计划,然后按计划对软件的开发与维护工作进行管理。,49,1.3.2,软件工程原理,2.,坚持进行阶段评审,在每个阶段,都要进行严格的评审,以便尽早发现在软件开发过程中所犯的错误。各个阶段之间存在着必然的联系,尽早地发现前一阶段错误有助于后续阶段工作的继续,保证每个阶段的工作质量。,50,1.3.2,软件工程原理,3.,实行严格的产品控制基准和配置管理,在软件开发过程中,改变需求往往会付出较大的代价。为了
22、能使需求改变的代价降到最低,必须实行严格的产品控制,其中主要是实行基准配置(各个阶段产生的文档或程序代码)管理。,当对基准配置修改时,要按照严格的规程进行评审,只有获得批准后才能实施修改。,51,1.3.2,软件工程原理,4.,采用现代程序设计技术,采用先进的程序设计技术,不仅可以提高软件的开发效率,而且可以提高软件的维护效率。,比如采用面向对象的程序设计技术,就可以有效提高软件的重用性和可扩展性,进而提高软件的开发效率和可维护性。,52,1.3.2,软件工程原理,5.,结果应能清楚地审查,为了能更好地管理软件开发过程,规定开发组织的责任和产品标准,每个阶段所得到的结果都具有里程碑意义,应该能
23、够清楚地审查。,53,1.3.2,软件工程原理,6.,开发小组的成员应该少而精,开发人员的水平参差不齐,应该不断提高开发小组人员的素质。人员多了必然带来沟通和接口等一系列问题,势必影响软件的开发进度和质量效果。,54,1.3.2,软件工程原理,7.,承认不断改进软件工程实践的必要性,软件工程是实践者的工程方法,在实践的过程中,不可避免地会出现一些新的问题,需要软件开发人员不断地改进,以适应需求的变化。,55,1.3.2,软件工程原理,新定律:二八定律,或 帕雷托 法则,对软件项目进度和工作量的估计:一般主观上认为已经完成了,80,的,往往实际上只完成了,20,;,对程序中存在的问题的估计:,8
24、0,的问题往往存在于,20,的程序之中;,对模块功能的估计:,20,的模块实现了,80,的功能;,对人力资源的估计:,20,的人解决了软件中,80,的问题;,对投入资金的估计:企业信息系统中,80,的问题,可以用,20,的资金来解决。,56,1.3.3,常用的软件工程开发方法,1,软件工程方法学,在软件生命周期全过程中会使用一整套的技术方法,把这些方法的集合称为软件工程方法学。,软件工程方法学采用的是一种层次化的技术,包括:,方法、工具和过程,等三个要素。它的聚焦点在于关注软件工程的质量。,57,1.3.3,常用的软件工程开发方法,(,1,),方法,是完成软件开发各个任务的技术方法,回答“怎样
25、做”的问题,为软件开发提供了“如何做”的技术。,(,2,),工具,为软件工程方法提供了自动的或半自动的软件支撑环境,进而提高软件的开发效率。,(,3,),过程,是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤,每个阶段采用那种技术方法,运用那些工具。,58,1.3.3,常用的软件工程开发方法,2,目前使用得最广泛的软件工程方法学,(,1,)传统方法学:生命周期方法学,或结构化方法。,把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成各个阶段的任务。采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务。,其中,软件文档是通信的工具
26、,它们清楚准确地说明了到这个时候为止,关于该项工作已经知道了什么,同时奠定了下一步的基础。,59,1.3.3,常用的软件工程开发方法,(,2,)面向对象方法学,客观世界是由对象构成的,对象是一个属性(数据)和对数据操作的封装体。数据和对数据的处理原本是密切相关的,,传统方法把数据和对数据的操作人为地分离成两个独立的部分,要么面向数据,要么面向对数据的操作。而面向对象方法是把数据和对数据的操作紧密结合起来的方法。,60,1.3.4,软件过程与模型,1,软件生命周期,软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为软件的生命周期(生存期)。,六个阶段:,可行性与计划研究,、,需求分析
27、,、,设计,、,实现,、,测试,、,运行与维护,。,61,1.3.4,软件过程与模型,2,软件生命周期各阶段的基本任务,(,1,)可行性与计划研究,关键问题:弄清楚“要解决的问题是什么?(,What,)该问题有行得通的解决办法吗,?”。,62,1.3.4,软件过程与模型,(,2,)需求分析,关键问题:弄清楚“目标系统必须做什么(,What,)”,确定系统必须具备的功能、性能要求及其他需求。,63,1.3.4,软件过程与模型,(,3,)软件设计,关键问题:“应该如何解决这个问题?(,How,)”。软件设计包括概要设计和详细设计。,64,1.3.4,软件过程与模型,(,4,)软件实现,关键问题:如
28、何把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”。程序应正确、容易理解、容易维护。,65,1.3.4,软件过程与模型,(,5,)软件测试,软件测试的目的,就是通过各种测试使软件达到预定要求。,66,1.3.4,软件过程与模型,(,6,)软件运行与维护,关键任务:通过各种维护使系统持久地满足用户需要。通常包括四类维护:改正性、适应性、完善性和预防性维护。,67,1.3.4,软件过程与模型,3,软件工程过程,软件工程过程,是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,(,1,)软件规格说明,就是确定软件的功能及其运
29、行的限制。,(,2,)软件开发,就是产生满足规格说明的软件。,(,3,)软件确认,就是确认软件能够完成客户提出的要求。,(,4,)软件演进,为满足客户的变更要求,软件必须在使用的过程中不断地演进。,68,1.3.4,软件过程与模型,4,软件生存期模型,软件过程通常使用生存期模型(生命周期模型、过程模型)来描述。,典型的软件过程模型:,瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型、统一模型、敏捷过程,等。,69,1.3.4,软件过程与模型,4,软件生存期模型,(,1,)瀑布模型,1970,W.Royce,生命周期模型,20,世纪,80,年代之前,瀑布模型一直是唯一被广泛采用的生命周期模型。现
30、在它仍然是软件工程中应用得最广泛的过程模型。传统软件工程方法学的软件过程,基本上可用瀑布模型来描述。,70,1.3.4,软件过程与模型,瀑布模型是传统的开发策略,软件过程分为若干个阶段,阶段间具有顺序性、依赖性,它的目的是为了推迟实现。,右图为改进的瀑布模型,:,71,1.3.4,软件过程与模型,(,2,)原型模型,在项目开发的初始阶段,对软件的需求认识常常不够清晰,使得项目开发难以一次成功。往往需要做多次修正。第一次只是试验开发,其目标只是在于探索可行性,弄清软件需求。下一次则是在此基础上获得较为满意的软件产品。这些模型属于演化模型。,72,1.3.4,软件过程与模型,原型系统是快速建立起来
31、的可以在计算机上运行的程序,它所能完成的功能往往是最终产品的一个子集。,73,1.3.4,软件过程与模型,(,3,)增量模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。,74,1.3.4,软件过程与模型,(,4,)螺旋模型,1988,年,,Barry Boehm,正式发表了软件系统开发的“,螺旋模型,”,它将瀑布模型和,快速原型模型,结合起来,强调了风险分析,使用原型及其他方法来尽量降低风险。,特别适合于大型复杂的系统。,75,1.3.4,软件过程与模型,76,1.3.4,软件过程与模型,(,5,)
32、喷泉模型,1990,年,,B.H.Sollers,和,J.M.Edwards,提出了面向对象方法模型,又称喷泉模型。,喷泉模型是一种以用户需求为动力,以对象为驱动的模型。在该,模型,中,软件开发过程自下而上的各个阶段是相互迭代的。各阶段无明显间限,在某部分常常被重复工作多次,进行多次迭代,每次迭代加入渐进的系统,。,77,1.3.4,软件过程与模型,78,1.3.4,软件过程与模型,(,6,)统一模型,统一软件开发过程(,RUP,),把开发中面向过程的方面和其他开发的组件整合在一个统一的框架内。,RUP,的软件生命周期分解为四个阶段:初始阶段、细化阶段、构造阶段和交付阶段。,79,1.3.4,
33、软件过程与模型,80,1.3.4,软件过程与模型,(,7,)敏捷过程,敏捷软件开发方法其实不是一个具体的过程,而是一个涵盖性术语,用于概括那些应需而生的具有类似价值观的软件开发方法。,特点:以人为核心、循环迭代、响应变化等,高质量地快速交付客户满意的工作软件。,81,1.3.4,软件过程与模型,价值观:个体与交互 重于 过程与工具,可以工作的软件 重于 面面俱到的文档,与客户的合作 重于 与其合同的谈判,对变化的响应 重于 对计划的遵循。,代表性的敏捷开发方法:极限编程(,XP,),特征驱动软件开发(,FDD,),动态系统开发(,DSDM,),自适应软件开发(,ASD,),,SCRUM,,,C
34、rystal,等。,82,1.4.1,软件项目的开发流程,1,招投标工作,由客户(业主)根据企业自身的需求情况,制定招标文件。委托招标公司进行招标或投标邀请;,软件企业向招标公司报名,购买招标文件,完成投标文件的制作。,经过招投标评审流程,确定中标企业。客户与中标企业签订软件开发合同。,83,1.4.1,软件项目的开发流程,2,调研与需求分析,通过深入了解和分析,组织项目开发团队,制定软件开发计划,进行任务分解、人员分配、制定开发进度等。,开发者获取用户需求,编写软件需求规格说明书文档。,84,1.4.1,软件项目的开发流程,3,软件设计,对软件系统进行概要设计。包括系统的基本处理流程、系统的
35、组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等。,在此基础上,进行,软件系统,详细设计。描述实现具体模块所涉及到的主要算法流程、,数据结构,、类的层次结构及调用关系。,85,1.4.1,软件项目的开发流程,4,编码与测试,根据详细设计的具体要求,编写程序,实现对目标系统的功能、性能、接口、界面等方面的要求。,测试是项目研发中一个相当重要的步骤,测试编写好的系统。发现软件中存在的问题。,86,1.4.1,软件项目的开发流程,5,软件交付,在软件测试证明软件达到要求后,软件开发者应向用户提交开发的程序、数据库的,数据字典,、用户安装手册、用户使用指南、需求报告、设计
36、报告、测试报告等双方合同约定的产物。,87,1.4.1,软件项目的开发流程,6,验收,用户进行确认验收,查看软件是否完成合同所规定的各项任务。,当软件项目较大时,用户往往聘请第三方软件测试机构进行验收测试。,88,1.4.1,软件项目的开发流程,7,运行维护,根据用户需求的变化或环境的变化,对应用程序进行全部或部分的修改。,89,1.4.2,软件工程的标准化,1,软件工程的标准化,软件工程的标准化主要关注的是软件过程的标准化,也就是在软件生存期各个阶段的工作均建立标准或规范。,国家标准,GB/T 15538-1995,软件工程标准分类法,给出了软件工程标准的分类。涉及过程管理、产品管理、资源管
37、理,以及确认与验证等部分。,90,1.4.2,软件工程的标准化,2,软件工程标准的层次,(,1,)国际标准,由国际联合机构制定和公布,提供各国参考的标准。,国际标准化组织(,ISO,),在业界有着广泛的代表性和权威性,它所公布的标准在世界范围有较大的影响。,ISO,建立了“计算机与信息处理技术委员会”,简称,ISO/TC97,,专门负责与计算机有关的标准化工作。这一标准通常冠有,ISO,字样。,91,1.4.2,软件工程的标准化,(,2,)国家标准,由政府或国家级的机构制定或批准,适用于全国范围的标准,例如:,GB,:中华人民共和国国家技术监督局公布实施的标准,简称“国标”。,ANSI,:美国
38、国家标准协会。,FIPS,(,NBS,):美国商务部国家标准局联邦信息处理标准。,BS,:英国国家标准。,DIN,:德国标准协会。,JIS,:日本工业标准。,92,1.4.2,软件工程的标准化,(,3,),行业标准,由行业机构、学术团体或国防机构制定,适用于某个业务领域的标准。例如:,IEEE,:美国电气与电子工程师学会。有个软件标准分技术委员会,负责软件标准化活动。,GJB,:中华人民共和国国家军用标准。适合于国防部门和军队使用的标准。,DOD_STD,:美国国防部标准,适用于美国国防部门。,MIL_S,:美国军用标准,适用于美军内部。,93,1.4.2,软件工程的标准化,(,4,),企业规
39、范和项目规范,一些大型企业或公司,由于软件工程工作的需要,制定适用于本部门的规范。,有时,软件开发项目组织会针对一些特定的项目制定、为该项目专用的软件工程规范。,94,1.4.2,软件工程的标准化,3,中国的软件标准,从,1983,年起,我国已陆续制定和发布了,20,多项国家标准。分为三类。,(,1,)基础标准,基础标准主要是描述软件工程的一些概念、术语等。,常见的基础标准:软件工程术语、软件生命周期过程、软件工程标准分类法、程序构造及其表示法的约定、计算机系统配置图符号及其约定、软件开发规范、软件维护指南等。,95,1.4.2,软件工程的标准化,(,2,)文档标准,文档标准主要是描述软件开发
40、过程中产生的一些文档。,常见的文档标准:,计算机软件文档编制规范,、,软件文档管理指南,等。,96,1.4.2,软件工程的标准化,(,3,)管理标准,管理标准主要是描述软件开发过程中用来控制软件质量等的一些文档。,常见的文档标准:计算机软件配置管理计划规范、计算机软件质量保证计划规范、计算机软件可靠性和可维护性管理等。,97,1.4.2,软件工程的标准化,4.,ISO 9000,标准及软件质量认证,ISO 9000,国际标准发源于欧洲经济共同体,已有,70,多个国家在企业中采用和实施这一系列标准。我国发布了与其相应的质量管理国家标准系列,GB/T 19000,。,ISO 9000,系列标准适用
41、领域广阔,涵盖硬件、软件、流程性材料和服务等。,98,1.4.2,软件工程的标准化,4.,ISO 9000,标准及软件质量认证,(,1,)强调质量并非在产品检验中得到,而是形成于生产的全过程。,(,2,)为把握产品的质量,,ISO 9000-3,要求“必须使影响产品质量的全部因素在生产全过程中始终处于受控状态”。,(,3,),ISO 9000,标准要求证实“企业具有持续提供符合要求产品的能力”。,(,4,),ISO 9000,标准强调“质量管理必须坚持进行质量改进”。,99,1.4.3,软件工程文档编写,1,软件文档,文档是指某种数据媒体和其中所记录的数据。它具有永久性。,在软件工程中,会产生
42、和使用大量的信息。文档常常用来表示对软件生存期中的活动、需求、过程或结果等信息。,软件文档是软件开发规范的体现。,100,1.4.3,软件工程文档编写,2,软件文档的作用,(,1,)提高软件开发过程的可见度,可以把开发过程中发生的事件以某种可阅读的形式记录在文档中。作为检查软件开发进度和开发质量的依据,实现对软件开发的过程管理。,101,1.4.3,软件工程文档编写,(,2,)提高开发效率,对各个阶段的工作进行周密思考。在开发早期发现错误和不一致性,便于及时加以纠正。同时记录开发过程中有关信息,便于协调以后的软件开发、使用和维护。,102,1.4.3,软件工程文档编写,(,3,)提供运行、维护
43、和培训相关信息,便于管理人员、开发人员、用户之间的协作、交流和了解。使软件开发活动更科学、更有成效。便于用户了解软件的功能、性能等各项指标。,103,1.4.3,软件工程文档编写,3,软件文档的分类,国家标准局在,1988,年,1,月发布了,计算机软件开发规范,、,软件产品开发文件编制指南,等,,2006,年重新修订发布了,计算机软件文档编制规范,。,按照文档产生和使用的范围,软件文档大致可分为三类:开发文档、管理文档、用户文档。,104,1.4.3,软件工程文档编写,3,软件文档的分类,(,1,)开发文档,指的是开发过程中形成的技术文档,包括:,软件需求说明书、数据要求说明书、概要设计说明书
44、、详细设计说明书、可行性研究报告,等。,(,2,)管理文档,指的是控制项目进度和质量的文档,包括:,项目开发计划、测试计划、测试报告、开发进度月报、项目开发总结,等。,(,3,)用户文档,指的是便于用户使用的文档,包括:,用户手册、操作手册、维护修改建议、软件需求说明书,等。,105,1.4.4,软件知识产权及道德规范,1,软件知识产权,知识产权就是人的智力劳动成果所依法享有的权利,是一种,无形财产,。包括两大部分:,工业产权和版权,。,工业产权,是指涉及工业领域的创造性智力劳动成果享有的专有权利,是知识产权的主要部分。包括专利权、商标权等;,版权,也称著作权,是指作者对其创作的作品依法享有的
45、专有权利,包括发表权、署名权、修改权等。,106,1.4.4,软件知识产权及道德规范,1,软件知识产权,计算机软件与一般知识产品相比,具有更为突出的知识密集和智力密集的特点,而且难开发、易复制。,中华人民共和国著作权法,、,计算机软件保护条例,、,计算机软件登记办法,和,实施国际版权条约的规定,等构成了我国软件知识产权保护的法律体系。,107,1.4.4,软件知识产权及道德规范,2,软件著作权,著作权人可以根据,计算机软件著作权登记办法,申请著作权注册、登记,由登记机构发放有关登记证明文件。,计算机软件著作权登记程序如下:,(,1,)著作权登记申请。,(,2,)软件著作权登记受理。,(,3,)
46、软件著作权登记申请的审查。,(,4,)软件著作权登记注册。,(,5,)软件著作权登记的异议与复审。,108,1.4.4,软件知识产权及道德规范,2,软件著作权,根据,计算机软件保护条例,,软件著作权人享有以下五项权利:,(,1,)发表权,即决定软件是否公之于众的权利。,(,2,)开发者身份权,即表明开发者身份的权利以及在其软件上署名的权利。,(,3,)使用权,即在不损害社会公共利益的前提下,以复制、发行、修改、翻译、注释等方式使用其软件的权利。,(,4,)使用许可权和获得报酬权,即许可他人以第(,3,)项中部分或全部方式使用其软件的权利和获得报酬的权利。,(,5,)转让权,即向他人转让由第(,
47、3,)和(,4,)规定的使用权和使用许可的权利。,109,1.4.4,软件知识产权及道德规范,3,软件工程师职业道德规范,职业道德就是指从事一定职业的人,在工作或劳动中所应遵循的、与其职业活动紧密联系的道德规范的总和。,我国职业道德的主要规范:“爱岗敬业、诚实守信、办事公道、服务群众、奉献社会”。,110,1.4.4,软件知识产权及道德规范,3,软件工程师职业道德规范,有关机构制定的行为准则:,关于科技工作者行为准则的若干意见,、,科技工作者科学道德规范,等文件。,软件工程师作为一种新型的职业,有许多特殊性,例如,从业者主要是年轻人,其智力水平和技术水平较高,但社会经历较少,易偏激等。,111
48、,1.4.4,软件知识产权及道德规范,3,软件工程师职业道德规范,IEEE,和美国计算机协会(,ACM,)成立的联合委员会制订的“软件工程师道德与职业行为规范”对软件工程师的职业道德作了较全面的阐述。,112,1.4.4,软件知识产权及道德规范,准则,1,:项目和产品,(,1,)保证项目能满足用户的需求,并得到客户的认可。,(,2,)对从事的项目应保证有良好的管理、方法和质量措施,有切合实际的预算。,(,3,)努力辨别和阐明与项目相关的道德、经济、文化、法律和环境等问题。,(,4,)努力使项目遵循最适合当前工作的行业标准,。,总体来讲,软件工程师职业道德规范包括以下,8,个方面的内容:,113
49、,1.4.4,软件知识产权及道德规范,准则,2,:社会和公众,(,1,)应对社会和公众有强烈的责任感,坚持社会和公众的安全和利益高于一切,按照与公众的安全、健康和福利相一致的方式发挥作用。,(,2,)与软件或相关文档有关的所有陈述都要公正的诚实,对于有理由认为对社会和公众构成危险的软件或文档资料等要向有关人士或机构报告。,(,3,)开发软件时要尽可能地考虑和照顾到各种不同情况,尽力开发尊重多样性的软件。,(,4,)应以能将职业技能奉献社会和公众而感到自豪。,114,1.4.4,软件知识产权及道德规范,准则,3,:判断,(,1,)对于要评价的软件或文档资料,应保持职业的客观性。,(,2,)要向有
50、关方面公开那些不能合理地避免或避开的利益冲突。,(,3,)不从事不恰当或不合理的经济活动,以保护自己的声誉。,(,4,)以支持和维护人的价值来调和所有的技术判断。,115,1.4.4,软件知识产权及道德规范,准则,4,:客户和雇主,(,1,)只在能力范围内提供服务,应避免盲目承担客户或雇主的项目。,(,2,)对项目存在的问题,应及时向客户或雇主报告。,(,3,)对在工作中获得的客户或雇主的非公开信息应该保密,保证所依据的任何文档资料都获得授权人的批准。,(,4,)不接受对其雇主工作不利的其他工作。,116,1.4.4,软件知识产权及道德规范,准则,5,:管理,(,1,)要求雇员遵守各种标准和雇
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100