《《软件工程原理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件工程原理》PPT课件.ppt(39页珍藏版)》请在三一办公上搜索。
1、软 件 工 程 原 理,方 裕,参考书目:,1.软件工程实践者的研究方法 Roger Pressman 中译本:机械工业出版社2.软件工程 齐治昌等编,高等教育出版社3.软件工程 杨文龙等编,电子工业出版社,第一章 绪 论,1 软件1.程序:计算机指令或语句的有序集合。体现某一个完整的算法 有确定性的运算结果2.软件:彼此相关的程序集合与文档的总称3.软件的特性(1)外在特性:呈现语言特性,主要表现在功能与界面(2)内在特性:高效性、可理解性、可维护性、可移植性,归结为结构特征,第一章 绪 论,4.软件的分类 系统软件:着眼于系统资源的管理,包括硬资源和软资源,主要目的是使得用户可以高效、公平
2、、友好地使用资源。要求:运行效率高、占用资源省、抽象程度好。支撑软件:着眼于向软件开发人员提供开发支持,以提高开发效率、保证开发质量。要求:配套、跨平台、适应性。应用软件:解决特定的应用问题。要求:方便、领域知识和模型完整、正确。,第一章 绪 论,地理信息系统软件:一类用来获取、存储、处理、分析、表现和在不同用户、不同系统和不同地点之间传输数字化的空间数据的计算机应用软件。地理信息系统的体系Geographical Information System:Geographical Information Science Geographical Information Software Geog
3、raphical Information Service,第一章 绪 论,GIS软件的层次体系:,GIS 基 础 软 件 平 台,GIS 行 业 应 用 平 台,GIS 行 业 应 用 平 台,GIS应用软件系统,GIS应用软件系统,GIS应用软件系统,GIS应用软件系统,第一章 绪 论,5.可重用软件 可重用软件又称软件构件,是一类相对特殊的软件。它通常是将软件开发过程中常用的一些功能模块加以提炼和抽象,将使用的数据结构与操作封装起来,形成软件构件,“嵌入”应用程序中使用。从而提高开发效率,减少错误。条件:面向对象的设计技术 要求:功能明确、接口和规范统一、必须绝对可靠。问题:语义检索机制难
4、以实现,第一章 绪 论,6.软件的发展历程 初级阶段(1940年代中期50年代后期)特点:规模小、应用面窄、手编程序为主、系统软件缺乏、基本没有软件工具。开发方式:个体手工业,个人开发、个人使用、个人维护。理论:十分缺乏理论指导,主要是凭开发人员的经验、直觉和天赋。技术:能工巧匠型,以个人经验和技巧为主,缺乏标准。,第一章 绪 论,发展阶段(1960年代初期70年代中后期)特点:软件分类日益明确,规模迅速扩大,应用范围大大拓广,系统软件功能日益增强,软件工具相对缺乏。开发方式:向手工作坊式过渡,专业分工开始出现,但不够明确。理论:形式语言理论基本成熟,并行理论走向成熟,软件形式化理论开始出现,
5、软件结构理论有所发展。技术:集中在程序设计单项技术的发展,出现了不少行之有效的编程、调试和软件测试技术。,第一章 绪 论,工程阶段(1980年代初期)特点:软件规模更加宏大,系统软件和工具种类日益繁多,应用范围深入社会各个角落,特别是网络和Internet的出现,开始改变人类的生活方式。开发方式:工程化生产到大规模软件工厂。理论:各种理论日益发展,软件开发和程序设计方法学推陈出新,程序证明公理系统日益完备。,第一章 绪 论,技术:结构化设计技术、原型技术、面向对象技术、软件重用技术广泛使用,形式化技术已经开始走向部分实用。趋势:软件生产逐步向工业化生产靠拢。但是软件过程问题的研究仍然进展不大。
6、问题:软件危机的基本特征并没有有效地得到改善,软件生产自动化问题仍然举步维艰。软件发展与硬件发展的步伐仍然不能不能同步。,第一章 绪 论,7.软件设计的特点 软件的各种指标发展与提升彼此存在实质性的矛盾和冲突。大型软件通常基于特定的硬件。对于特定的功能,并没有一种“唯一”的解决办法。软件的错误往往通过程序的运行才能发现。开发软件需要“创意”,“创意”的管理难有统一的尺度,管理困难。开发软件的过程不是孤立的,与硬件和其它软件关系密切,第一章 绪 论,功能往往不是软件开发的主要困难,运行环境才是更难确定的。大型软件开发是一种遵循多种原则的智力密集性活动。软件不会“用旧”和磨损,但将在使用过程中不断
7、改变。软件的可用性涉及许多人文方面的因素,度量困难。软件工作量的估计与众多因素有关。软件开发过程是一个充满回朔的过程。,第一章 绪 论,2 软件工程的发展1.软件工程的由来 目标:提高软件开发的效率 提高软件的质量 降低软件开发成本 软件危机:进度常延缓、成本难控制、质量无保证。原因:大型软件巨大的复杂性,人们对如此大的系统的复杂性把握程度不够 NATO科技委员会会议 1968,第一章 绪 论,2.定义 软件工程是一门研究软件开发的原则、方法、管理的计算机软件学科分支,试图运用系统的、规范的和定量化的方法来规划、开发、维护和运行软件,借以提高开发效率、降低成本。对象:大型软件的开发过程 方法:
8、定性和定量相结合 特点:实践性强、灵活性强 原则:全面质量管理,系统科学 关键:分解复杂性,权衡和折中,第一章 绪 论,学术观点:从软件计划、开发、维护等方面综合考虑,总结规律,建立科学概念,制定生产规范,研究实用技术,形成科学体系。实践观点:以软件工程学的理论为指导,按照其原则、方法进行组织与管理,采用其技术进行工业化软件生产。常见的几种错误认识:开发软件就是编程序;进度落后可以通过增加人员的方法来解决;通过加强测试,就可以保证软件没有错误;只要保证正确的输入能够产生正确的结果 就是高质量的软件。,第一章 绪 论,3.基本出发点:分解复杂性,借鉴生产流水线的组织思路,将复杂的生产过程分解为简
9、单工步的集合。使用工具,提高每个工步的生产效率,推行全过程质量管理,保证软件产品的质量。4.不同的认识:渐进式:通过非形式化的、逐步改善的方式,达到最终解决问题的目的。革命式:通过形式化的方法,彻底解决问题。“软件工程是末日学科”Dijkstra,第一章 绪 论,5.问题的症结 计算机系统的几大要素:硬件、软件、数据、应用模型、人,其中模型处于主导地位,最关键的要素是人。软件开发过程是一个不断决策、充满回朔的过程,有很强的不确定性和人为性。大型计算机程序是一个高度复杂、高度形式化的计算机运行过程表示。但是,现有的形式化表示手段不是表达能力不够,就是过于复杂不能被普遍接受。工具只能解决生产形式和
10、组织形式,不能解决创意。,第一章 绪 论,6.发展历程 19681970年代中后期:面向软件设计的单项技术,试图通过单项技术突破来达到克服软件危机的目的,涌现出许多有实际意义的技术。1970年代中期1980年代初期:开始注意软件生命全周期的质量管理,认识到软件结构对软件质量的重要性,着重流水线式划分阶段,强调结构分析和结构设计。1980年代初期1980年代中后期:认识到软件过程的回朔特点,强调用户及早介入的重要性,快速原型设计盛行。,第一章 绪 论,1980年代后期1990年代中期:认识到软件重用的重要性,出现理论和技术的突破,面向对象方法开始试用。1990年代中后期:面向对象设计工具大量出现
11、,组件设计方法学和跨平台设计方法与技术走向成熟。结论:软件工程理论和技术的不断发展,提高了软件开发的管理水平和技术水平。但是,与社会日益增长的需求相比,这种提高并不能与之同步。因此,关于软件工程的研究将会继续,关于软件工程的争论也同样会继续。,第一章 绪 论,3 计算机系统工程1.系统的特点 计算机系统工程具有一切系统工程的所有特点,包括:集合性:系统必须有两个以上的元素组成。相关性:系统的元素之间必须是相互关联的,它们既有独立的一面,又有相互制约的一面。整体性:系统的各个元素必须服从于同一种组织原则,构成一个整体,资源共享。,第一章 绪 论,目的性:系统的组织必须服从于一个目标,在这个目标的
12、支配下,对各种方面进行权衡和折中。环境适应性:系统不应该是僵死的,应该可以适应环境的变化。构造系统,必须考虑所有的因素,其中包括内、外部条件,系统目标和现有手段,统筹规划,权衡利弊,优化设计,以尽可能小的代价达到预期目标。计算机系统的资源是可以通过软件实现相互转化的,因此软件工程不只单纯地考虑系统的软件目标,而且要与硬件工程结合,求得最理想的整体效果。,第一章 绪 论,2.计算机系统工程,第一章 绪 论,折衷的原则:商业(经济)考虑技术分析建设估价人员条件环境界面法律考虑据此确定软硬件的关系,即硬件的规模和软件的功能范围,即软硬件的分工。,第一章 绪 论,硬件考虑的问题:系统配置,包括网络的逻
13、辑结构 信息量的估算以及使用频度 通用性和开放性问题 硬件运行环境问题软件考虑的问题:系统软件的支持 软件技术与工具 软件开发人员素质 工程化问题,第一章 绪 论,3.硬件工程 计算机硬件应用的分类 信息处理 过程控制和实时应用 嵌入智能 硬件工程过程 系统定义和功能分配 设备选型和采购 设备安装和系统调试 系统集成,第一章 绪 论,4.GIS系统工程,系统分析和定义,硬件 数据 软件,硬件工程,软件工程,概 念,折衷,数据工程,第一章 绪 论,5.数据工程 考虑的问题:根据应用要求,选择最合适的比例尺 根据应用要求,考虑使用的空间数据类型 数据工程过程:选择合适的对象购买数据,必要时进行修测
14、和其他手段的工程测量 整理和加工属性数据 建立空间数据库,第一章 绪 论,3 软件过程模型1.瀑布模型 基本思想:将复杂的软件开发过程线性化,划分成几个前后衔接的阶段。为了尽可能避免跨阶段的回朔,强调每一阶段结束时的复审。技术体现:结构化分析、结构化设计。问题:容许间接的回朔,可能使开发过程混 乱,不同小组可能产生等待;用户难以清楚地给出需求,但模型要 求如此;用户参与推迟;,第一章 绪 论,软件定义 软件设计 程序编码 软件集成 软件测试 软件发布,第一章 绪 论,2.原型开发模型 基本思想:提倡用户及早参与。由于用户很难在一开始就清楚地描述系统的需求,那么尽早向用户演示一个粗糙的可运行的系
15、统原型,请用户进行挑剔,逐步改善。种类:抛弃型:仅仅用来确认用户的需求,原型用来展示系统的功能界面,供用户提出修改意见,多次反复后最终确认系统的功能,然后按照瀑布模型进行实际开发。,第一章 绪 论,渐进型:第一个原型就是按照实际系统的模式(实际的实现功能)构造,在用户反复要求修改过程中形成一系列原型,最后一个用户满意的原型即为软件产品。技术体现:快速原型技术。问题:为了尽快向用户提供原型,可能会忽 视软件内在特性的提高,例如可移植 性、可理解性、可维护性等。为了尽快向用户提供下一代原型,可 能会放松质量管理,例如,算法的效 率、编程规程等等,降低软件质量。,第一章 绪 论,3.螺旋模型 基本思
16、想:综合瀑布模型和原型开发的优点,实现软件的增量开发。定义了四个主要的活动:计划(确定目标、可选方案和限制)、风险分析(分析可选方案、确定并解决风险)、工程(开发下一级产品)、用户评价(了解用户的评价)。沿着螺旋的方向,建立起越来越完整的系统模型。问题:要求有专门的风险评价技术,如果不能发现主要的风险,将会出现问题。,第一章 绪 论,4.四代技术模型 四代技术:四代技术是以第四代语言为基础的软件开发技术。所谓第四代语言,是一类抽象程度更高的语言,它和普通的程序设计语言(第三代语言)不同,不是面向过程的,而是面向问题的。因此,第四代技术允许软件设计人员能够在较高层次上定义软件的某些特性,由第四代
17、语言工具自动生成可执行的代码。工具:数据库查询语言、报表生成工具、数据处理工具、图形工具、代码生成工具、屏幕定义工具等。,第一章 绪 论,基本思想:利用第四代语言及其工具的非过程特性,提高编码阶段的抽象层次,从而提高编程速度,节省时间。此外,争取降低开发的复杂性。同时,开发出来的程序相对而言比较容易维护。限制:必须有数据库的支持;需求分析应该更加充分;对程序开发人员的要求比较高;测试工作人员必须设计更复杂的测试用例。,第一章 绪 论,模型过程:需求分析 设计策略确定 4GL实现 测试,第一章 绪 论,问题:目前4GL的应用领域较窄,主要限于事务处理领域;由4GL语言生成的代码执行效率普遍不高,大部分工具是解释执行的;目前4GL工具使用不够方便,并不比使用程序设计语言更容易;实际上,4GL的表达能力还比较有限,4GL工具也不能完全支持大型软件的开发,仍然需要传统的程序设计语言;,第一章 绪 论,5.面向对象的开发模型 基本思想:从客观存在的问题出发,分析软件系统的操作实体及其相互关系,以此组织软件开发,而不是从计算机实现的角度组织软件开发。将软件开发过程分为系统分析、类设计、系统构造和测试四个部分。技术:面向对象的分析、面向对象的设计 要求:面向对象的程序开发环境支持;应用范围:十分广泛。,