《软件工程 第1章:绪论.ppt》由会员分享,可在线阅读,更多相关《软件工程 第1章:绪论.ppt(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 软件工程软件工程Software Engineering2022年12月22日1广东工业大学计算机学院参考文献参考文献1.邵维忠邵维忠.面向对象的系统分析面向对象的系统分析.清华大学出版社清华大学出版社,982.邵维忠邵维忠.面向对象的系统设计面向对象的系统设计.清华大学出版社清华大学出版社,033.齐志昌齐志昌,软件工程软件工程,高等教育出版社,高等教育出版社,20044.李代平李代平,面向对象分析与设计面向对象分析与设计,冶金工业出版社冶金工业出版社,055.李代平,软件工程,冶金工业出版社,李代平,软件工程,冶金工业出版社,20022022/12/222广东工业大学计算机学院引论:引论
2、:1、我们已经学习过:计算机组成原理、数据结构、我们已经学习过:计算机组成原理、数据结构、操作系统、程序设计等课程。操作系统、程序设计等课程。2、是否具备完成一般软件目标能力呢?例如:、是否具备完成一般软件目标能力呢?例如:编编写计算写计算y=sin(x)的源码;的源码;手机芯片操作系统手机芯片操作系统(COS)设计;设计;大学课表编制系统。等等。大学课表编制系统。等等。3、要达到完成上述目标,我们仅有计算机的基础技、要达到完成上述目标,我们仅有计算机的基础技术是不行的。术是不行的。4、一般情况下,一个软件的完成,除了要掌握计算、一般情况下,一个软件的完成,除了要掌握计算机的基础技术外,还要有
3、数学、物理、电子技术等机的基础技术外,还要有数学、物理、电子技术等基础科学与领域知识。基础科学与领域知识。2022/12/223广东工业大学计算机学院o5、有了上述技术还不够。还要有软件开发的专门技、有了上述技术还不够。还要有软件开发的专门技术。例如,我们要编写问题术。例如,我们要编写问题2中的程序时:中的程序时:o我们发现要知道他的设计是怎样的;我们发现要知道他的设计是怎样的;o当设计该问题时当设计该问题时,我们发现对该问题要进行分析。我们发现对该问题要进行分析。o我们求解该问题的程序对吗?我们求解该问题的程序对吗?o如果软件开发周期比较长,如何应付开发对象的变如果软件开发周期比较长,如何应
4、付开发对象的变化。化。o参加的人员多的时候。对参加人员的分工、布局参加的人员多的时候。对参加人员的分工、布局o软件质量怎么管理?。软件质量怎么管理?。2022/12/224广东工业大学计算机学院o6、一个软件的开发用什么工具。、一个软件的开发用什么工具。o7、开发中如何与用户交流与合作,与同伴合作。、开发中如何与用户交流与合作,与同伴合作。o8、每一个软件技术人员都希望有软件项目开发。、每一个软件技术人员都希望有软件项目开发。那么是不是有投资就可以开发呢?这就是所谓的可那么是不是有投资就可以开发呢?这就是所谓的可行性问题。行性问题。o9、如何计算一个软件工程的费用与开发周期。、如何计算一个软件
5、工程的费用与开发周期。o10、工程中个人荣誉与利益。、工程中个人荣誉与利益。oo只有学习只有学习软件工程软件工程,才能回答上述问题。,才能回答上述问题。2022/12/225广东工业大学计算机学院主要内容主要内容o第一部分基础理论第一部分基础理论:o第第1章:绪论章:绪论o第第2章:基本理论章:基本理论o第第3章:可行性研究章:可行性研究o第二部分结构化方法第二部分结构化方法 :o第第4章:软件需求分析章:软件需求分析o第第5章:总体设计章:总体设计o第第6章:软件详细设计章:软件详细设计2022/12/226广东工业大学计算机学院o第三部分面向对象方法与实现第三部分面向对象方法与实现 :o第
6、第7章:面向对象方法概论章:面向对象方法概论o第第8章:模型章:模型o第第9章:对象分析章:对象分析o第第10章:关系分析章:关系分析o第第11章:面向对象设计原则章:面向对象设计原则o第第12章:对象设计章:对象设计o第第13章:接口设计章:接口设计o*第第14章:形式化方法章:形式化方法o第第15章:软件实现章:软件实现2022/12/227广东工业大学计算机学院o第四部分质量与工程管理第四部分质量与工程管理 :o第第16章:软件质量章:软件质量o第第17章:软件测试章:软件测试o第第18章:软件维护章:软件维护o第第19章:软件项目管理与计划章:软件项目管理与计划2022/12/228广
7、东工业大学计算机学院第第1章章 绪绪 论论 本章内容本章内容:1.1 软件概述软件概述1.1.1 什么是计算机软件什么是计算机软件1.1.2 软件的特点软件的特点1.1.3 软件的分类软件的分类1.1.4 软件的发展软件的发展1.1.5 软件危机软件危机2022/12/229广东工业大学计算机学院o1.2 软件工程软件工程o1.2.1 软件工程与方法学软件工程与方法学o1.2.2 软件工程的基本原理软件工程的基本原理o1.2.3 软件工程的目标软件工程的目标o1.2.4 软件工程的内容软件工程的内容o1.2.5 软件工程原则软件工程原则o1.2.6 软件工程面临的问题软件工程面临的问题 202
8、2/12/2210广东工业大学计算机学院o1.1 软件概述软件概述o硬件和软件费用比例的变化硬件和软件费用比例的变化2022/12/2211广东工业大学计算机学院o1.1.1 什么是计算机软件什么是计算机软件o计算机软件定义:计算机软件定义:o定义定义1-1:计算机运行所需要的各种程序和数据:计算机运行所需要的各种程序和数据的总称,包括操作系统、汇编程序、编译程序、数的总称,包括操作系统、汇编程序、编译程序、数据库、文字编辑及维护使用手册等。据库、文字编辑及维护使用手册等。o计算机语言:计算机语言:Basic、Visual Basic、C、FoxBase、PowerBuilder、Hyper
9、text及所及所见即所得工具(见即所得工具(FrontPage、Dreamweaver、Flash)。)。o文档:指用自然语言或者形式化语言所编写的文字文档:指用自然语言或者形式化语言所编写的文字资料和图表,用来描述程序的内容、组成、设计、资料和图表,用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法。功能规格、开发情况、测试结果及使用方法。2022/12/2212广东工业大学计算机学院o1.1.2 软件的特点软件的特点o(1)软件产品的生产主要是脑力劳动,还未完)软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,大部分产品是全摆脱手工开发方式,大部分产品是“定做定做
10、”的。的。o(2)软件是一种逻辑产品,它与物质产品有很)软件是一种逻辑产品,它与物质产品有很大的区别,它是脑力劳动的结晶。软件产品是大的区别,它是脑力劳动的结晶。软件产品是看不见摸不着的,因而具有无形性。它以程序看不见摸不着的,因而具有无形性。它以程序和文档的形式出现,保存在存储介质上,通过和文档的形式出现,保存在存储介质上,通过计算机的运行才能体现它的功能和作用。计算机的运行才能体现它的功能和作用。o(3)软件产品不会用坏,不存在磨损、消耗问)软件产品不会用坏,不存在磨损、消耗问题。题。2022/12/2213广东工业大学计算机学院o(4)软件产品的生产主要是研制。其成本)软件产品的生产主要
11、是研制。其成本主要体现在软件的开发和研制上,软件开发主要体现在软件的开发和研制上,软件开发研制完成后,通过复制就产生了大量软件产研制完成后,通过复制就产生了大量软件产品。品。o(5)软件费用不断增加,软件成本相当昂)软件费用不断增加,软件成本相当昂贵。软件的研制工作需要投入大量的、复杂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本非常高。的、高强度的脑力劳动,它的成本非常高。2022/12/2214广东工业大学计算机学院1.1.3 软件的分类软件的分类o按照控制层次,分为系统软件和应用软件两大类按照控制层次,分为系统软件和应用软件两大类 o1.系统软件系统软件o计算机系统
12、软件是计算机管理自身资源(如计算机系统软件是计算机管理自身资源(如CPU、内存空间、外存、外部设备等),提高计算机的使内存空间、外存、外部设备等),提高计算机的使用效率并为计算机用户提供各种服务的基础软件。用效率并为计算机用户提供各种服务的基础软件。o(1)操作系统。)操作系统。o(2)语言处理程序)语言处理程序 o(3)数据库管理系统)数据库管理系统 o(4)实用程序与软件工具)实用程序与软件工具 2022/12/2215广东工业大学计算机学院2.应用软件应用软件 o应用软件是计算机所应用程序的总称,主要应用软件是计算机所应用程序的总称,主要用于解决一些实际的应用问题。按业务、行用于解决一些
13、实际的应用问题。按业务、行业,应用软件也可分为:业,应用软件也可分为:o(1)个人计算机软件)个人计算机软件 o(2)科学和工程计算软件)科学和工程计算软件 o(3)实时软件)实时软件2022/12/2216广东工业大学计算机学院o(4)人工智能软件)人工智能软件 o(5)嵌入式软件)嵌入式软件o(6)事务处理软件)事务处理软件 o(7)工具软件)工具软件2022/12/2217广东工业大学计算机学院1.1.4 软件的发展软件的发展o自第一台计算机诞生以来,软件的生产就开自第一台计算机诞生以来,软件的生产就开始了。随着计算机技术的飞快发展和应用领始了。随着计算机技术的飞快发展和应用领域迅速拓宽
14、,自域迅速拓宽,自20世纪世纪60年代中期以后,年代中期以后,软件需求迅速增长,软件数量急剧膨胀。这软件需求迅速增长,软件数量急剧膨胀。这种增长导致了软件的发展,可以将软件生产种增长导致了软件的发展,可以将软件生产的发展划分为三个时代。的发展划分为三个时代。2022/12/2218广东工业大学计算机学院o1.程序设计时代(程序设计时代(19461956年)年)o在在这这一一时时期期,软软件件的的生生产产主主要要是是个个体体手手工工劳劳动动的的生生产产方方式式。程程序序设设计计者者使使用用机机器器语语言言、汇汇编编语语言言作作为为工工具具;开开发发程程序序的的方方法法上上主主要要是是追追求求编编
15、程程技技巧巧和和程程序序运运行行效效率率。在在程程序序设设计计中中还还没没有有注注意意其其他他辅辅助助作作用用,因因此此所所设设计计的的程程序序难难读读、难难懂懂、难难修修改改。这这个个时时期期软软件件特特征征是是只只有有程程序序、程程序序设设计计概概念念,不不重重视视程程序设计方法。序设计方法。2022/12/2219广东工业大学计算机学院o2.程序系统时代(程序系统时代(19561968年)年)o由由于于计计算算机机的的应应用用领领域域不不断断扩扩大大,软软件件的的需需求求也也不不断断增增长长,软软件件由由于于处处理理的的问问题题域域扩扩大大而而使使程程序序变变得得复复杂杂,设设计计者者不
16、不得得不不由由个个体体手手工工劳劳动动组组成成小小集集团团合合作作,形形成成作作坊坊式式生生产产方方式式小小集集团团合合作作生生产产的的程程序序系系统统时时代代。生生产产工工具具是是高高级级语语言言。开开发发方方法法仍仍旧旧靠靠个个人人技技巧巧。开开发发方方法法仍仍旧旧靠靠个个人人技技巧巧。由由于于大大的的程程序序需需要合作,在程序设计中开始提出结构化方法。要合作,在程序设计中开始提出结构化方法。2022/12/2220广东工业大学计算机学院o3.软件工程时代(软件工程时代(1968年至今)年至今)o1968年在联邦德国召开的国际会议上讨论年在联邦德国召开的国际会议上讨论软件危机的问题,在这次
17、会议上正式提出并软件危机的问题,在这次会议上正式提出并使用了使用了“软件工程软件工程”术语,新的工程科学就术语,新的工程科学就此诞生。软件工程时代的生产方式是采用工此诞生。软件工程时代的生产方式是采用工程的概念原理技术和方法。使用数据库、开程的概念原理技术和方法。使用数据库、开发工具、开发环境、网络、分布式、面向对发工具、开发环境、网络、分布式、面向对象技术来开发软件。象技术来开发软件。2022/12/2221广东工业大学计算机学院1.1.5 软件危机软件危机o所谓软件危机是指在计算机软件的开发和维所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这种护过程中所遇到的一系列
18、严重问题。这种“严重问题严重问题”不仅仅是不仅仅是“不能正常运行不能正常运行”。实。实际上几乎所有的软件都不同程度地存在问题。际上几乎所有的软件都不同程度地存在问题。软件危机主要是指如何开发软件,怎样满足软件危机主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断对软件日益增长的需求,如何维护数量不断膨胀的现有软件。膨胀的现有软件。2022/12/2222广东工业大学计算机学院o1.软件危机的表现软件危机的表现 o(1)对于软件开发的成本和进度的估计很)对于软件开发的成本和进度的估计很不准确。不准确。o由于缺乏软件开发的经验和软件开发数据的由于缺乏软件开发的经验和软件开发数据的
19、积累,使得开发工作的计划很难制定。主观积累,使得开发工作的计划很难制定。主观盲目制定的计划,执行起来和实际情况有很盲目制定的计划,执行起来和实际情况有很大差距,使得开发经费一再突破。由于对工大差距,使得开发经费一再突破。由于对工作量和开发难度估计不足,进度计划无法按作量和开发难度估计不足,进度计划无法按时完成,开发时间一再拖延。时完成,开发时间一再拖延。2022/12/2223广东工业大学计算机学院o(2)开发的软件产品不能完全满足用户要)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象求,用户对已完成的软件系统不满意的现象常常发生。常常发生。o一般情况下软件开发人员在开
20、发初期对用户一般情况下软件开发人员在开发初期对用户的要求了解不够明确,未能得到明确表达,的要求了解不够明确,未能得到明确表达,就开始着手编程。开发工作开始后,软件人就开始着手编程。开发工作开始后,软件人员和用户又未能及时交换意见,使得一些问员和用户又未能及时交换意见,使得一些问题不能及时解决,导致开发的软件产品不能题不能及时解决,导致开发的软件产品不能完全满足用户要求。完全满足用户要求。2022/12/2224广东工业大学计算机学院o(3)开发的软件可靠性差。)开发的软件可靠性差。o由于在开发过程中,没有确保软件质量的体由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的
21、、系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。这种不量差,在运行中暴露出大量的问题。这种不可靠的软件,轻则会影响系统正常工作,重可靠的软件,轻则会影响系统正常工作,重则会发生事故,造成生命财产的重大损失。则会发生事故,造成生命财产的重大损失。2022/12/2225广东工业大学计算机学院o(4)软件通常没有适当的文档。)软件通常没有适当的文档。o开发过程无完整、规范的文档,发现问题后开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。程序结构不好,运行进行杂乱无章的修改。程序结构不好,运
22、行时发现错误也很难修改,导致可维护性差。时发现错误也很难修改,导致可维护性差。2022/12/2226广东工业大学计算机学院o(5)软件的可维护性差。)软件的可维护性差。o由于开发过程没有统一的、公认的规范,软由于开发过程没有统一的、公认的规范,软件开发人员按各自的风格工作,各行其是。件开发人员按各自的风格工作,各行其是。很多程序中的错误非常难改,实际上不可能很多程序中的错误非常难改,实际上不可能使这些程序适应新的硬件环境,也不可能根使这些程序适应新的硬件环境,也不可能根据用户要求在程序中增加新功能。据用户要求在程序中增加新功能。2022/12/2227广东工业大学计算机学院o(6)软件开发生
23、产率提高的速度,远远跟)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。不上计算机应用普及深入的趋势。o软件产品软件产品“供不应求供不应求”的现象使人类不能充的现象使人类不能充分利用计算机硬件资源提供的巨大潜力。分利用计算机硬件资源提供的巨大潜力。2022/12/2228广东工业大学计算机学院o2.软件危机的产生软件危机的产生o软件发展第二阶段的末期,由于计算机硬件软件发展第二阶段的末期,由于计算机硬件技术的进步,计算机运行速度、容量和可靠技术的进步,计算机运行速度、容量和可靠性有显著的提高,生产成本有显著下降,为性有显著的提高,生产成本有显著下降,为计算机的广泛应用创造了条件。
24、一些复杂的、计算机的广泛应用创造了条件。一些复杂的、大型的软件开发项目提了出来。但是,软件大型的软件开发项目提了出来。但是,软件开发技术一直未能满足发展的要求。软件开开发技术一直未能满足发展的要求。软件开发中遇到的问题因找不到解决的办法,使问发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,导致了软题积累起来,形成了尖锐的矛盾,导致了软件危机。件危机。2022/12/2229广东工业大学计算机学院3.软件危机的原因软件危机的原因 在在软软件件的的开开发发和和维维护护过过程程中中存存在在着着这这么么多多的的问问题题,一一方方面面与与软软件件本本身身的的特特点点有有关关,另另一一
25、方方面面也也与与软软件件的的开开发发和和维维护护的的方方法法有有关关。造造成成上上述述软软件件危危机机的的原原因因概概括括起起来来有有以以下下几几方面:方面:2022/12/2230广东工业大学计算机学院o(1)软件的规模愈发庞大。)软件的规模愈发庞大。o随着计算机应用的日益广泛,需要开发的软随着计算机应用的日益广泛,需要开发的软件规模日益庞大,软件结构也日益复杂。有件规模日益庞大,软件结构也日益复杂。有人曾估计,软件设计与硬件设计相比,其逻人曾估计,软件设计与硬件设计相比,其逻辑量要多达辑量要多达10100倍。对于这种庞大规模倍。对于这种庞大规模的软件,其调用关系、接口信息复杂,数据的软件,
26、其调用关系、接口信息复杂,数据结构也复杂,这种复杂程度超过了人所能接结构也复杂,这种复杂程度超过了人所能接受的程度。受的程度。2022/12/2231广东工业大学计算机学院o(2)软件开发的管理困难。)软件开发的管理困难。o软件不同于硬件,它是计算机系统中的逻辑软件不同于硬件,它是计算机系统中的逻辑部件。在写出代码并在计算机上试运行前,部件。在写出代码并在计算机上试运行前,由于软件规模大,结构复杂,又具有无形性,由于软件规模大,结构复杂,又具有无形性,软件开发过程的进展情况较难度量,质量也软件开发过程的进展情况较难度量,质量也难评价。因此导致管理困难,进度控制困难,难评价。因此导致管理困难,进
27、度控制困难,质量控制困难,可靠性无法保证。质量控制困难,可靠性无法保证。2022/12/2232广东工业大学计算机学院o(3)软件本身的独有特点确实给开发和维)软件本身的独有特点确实给开发和维护造成一些客观困难,但是人们在长期的实护造成一些客观困难,但是人们在长期的实践中也积累了不少成功的经验。践中也积累了不少成功的经验。o如果坚持使用成功的经验和正确的方法,许如果坚持使用成功的经验和正确的方法,许多困难是可以克服的。但是相当多的软件开多困难是可以克服的。但是相当多的软件开发人员对于软件的开发和维护存在不少糊涂发人员对于软件的开发和维护存在不少糊涂的观念,实践中或多或少地采用错误的方法的观念,
28、实践中或多或少地采用错误的方法和技术。这可能是软件危机的主要原因。和技术。这可能是软件危机的主要原因。2022/12/2233广东工业大学计算机学院o(4)软件开发和维护中许多错误认识和方)软件开发和维护中许多错误认识和方法的形成可以归结与计算机发展早期软件开法的形成可以归结与计算机发展早期软件开发的个体化特点。发的个体化特点。o其主要表现在对软件需求分析的重要性认识其主要表现在对软件需求分析的重要性认识不够,错误地认为软件开发就是写程序并使不够,错误地认为软件开发就是写程序并使之运行,不重视软件需求分析与维护等工作。之运行,不重视软件需求分析与维护等工作。2022/12/2234广东工业大学
29、计算机学院o(5)软件开发技术落后。)软件开发技术落后。o在在20世纪世纪60年代,人们注重一些计算机理年代,人们注重一些计算机理论问题的研究,如编译原理、操作系统原理、论问题的研究,如编译原理、操作系统原理、数据库原理、人工智能原理、形式语言理论数据库原理、人工智能原理、形式语言理论等,不注重软件开发技术的研究,用户要求等,不注重软件开发技术的研究,用户要求的软件复杂性与软件技术解决复杂性的能力的软件复杂性与软件技术解决复杂性的能力不相适应,它们之间的差距越来越大。不相适应,它们之间的差距越来越大。2022/12/2235广东工业大学计算机学院o(6)生产方式落后。)生产方式落后。o软件仍然
30、采用个体手工方式开发,根据个人软件仍然采用个体手工方式开发,根据个人习惯爱好工作,无章可循,无规范可依据,习惯爱好工作,无章可循,无规范可依据,靠言传身教方式工作。靠言传身教方式工作。2022/12/2236广东工业大学计算机学院o(7)开发工具落后,生产率提高缓慢。)开发工具落后,生产率提高缓慢。o软件开发工具过于原始,没有出现高效率的软件开发工具过于原始,没有出现高效率的开发工具,因而软件生产率低下。在开发工具,因而软件生产率低下。在19601980年期间,计算机硬件的生产年期间,计算机硬件的生产由于采用计算机辅助设计、自动生产线等先由于采用计算机辅助设计、自动生产线等先进工具,使硬件生产
31、率提高了进工具,使硬件生产率提高了100万倍,而万倍,而软件生产率只提高了软件生产率只提高了2倍,相差十分悬殊。倍,相差十分悬殊。2022/12/2237广东工业大学计算机学院1.2 软件工程软件工程o1.软件工程的定义软件工程的定义 将系统的、规范的、可度量的工程化方法应将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述用于软件开发、运行和维护的全过程及上述方法的研究。方法的研究。2022/12/2238广东工业大学计算机学院o2.软件工程的性质软件工程的性质o软件工程要用工程科学中的观点来进行费用软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案
32、;要用管估算、制定进度、制定计划和方案;要用管理科学中的方法和原理进行软件生产的管理;理科学中的方法和原理进行软件生产的管理;要用数学的方法建立软件开发中各种模型和要用数学的方法建立软件开发中各种模型和各种算法,如可靠性模型,说明用户需求的各种算法,如可靠性模型,说明用户需求的形式化模型等。形式化模型等。2022/12/2239广东工业大学计算机学院1.2.1 软件工程与方法学软件工程与方法学o程序设计方法学和软件工程方法学是为了解程序设计方法学和软件工程方法学是为了解决软件危机问题而逐渐形成的学科。决软件危机问题而逐渐形成的学科。o“软件工程软件工程”(Software Engineerin
33、g)作为一个术语,是在)作为一个术语,是在1968年北大西洋公约组织的一次计算机学年北大西洋公约组织的一次计算机学术会议上,正式提出来的。这个会议专门讨术会议上,正式提出来的。这个会议专门讨论了软件危机问题。这次会议是软件发展史论了软件危机问题。这次会议是软件发展史上一个重要的里程碑。上一个重要的里程碑。2022/12/2240广东工业大学计算机学院o事实上,在软件工程和方法学形成以后,研事实上,在软件工程和方法学形成以后,研究工作一开始就分成了两种不同的角度和方究工作一开始就分成了两种不同的角度和方法,形成了两种紧密相关、相辅相成又各有法,形成了两种紧密相关、相辅相成又各有侧重的学科。侧重的
34、学科。o程序设计方法学:以数学理论为基础的理论程序设计方法学:以数学理论为基础的理论性学科。性学科。o软件工程学:以工程方法为基础的工程学科。软件工程学:以工程方法为基础的工程学科。2022/12/2241广东工业大学计算机学院o软件工程学与程序设计方法学的研究对象是软件工程学与程序设计方法学的研究对象是软件和程序。它们的根本目标是以较低的成软件和程序。它们的根本目标是以较低的成本开发高质量的软件和程序,具体包括:本开发高质量的软件和程序,具体包括:o(1)提高软件的质量与可靠性。)提高软件的质量与可靠性。o(2)提高软件的可维护性。)提高软件的可维护性。o(3)提高软件生产率,降低软件开发成
35、本)提高软件生产率,降低软件开发成本等。等。2022/12/2242广东工业大学计算机学院o软件工程学和程序设计方法学研究的途径和软件工程学和程序设计方法学研究的途径和侧重点有所差异,主要差异有:侧重点有所差异,主要差异有:o(1)研究方法和途径不同。)研究方法和途径不同。软件工程学应用的是工程方法;而程序设计软件工程学应用的是工程方法;而程序设计方法学依据的是数学方法。软件工程学注重方法学依据的是数学方法。软件工程学注重工程方法与工具研究,程序设计方法学则注工程方法与工具研究,程序设计方法学则注重算法与逻辑方法研究。重算法与逻辑方法研究。2022/12/2243广东工业大学计算机学院o(2)
36、研究对象有所侧重)研究对象有所侧重。软件工程的对象所指的软件,一般是指软件工程的对象所指的软件,一般是指“大大型程序型程序”,是一个系统;而程序设计方法学,是一个系统;而程序设计方法学的研究对象则侧重于一些较小的具体程序模的研究对象则侧重于一些较小的具体程序模块。块。o(3)软件工程学注重)软件工程学注重“宏观可用性宏观可用性”;程;程序设计方法学注重序设计方法学注重“微观正确性微观正确性”。2022/12/2244广东工业大学计算机学院o软件工程方法学是指应用计算机科学理论和软件工程方法学是指应用计算机科学理论和工程方法相结合的研究方法,研究软件生存工程方法相结合的研究方法,研究软件生存周期
37、一切活动(包括软件定义、分析、设计、周期一切活动(包括软件定义、分析、设计、编码、测试与正确性证明、维护与评价等)编码、测试与正确性证明、维护与评价等)的方法、工具和管理的学科。的方法、工具和管理的学科。2022/12/2245广东工业大学计算机学院o软件工程方法学既强调软件(一般指大型软软件工程方法学既强调软件(一般指大型软件)开发的工程特征,又强调软件设计方法件)开发的工程特征,又强调软件设计方法论的科学性、先进性。其基本内容包括:论的科学性、先进性。其基本内容包括:o(1)结构化理论与方法。)结构化理论与方法。o(2)模块技术与数据抽象。)模块技术与数据抽象。o(3)软件测试与程序正确性
38、证明。)软件测试与程序正确性证明。o(4)软件分析与设计方法、工具及环境。)软件分析与设计方法、工具及环境。o(5)软件工程管理与质量评价)软件工程管理与质量评价。2022/12/2246广东工业大学计算机学院1.2.2 软件工程的基本原理软件工程的基本原理o1983年年B.Weohm提提出出了了软软件件工工程程的的七七条条基基本本原原理理。这这七七条条基基本本原原理理是是保保证证软软件件产产品品质质量量和和开开发发效效率的最小集合,又是相当完备的。率的最小集合,又是相当完备的。2022/12/2247广东工业大学计算机学院o1.用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理o这
39、这一一条条是是吸吸取取前前人人的的教教训训而而提提出出来来的的。统统计计表表明明,50%以以上上的的失失败败项项目目是是由由于于计计划划不不周周而而造造成成的的。在在软软件件开开发发与与维维护护的的漫漫长长生生命命周周期期中中,需需要要完完成成许许多多性性质质各各异异的的工工作作。这这条条原原理理意意味味着着,应应该该把把软软件件生生命命周周期期分分成成若若干干阶阶段段,并并相相应应制制定定出出切切实实可可行行的的计计划划,然然后后严严格格按按照照计计划划对对软软件件的的开开发发和和维维护护进进行行管管理。理。2022/12/2248广东工业大学计算机学院o2.坚持进行阶段评审坚持进行阶段评审
40、o统计结果显示:大部分错误是在编码之前造统计结果显示:大部分错误是在编码之前造成的,大约占成的,大约占63%;错误发现得越晚,改;错误发现得越晚,改正它要付出的代价就越大,要差正它要付出的代价就越大,要差2到到3个数量个数量级。级。o因此,软件的质量保证工作不能等到编码结因此,软件的质量保证工作不能等到编码结束之后再进行,应坚持进行严格的阶段评审,束之后再进行,应坚持进行严格的阶段评审,以便尽早发现错误。以便尽早发现错误。2022/12/2249广东工业大学计算机学院o3.实行严格的产品控制实行严格的产品控制o在在软软件件开开发发的的过过程程中中不不应应随随意意改改变变需需求求,因因为为改改变
41、变一一项项需需求求需需要要付付出出较较高高的的代代价价。但但是是实实践践告告诉诉我我们们,需需求求的的改改动动往往往往是是不不可可避避免免的的。由由于于各各种种客客观观的的需需要要,不不能能禁禁止止用用户户提提出出改改变变需需求求的的要要求求,而而只只能能依依靠靠科科学学的的产产品品控控制制技技术术来来适适应应这这种种要要求求。也也就就是是要要采采用用变变动动控控制制,又又叫叫基基准准配配置置管管理理。当当需需求求变变动动时时,其其他他各各个个阶阶段段的的文文档档或或代代码码随随之之相相应应变变动动,以保证软件的一致性以保证软件的一致性。2022/12/2250广东工业大学计算机学院o4.采纳
42、现代程序设计技术采纳现代程序设计技术o从从提提出出软软件件工工程程的的概概念念开开始始,人人们们主主要要的的精精力力都都用用于于研研究究各各种种新新的的程程序序设设计计技技术术,20世世纪纪60年年代代的的结结构构化化软软件件开开发发技技术术,随随后后又又发发展展的的结结构构化化分分析析和和结结构构化化设设计计技技术术,已已成成为为大大多多数数人人认认为为的的先先进进程程序序设设计计技技术术。后后来来又又提提出出的的面面向向对对象象技技术术,从从第第一一、第第二二代代语语言言,到到第第四四代代语语言言,人人们们已已经经充充分分认认识识到到:方方法法大大于于气气力力。采采用用先先进进的的技技术术
43、即即可可以以提提高高软软件件开发的效率,又可以减少软件维护的成本。开发的效率,又可以减少软件维护的成本。2022/12/2251广东工业大学计算机学院o5.结果应能清楚地审查结果应能清楚地审查o软软件件产产品品不不同同于于一一般般的的物物理理产产品品,软软件件是是一一种种看看不不见见、摸摸不不着着的的逻逻辑辑产产品品。软软件件开开发发小小组组的的工工作作进进展展情情况况可可见见性性差差,难难于于评评价价和和管管理理。为为更更好好地地进进行行管管理理,应应根根据据软软件件开开发发的的总总目目标标及及完完成成期期限限,尽尽量量明明确确地地规规定定开开发发小小组组的的责责任任和和产产品品标标准准,从
44、从而而使使所所得得到到的的标标准准能清楚地审查。能清楚地审查。2022/12/2252广东工业大学计算机学院o6.开发小组的人员应少而精开发小组的人员应少而精o开发人员的素质和数量是影响软件质量和开开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。这一条基发效率的重要因素,应该少而精。这一条基于两点原因:高素质开发人员的效率比低素于两点原因:高素质开发人员的效率比低素质开发人员的效率要高几倍到几十倍,开发质开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少得多。工作中犯的错误也要少得多。o当开发小组为当开发小组为N人时,可能的通讯信道为人时,可能的通讯信道为N(N-1)
45、/2,可见随着人数,可见随着人数N的增大,通讯的增大,通讯开销将急剧增大。开销将急剧增大。2022/12/2253广东工业大学计算机学院o7.承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性o遵从上述前六条基本原理,就能够较好地实遵从上述前六条基本原理,就能够较好地实现软件的工程化生产。但是,它们只是对现现软件的工程化生产。但是,它们只是对现有经验的总结和归纳,并不能保证赶上技术有经验的总结和归纳,并不能保证赶上技术不断前进发展的步伐。不断前进发展的步伐。2022/12/2254广东工业大学计算机学院1.2.3 软件工程的目标软件工程的目标 o在给定成本、进度的前提下,开发出具
46、有可在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件追踪性和可互操作性并满足用户需求的软件产品。产品。2022/12/2255广东工业大学计算机学院o(1)可修改性()可修改性(modifiability)。)。o容许对系统进行修改而不增加原系统的复杂容许对系统进行修改而不增加原系统的复杂性。它支持软件的调试与维护,是一个难以性。它支持软件的调试与维护,是一个难以度量和难以达到的目标。度量和难以达到的目标。o(2)有
47、效性()有效性(efficiency)。)。o软件系统能最有效地利用计算机的时间资源软件系统能最有效地利用计算机的时间资源和空间资源。和空间资源。2022/12/2256广东工业大学计算机学院o(3)可靠性()可靠性(reliability)。)。o能够防止因概念、设计和结构等方面的不完能够防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力。当造成软件系统失效的能力。o(4)可理解性()可理解性(understandably)。)。o系统具有清晰的结构,能直接反映问题的需系统具有清晰的结构,能直接反映问题的需求
48、。可理解性有助于控制软件系统的复杂性,求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。并支持软件的维护、移植或重用。2022/12/2257广东工业大学计算机学院o(5)可维护性()可维护性(maintainability)。)。o软件产品交付用户使用后,能够对它进行修软件产品交付用户使用后,能够对它进行修改,以便改正潜伏的错误,改进性能和其他改,以便改正潜伏的错误,改进性能和其他属性,使软件产品适应环境的变化等等。属性,使软件产品适应环境的变化等等。o(6)可重用性()可重用性(reusebility)。)。o概念或功能相对独立的一个或一组相关模块概念或功能相对独立的一
49、个或一组相关模块定义为一个软部件。软部件可以在多种场合定义为一个软部件。软部件可以在多种场合应用的程度称为部件的可重用性。应用的程度称为部件的可重用性。2022/12/2258广东工业大学计算机学院o(7)可适应性()可适应性(adaptability)。)。o软件在不同的系统约束条件下,使用户需求软件在不同的系统约束条件下,使用户需求得到满足的难易程度。适应性强的软件应采得到满足的难易程度。适应性强的软件应采用广为流行的程序设计语言编码,在广为流用广为流行的程序设计语言编码,在广为流行的操作系统环境中运行,采用标准的术语行的操作系统环境中运行,采用标准的术语和格式书写文档。适应性强的软件较容
50、易推和格式书写文档。适应性强的软件较容易推广使用广使用。2022/12/2259广东工业大学计算机学院o(8)可移植性()可移植性(portability)。)。o软件从一个计算机系统或环境搬到另一个计软件从一个计算机系统或环境搬到另一个计算机系统或环境的难易程度。为了获得比较算机系统或环境的难易程度。为了获得比较高的可移植性,在软件设计过程中通常采用高的可移植性,在软件设计过程中通常采用通用的程序设计语言和运行支撑环境。通用的程序设计语言和运行支撑环境。2022/12/2260广东工业大学计算机学院o(9)可追踪性()可追踪性(tracebility)。)。o根据软件需求对软件设计、程序进行