




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程目的n了解软件开发工具的概念、理论基础、基本功能、发展现状与前景,以便能够在实际工作中正确地选择与使用软件开发工具n帮助大家了解和熟悉一些常见实用的软件工具,了解开发大型软件的基本过程n回顾总结以前所学的内容,进一步理解其在实际开发工作中的作用n为实际的软件开发工作做准备n培养具备基本的科学研究素质课程要求n熟练掌握课程内容n认真完成作业n上机实验第1章 绪论本章内容预备知识预备知识1.1软件开发工具的由来软件开发工具的由来1.2件开发工具的概念件开发工具的概念1.3软件开发工具的功能和性能软件开发工具的功能和性能1.4软件开发工具的类别软件开发工具的类别1.5开发软件的研究和应用开发软件
2、的研究和应用软件发展的几个阶段软件发展的几个阶段 n(1)机器语言阶段;使用0、1代码进行编程。n(2)汇编语言阶段;使用助记符来编写程序,由汇编程序汇编成机器码,编程工作量大大降低,但仍未摆脱对硬件的依赖。与此同时,操作系统的出现从另一方面改善了人们应用计算机的条件。n(3)高级语言阶段、高级语言突破了与机器指令一一对应的限制,大大提高了程序的可移植性。n(4)第四代语言阶段,人们希望机器能够自动地完成更多的工作,包括自动安排某些工作的顺序,而做到只要给机器下达做什么的命令,由机器自己去安排执行的顺序。n(5)利用通用软件作为辅助工具的阶段利用文字处理软件来编写文档,利用绘图软件来绘制流程图
3、等。n(6)专用软件开发工具阶段支持软件开发的某一个阶段或某一个环节。n(7)集成的软件开发工具阶段零散的、分散地支持各个工作阶段、各项具体工作的专用工具之间没有有机地联系起来,从而必然造成冲突与矛盾,以致抵消了使用工具带来的益处。这种情况导致了集成的软件开发工具的产生。软件开发工作的发展特点 n软件的规模越来越大,软件开发工作的内容也越来越复杂 n开发人员离物理的机器世界越来越远,离软件用户越来越近 n软件开发工作从以编码为中心向以需求分析和系统设计为中心转化 n软件开发工作从一次性的过程向不断循环、往复更新的过程发展 软件开发的过程n需求分析(提出初始要求,形成功能说明)n总体设计(包括软
4、件的模块设计、数据结构的设计、各部份的连接方式和信息交换的标准)n编写程序和编写文档(实现阶段)n测试和调试(包括模块的测试和整个软件的联调)n应用见效(提出评价与改进要求,进入下一版本的开发)软件开发的基本问题 n将软件从用户的理解转换为程序员的理解 n将软件从程序员的理解转换到计算机上的程序实现 大型软件开发中的困难 n保持一致性的问题(人员之间各部份间的协调配合) n全面测试(软件的复杂性只能用黑箱测试) n控制工作进度(软件的复杂性,测试修改难于按时完成) n文档与代码进行协调(代码常改,文档难改,代码容易与文档脱节) n版本更新 对软件开发过程的再认识 n从工作任务的角度分析: n需
5、求分析、总体设计、编制程序和文档、测试和联调 n从参与开发过程的角色分析: n项目负责人、系统分析设计人员、开发人员、用户、计算机软硬件 n从软件开发过程中的各阶段成果分析:n功能说明书、总体设计文件和各模块的设计任务书、软件和各类文档(包括使用说明、用户手册的等)、测试计划和测试报告软件开发方法的发展 n线型程序设计n结构化程序设计方法n软件工程n面向对象程序设计方法n组件化程序设计方法线形程序设计n早期的程序设计n源代码的重用性差n不能控制数据项的可见性结构化程序设计n诞生于60年代n设计思路是:自顶向下、逐步求精。n程序结构按功能划分为若干个基本模块 ,这些模块形成一个树状结构。模块化
6、实现的具体方法是使用子程序n三种基本结构n缺点是数据与过程相互独立软件工程的方法n强调两个方面:n工作步骤n交流标准面向对象程序设计n将数据和对数据的操作作为一个整体来 处理n按人们认识世界的方法和方式来分析和 解决问题面向对象程序设计n易于扩充、修改、维护n易于实现软件重用n扩充到OOA、OOD、ODBMS等方面,称为面向对象软件开发方法组件化程序设计n强调软件重用和高度的互操作性n将软件分成若干独立但相互之间有联系的组件,将这些组件组装成软件产品n组件化程序设计的核心:组件的生产和组件的装配组件化程序设计n关于组件n软件的基本量子,具有一定功能,可插用,可维护n软件开发中的可替换单元,封装
7、了设计决策,与其他组件结合组成更大的单元n具有特定功能,可跨越进程边界,实现网络、语言、应用程序、开发工具、操作系统的“即插即用”的独立对象n是任何可被分离出来的,具有标准化的可重用的公开接口的软件组件化程序设计n组件的特征n组件之间在二进制级别上集成和重用n独立地生产、获得和配置组件化程序设计n组件的接口n描述组件对外提供的服务,组件和组件之间、组件和客户之间同时通过接口进行交互n组件接口的稳定性n组件接口的“自我描述性”,描述标准IDL语言组件化程序设计n目前比较成熟的规范nCOM(Component Object Model)nCORBA(Common Objects Request B
8、roker Architecture)软件工程n软件工程是研究软件开发和软件管理的一门工程科学。n现代软件工程研究的内容: 序号 研究方面 具体内容 1软件开发模型 软件开发周期(瀑布模型、增量模型、原型模型、迭代模型) 2软件开发方法面向过程方法、面向对象、面向数据 3软件支持过程如CASE工具、北大青鸟、PowerDesigner 4软件管理过程 ISO9000、CMM 软件工程n软件 vs. 程序n面向过程的程序算法数据结构n面向对象的程序对象消息n面向组件的程序组件构架n软件 程序 数据 文档软件的生存周期与开发模型n生存周期与选择的开发模型有关n软件开发模型n瀑布模型n增量模型n迭代
9、模型n原型模型软件生存周期(一般说法)n立项(或签约)、下达任务书n需求分析n概要设计n详细设计n编码实现n软件测试n软件发布与实施n软件维护n版本更新或退役瀑布模型n软件在生存周期中不同的阶段,自上而下,互相衔接,逐级下落,具有固定的次序n适合于结构化面向过程的软件开发方法n特点n里程碑或基线驱动,或文档驱动n过程逆转性差或不可逆转瀑布模型n缺点:问题堆积n克服:严格的里程碑管理制度(微软) 阶段评审和不符合项的动态跟踪(CMM)n仍广泛使用的模型增量模型n用递增方式进行软件开发。软件作为一组增量部件,每次设计、实现、集成、测试和交付一块部件,直到所有部件全部实现为止。n软件系统本身模块化,
10、单个模块高内聚,模块之间低耦合,模块可组装拆卸增量模型n特点n任务或功能模块驱动,可分阶段提交n有多个任务单迭代模型n针对瀑布模型的缺点。采取循环的工作方式,每次循环使工作产品接近目标一次n多次执行各个开发工作流程,最终交付一系列逐步完善的实施成果。迭代模型n一次迭代n每次按顺序完成一系列工作流程n以次要里程碑(Minor Milestone)结束n需对迭代结果进行评估n迭代发布的产品n是开发过程最终产品的子集迭代模型n迭代生存周期4个阶段n初始阶段:确定系统的业务和项目的范围n精化阶段:分析问题域、细化产品定义、定义系统架构并建立基线n构建阶段:反复开发,完善产品n移交阶段:将产品交付用户,
11、安装、培训、交付、维护等迭代模型n面向对象的工具(如Rose)和UML比较适合迭代方法原型模型n在初步需求分析之后,马上向客户展现一个软件产品原型,根据客户试用意见不断修改原型,直到客户确认为止。n特点:原型驱动,需要有一个原型或原型的核心n快速原型法n缺点:不利于开发人员的创新软件工程n软件工程是研究软件开发和软件管理的一门工程科学。n现代软件工程研究的内容: 序号 研究方面 具体内容 1软件开发模型 软件开发周期(瀑布模型、增量模型、原型模型、迭代模型) 2软件开发方法面向过程方法、面向对象、面向数据 3软件支持过程如CASE工具、北大青鸟、PowerDesigner 4软件管理过程 IS
12、O9000、CMM 软件工程的三要素n软件工程的开发方法n支持开发方法的工具n软件管理过程软件工程的基本原理nB.W.Boehm 于1983年提出1.用分阶段的生存周期计划严格管理软件开发。阶段划分为计划、分析、设计、编程、测试和运行维护。 2.坚持实行阶段评审。上一阶段评审不通过,就不能进入下一阶段开发 3.实行严格的产品版本控制。 4.采用现代程序设计技术。 5.结果应能清楚地审查。因此对文档有严格要求。 6.开发小组的成员要少而精。 7.要不断地改进软件工程的技术和经验。 软件开发项目的管理 n项目管理的要素:质量、进度、费用、资源利用 n软件评价标准:正确性、易用性(界面友好)、效率、
13、可靠性、可维护性、与可重用性 n单个程序员的标准:了解程序设计的基本知识和技能、了解所涉及的应用领域、熟悉软件开发的技术与环境 软件开发项目的管理 n项目组对程序员的要求:严格限于本模块范围、严格按总体设计的要求、按统一规定存取公用数据、按统一规格命名标识符、按统一要求编写文档、保持程序风格的一致 n对软件开发项目组的评价(CMM模型):有严格成文的工作规范和文档标准、有严格的分工、有详细的工作进度表并得到严格执行 软件工程的三要素n软件工程的开发方法n支持开发方法的工具n软件管理过程软件工程的支持过程n软件工程的过程n指软件生存周期(Life Cycle)中的时间序列 。n例如可将一个软件的
14、生存周期划分为市场调研、立项、需求分析、策划、概要设计、详细设计、编程、单体测试、集成测试、运行和维护这几个过程 软件工程的支持过程n由支持软件生存周期各个阶段的生产工具所组成。生产工具诸如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具、开发环境(又称为CASE工具)。n软件开发环境,是指能够连续的支持多个开发阶段的CASE工具。 说明n本课程按软件工程各不同阶段来介绍需要的工具和实现的功能 n以实际工具中可能用到的为主,以微软、或容易获得的开源的工具为重点。 1.1软件开发工具的由来软件开发工具的由来n计算机语言的发展阶段:第一代:机器语言;第二代汇编语言;第三代:高级程序设
15、计语言;第四代:非过程化语言n非过程化语言的思想:人们希望机器能自动地完成更多的工作,包括自动安排某些工作顺序,二做到只要给机器下达需要做什么的命令,由机器自己去安排执行的顺序。软件危机软件危机n 软件危机(Software Crisis) 是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。 软件危机的主要表现:软件危机的主要表现: n 1. 对软件开发成本和进度的估计常常很不准确。 实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种
16、现象降低了开发组织的信誉。为赶进度和节约成本所采取的权宜之计往往又损害了软件产品的质量,从而不可避免地引起用户的不满。 n 2. 用户对“已完成的”软件系统不满意的现象经常发生。 软件开发人员常常在对用户需求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就仓促上阵匆忙着手编写程序。软件开发人员和用户之间的交流往往很不充分,“闭门造车”必然导致最终产品不符合用户实际需要。 n3. 软件产品的质量常常靠不住。 软件可靠性和质量保证的确切定量概念刚刚出现,软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都会导致软件产品发生质量问题。n4. 软件常常是不
17、可维护的。 程序中的错误很难改正,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需求在原有程序中增加新的功能。n5. 软件通常没有适当的文档资料。软件不仅是程序,还应该有一整套文档资料。这些文档资料是在软件开发过程中产生出来的,而且应该是“最新的”(与代码完全一致)。缺乏文档必然给软件的开发和维护带来许多严重的困难和问题。n 6. 软件成本在计算机系统总成本中所占比例逐年上升。随着微电子技术的进步和生产自动化程度的提高,硬件成本逐年下降,然而软件开发需要大量的人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而逐年上升。美国在1995年的调查表明,软件成本大约已占计算机系统总成本
18、的90%。 l通用软件的弱点:1.由许多工作是通用软件不能完成的;2.某些工作只能表现表面的形式,不能反映其逻辑内涵;3.难于保持一致性的困难。IBM的AD/Cycle失败的原因(两个):1.拘泥于集中式的处理思路;2.背离了开放性的大趋势n软件开发工具的出现软件开发工具的出现 在高级程序设计语言的基础上,为提高软件开发的质量和效率,从规划、分析、设计、测试、成文和管理各方面,对软件开发者提供各种不同程度的帮助的一类广泛的软件。1.2件开发工具的概念件开发工具的概念n软件开发工具的概念要点:(继承性与创新)a. 在高级程序设计语言(第三代)之后,软件技术进一步发展的产物;b. 目的是在人们开发
19、软件过程中给予人们各种不同方面、程度的支持或帮助c.支持软件开发的全过程,而不是仅限于编码或其它的特定工作阶段。n硬件和软件的关系:硬件是躯体,软件是灵魂。n软件的特性:软件是看不见,莫不着的但是发挥重要作用的事先编好的指令系列。软件是用户与硬件之间的桥梁。软件包括程序程序和文档文档两个不可缺少的组成部分。软件开发的发展阶段n第一代计算机语言(机器语言)n第二代计算机语言(汇编语言)n第三代计算机语言(高级程序设计语言)n第四代计算机语言(非过程化语言)n 通用软件辅助开发工具n软件开发工具的涌现 专用软件开发工具n 集成的软件开发工具软件开发的发展阶段n最初阶段 硬 件 算 法机器指令用机器
20、语言开发软件用户软件开发的发展阶段n第二阶段 硬 件 算 法 机器指令 用 户 汇编指令用汇编语言开发软件由汇编程序完成转换软件开发的发展阶段n第三阶段 硬 件 算 法 机器指令 用 户 程序(高级语言)用高级语言开发软件由编译程序完成转换软件开发的发展阶段n第四阶段 硬件 算 法 机器指令 用 户 程序(高级语言)在各种软件开发工具帮助下完成由编译程序完成转换文档结构需求设计几个概念几个概念n软件开发工具学(也即软件开发工具)和软件开发方法学的区别:前者着重于实际应用和工具开发;后者着重于方法论的研究;后者是前者的理论基础第四代语言(第四代语言(4GL) n第四代语言的原意是非过程化的程序设
21、计语言。针对以处理过程为中心的第三代语言,它希望通过某些标准处理过程的自动生成,使得用户可以只说明要求做什么,而把具体的执行步骤的安排交由软件自动处理。CASE 技术技术 n计算机辅助软件工程技术可以简单地定义为软件开发的自动化,通常简称为CASE(Computer Aided Software Engineering)技术。n完整的CASE包括:nCASE方法(快速原型法或迭代方法)nCASE技术(实体关系建模技术或面向对象建模技术) nCASE工具(软件开发环境,如Rational Rose) (1)CASE 工具nCASE 工具不同于以往的软件工具,主要体现在以下的几个方面:n支持专用的
22、个人计算环境;n使用图形功能对软件系统进行说明并建立文档;n将软件生存期各阶段的工作连接在一起;n收集和连接软件系统中从最初的需求到软件维护各个环节的所有信息;n用人工智能技术实现软件开发和维护工作的自动化。(2)CASE的作用nCASE有如下三大作用,这些作用从根本上改变了软件系统的开发方式。n一个具有快速响应、专用资源和早期查错功能的交互式开发环境。n对软件的开发和维护过程中的许多环节实现了自动化。n通过一个强有力的图形接口,实现了直观的程序设计。所见即所得所见即所得n在程序设计时,对于界面上的设计只需要用键盘或鼠标在屏幕上直接设计,不用手写代码。设计人员在屏幕上看到的界面,就是所生成程序
23、的运行界面。可视化编程可视化编程n可视化编程:以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序的调整与结果的调整同步进行。即插即用的软件设计方法即插即用的软件设计方法 n一部分人专门生产软件组件,而另一部分人则构造整个软件的结构,并且把软件组件插入这个结构,以便迅速地完成大型软件的研制工作,这就是即插即用的软件设计方法。 1.3软件开发工具的功能和性能软件开发工具的功能和性能n软件开发过程(阶段、成果)第一阶段:初始要求的提出成果:软件功能说明书第二阶段:总体设计成果:系统的总体设计文件及各个模块的设计任务书n第三阶段:程序的编写和文档的编写(实现阶段)n第四阶段:测试或调试阶段 包括:模块的调试和整个软件的联调n软件开发工具的功能:(做什么)a.认识与描述客观系统; b.储存和管理开发过程中的信息;c.代码的编写或生成; d.文档的编制和生成; e.软件项目管理n软件开发的性能:(做到什么程度) a.表达能力或描述能力; b.保持信息一致性的能力; c.使用方便程度; d.工具可靠程度; e.对硬件和软件环境要求1.4软件开发工具的类别软件开发工具的类别n基于应用领域划分的工具n 按照应用领域的不同,应用软件可以分为事务处理、实时应用、嵌入式应用等。随着个人计算机与人工智能的发展,与这两个方面相联系的应用软件,也取得较大的进展。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兼职司机聘用协议
- 健康养生咨询及免责合同书
- 2025年防城港危险品考试题库
- 环保建材采购及质量保证合同
- 农业合作社土地租赁协议书
- 农村林地合作经营合同
- 体育赛事赞助权益合作协议
- 员工全年收入及奖金明细证明(6篇)
- 音响设备制造与出口协议
- 企业营销效果分析与跟踪实施合作协议
- 虚拟地理环境智慧树知到答案2024年黑龙江工程学院
- ZPS型声控自动喷雾降尘装置说明书
- 钢筋混凝土单向板肋形楼盖课程设计
- 200903宝钢大厦BA系统改造方案
- 图书入库登记表
- BMH型半门式起重机说明书
- 放射性的应用与防护教案
- 医院岗位设置与人员编制标准[详]
- 土地估价报告市场比较法(工业)模板2016.09.26
- 每日安全巡查记录表
- 中医医院科主任科室管理通用考核表
评论
0/150
提交评论