您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第1讲 软件与软件工程
1第一讲软件与软件工程2•提纲1.什么是软件1.软件的发展2.软件的特点3.软件的分类4.软件语言2.软件工程3•什么是软件?教材P1•软件指计算机系统中的程序及其文档–程序是计算任务的处理对象和处理规则的描述•计算任务:任何以计算机为处理工具的任务•处理对象:数据(如数据、文字、图形、图像、声音等,它们只是表示,而无含义)或信息(数据及有关的含义)•处理规则一般指处理的动作和步骤。–文档是为了便于了解程序所需的阐明性资料,文档一般是给人看的提示:以后概念可在书上划下来,以便考前复习4•软件发展阶段教材P2-3•程序设计阶段——50至60年代•程序系统阶段——60至70年代•软件工程阶段——70年代以后5•程序设计阶段——50至60年代•从计算机问世到实用的高级程序语言出现前•存储容量比较小,运算速度比较慢•采用个体工作方式,用低级语言编写程序•应用领域主要是以数值数据处理为主的科学计算,其特点是输入、输出量较小•衡量程序质量的标准主要是功效,即运行时间省、占用内存小(1981年,比尔·盖茨声称,个人电脑的内存只需要640KB即可,没有人需要超过这个数字)•主要研究内容是科学计算程序、服务性程序和程序库,研究对象是顺序程序6•程序系统阶段——60至70年代•从实用的高级程序语言出现到软件工程出现前•应用领域包括数据处理(非数值数据),其特点是计算量不大,但输入、输出量却较大•高速主机与低速外围设备的矛盾突出,出现了操作系统、并发程序、数据库及其管理系统•20世纪60年代初提出了软件一词,开始认识到文档的重要性•研究高级程序设计语言、编译程序、操作系统、支持编程的工具及其各种应用软件•工作方式逐步从个体方式转向合作方式•出现软件危机7•软件工程阶段——70年代以后•从软件工程出现到现在•硬件向巨型机和微型机两个方向发展,出现了计算机网络,软件方面提出了软件工程,出现了“计算机辅助软件工程(CASE)”•计算机的应用领域渗透到各个业务领域,出现了嵌入式应用,其特点是受制于它所嵌入的宿主系统•开发方式逐渐由个体合作转向工程方式•软件工程方面的研究主要包括如今开发模型、软件开发方法及技术、软件工具与环境、软件过程、软件自动化系统等等•软件方面研究以智能化、自动化、集成化、并行化、以及自然化为标志的软件开发新技术8•软件的特点教材P3•软件是一种逻辑实体,而不是具体的物理实体,开发人员智力的体现•软件的生产与硬件不同,在它的开发过程中没有明显的制造过程•在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题910•软件的其他特点•软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性•软件的开发至今尚未摆脱手工艺的开发方式•软件本身是复杂的•实际问题的复杂性•程序逻辑结构的复杂性•软件成本相当昂贵–(参考下图)•相当多的软件工作涉及到社会因素1112•软件的分类•按软件的功能进行划分:•系统软件•操作系统•数据库管理系统•设备驱动程序•通信处理程序13•支撑软件•文本编辑程序•文件格式化程序•程序库系统•支持需求分析、设计、实现、测试和支持管理的软件14•应用软件•商业数据处理软件•工程与科学计算软件•计算机辅助设计/制造软件•系统仿真软件•智能产品嵌入软件•医疗、制药软件•事务管理、办公自动化软件•计算机辅助教学软件15•按软件规模进行划分:类别参加人员数研制期限源程序行数微型11~4周0.5k小型11~6月1k~2k中型2~51~2年5k~50k大型5~202~3年50k~100k甚大型100~10004~5年1M(=1000k)极大型2000~50005~10年1M~10M16•按软件工作方式划分:•实时处理软件•分时软件•交互式软件•批处理软件•按软件服务对象的范围划分:•项目软件•产品软件•按软件失效的影响进行划分:•高可靠性软件•一般可靠性软件17软件语言软件语言是用于书写计算机软件的语言。它主要包括:需求定义语言功能性语言设计性语言实现性语言(即程序设计语言)文档语言18需求定义语言--用来书写软件需求定义软件功能需求刻画软件“做什么”,还刻画诸如功能性限制、设计限制、环境描述、数据与通信规程及项目管理等功能性语言--用来书写软件功能规约软件功能规约是软件功能的严格而完整的陈述。通常它只刻画软件系统“做什么”的外部功能,而不涉及系统“如何做”的内部算法。19设计性语言--用来书写软件设计规约软件设计规约是软件设计的严格而完整的陈述。一方面,它是软件功能规约的算法性细化,刻画软件“如何做”的内部算法,另一方面,它是软件实现的依据。实现性语言--用来书写计算机程序实现性语言也称编程语言或程序设计语言程序设计语言可按语言的级别、对使用者的要求、应用范围、使用方式、成分性质等多种角度进行分类20程序设计语言可按语言的级别、对使用者的要求、应用范围、使用方式、成分性质等多种角度进行分类•按语言级别分:低级语言和高级语言低级语言是与特定计算机体系结构密切相关的程序设计语言,如机器语言、汇编语言。其特点是与机器有关,功效高,但使用复杂,开发费时,难维护。高级语言是不反映特定计算机体系结构的程序设计语言,它的表示方法比低级语言更接近于待解问题的表示方法。其特点是在一定程度上与具体机器无关,易学、易用、易维护。但高级语言程序经编译后产生的目标程序的功效往往较低。21•按用户要求分:过程式语言和非过程式语言过程式语言(procedurallanguage)是通过指明一列可执行的运算及运算次序来描述计算过程的程序设计语言。如FORTRAN、COBOL、C等。非过程式语言(nonprocedurallanguage)是不显式指明处理过程细节的程序设计语言。在这种语言中尽量引进各种抽象度较高的非过程性描述手段,以期做到在程序中增加“做什么”的描述成分,减少“如何做”的细节描述。如第四代语言(4GL)、函数式语言、逻辑式语言。22也可称:命令式语言和申述式语言命令式语言即过程式语言。申述式语言是着重描述要处理什么,而非描述如何处理的语言。申述式语言程序是关于问题解的约束陈述,这些约束迫使含于实现中的算法处理机制生成一个解或一组解。如函数式语言、逻辑式语言。23函数式语言(functionalprogramminglanguage)中函数是构造程序的基本成分,它提供一些设施用于构造更为复杂的函数。程序人员根据提出的问题去定义求解函数(即主程序),其中可能包含一些辅助函数。如Lisp语言。逻辑式语言(logicprogramminglanguage)的基本运算单位是谓词。谓词定义了变元间的逻辑关系。例如,Prolog语言。24文档语言•文档语言用来书写软件文档。计算机软件文档是计算机开发、维护和使用过程的档案资料和对软件本身的阐述性资料。通常用自然语言书写。25•软件危机SoftwareCrisis•1968年NATO会议•许多软件项目不能满足客户的要求•许多软件项目超出预算和时间安排26•1968年,北约在西德山涧小镇召开了一次学术会议,首次提出软件工程的概念,从而形成一门新兴的学科——软件工程学。•下面是这次会议的报告集,和一些珍贵的会议相片。27282930•软件危机的表现•对软件开发成本和进度的估计常常很不正确•用户对“已完成的”软件系统不满意的现象经常发生•软件产品的质量往往靠不住•软件常常是不可维护的•软件通常没有适当的文档资料•软件成本在计算机系统总成本中所占的比例逐渐上升•软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势31•软件危机的原因•软件是逻辑产品,开发进度、成本难以估计•缺乏或不完整、不一致的文档给维护带来困难•用户对软件需求的描述往往不够精确,有遗漏,有二义•软件开发人员对需求的理解与用户的本来愿望有差异•大型软件项目需多人协同完成,缺乏管理经验•开发人员不能有效地、独立自主地处理大型软件的全部关系•缺乏有力的方法学和工具的支持•软件项目的特殊性和人类智力的局限性32•克服软件危机的途径•消除错误的概念和做法•推广使用成功的开发技术和方法•使用软件工具和软件工程支持环境•加强软件管理33工程(汉语词典)•将自然科学的理论应用到具体工农业生产部门中形成的各学科的总称。如:水利工程、化学工程、土木建筑工程、遗传工程、系统工程——亦称“工程学”•用较大而复杂的设备来进行的工作。如:城市改建工程、京九铁路工程、菜蓝子工程34•软件工程的定义•FritzBauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法•IEEE1993:(1)把系统化的、规范化的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;(2)研究(1)中提到的途径35软件工程的框架•目标:生产具有正确性、可用性以及价格合宜的产品正确性反映软件产品实现相应功能规约的程度;可用性反映软件的基本结构、实现及其文档为用户可用的程度;价格合宜反映软件开发与运行的总代价满足用户要求的程度。36•过程:生产一个最终满足需求且达到工程目标的软件产品所需要的步骤软件工程过程包括:开发过程、运作过程、维护过程、管理过程、支持过程、获取过程、供应过程、剪裁过程等37•原则选取适宜的开发模型采用合适的设计方法提供高质量的工程支持重视软件工程的管理38重点总结•软件(程序+数据)•软件发展的三个阶段•软件的特点,区别硬件•软件工程的概念、框架39谢谢大家!
本文标题:第1讲 软件与软件工程
链接地址:https://www.777doc.com/doc-3307104 .html