版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件开发工具1课程目的了解软件开发工具的概念、理论基础、基本功能、发展现状与前景,以便能够在实际工作中正确地选择与使用软件开发工具帮助大家了解和熟悉一些常见实用的软件工具,了解开发大型软件的基本过程回顾总结以前所学的内容,进一步理解其在实际开发工作中的作用为实际的软件开发工作做准备培养具备基本的科学研究素质2课程要求熟练掌握课程内容认真完成作业上机实验3第1章绪论4本章内容预备知识1.1软件开发工具的由来1.2件开发工具的概念1.3软件开发工具的功能和性能1.4软件开发工具的类别1.5开发软件的研究和应用5软件发展的几个阶段
(1)机器语言阶段;使用0、1代码进行编程。(2)汇编语言阶段;使用助记符来编写程序,由汇编程序汇编成机器码,编程工作量大大降低,但仍未摆脱对硬件的依赖。与此同时,操作系统的出现从另一方面改善了人们应用计算机的条件。(3)高级语言阶段、高级语言突破了与机器指令一一对应的限制,大大提高了程序的可移植性。(4)第四代语言阶段,人们希望机器能够自动地完成更多的工作,包括自动安排某些工作的顺序,而做到只要给机器下达做什么的命令,由机器自己去安排执行的顺序。6(5)利用通用软件作为辅助工具的阶段利用文字处理软件来编写文档,利用绘图软件来绘制流程图等。(6)专用软件开发工具阶段支持软件开发的某一个阶段或某一个环节。(7)集成的软件开发工具阶段零散的、分散地支持各个工作阶段、各项具体工作的专用工具之间没有有机地联系起来,从而必然造成冲突与矛盾,以致抵消了使用工具带来的益处。这种情况导致了集成的软件开发工具的产生。7软件开发工作的发展特点软件的规模越来越大,软件开发工作的内容也越来越复杂开发人员离物理的机器世界越来越远,离软件用户越来越近软件开发工作从以编码为中心向以需求分析和系统设计为中心转化软件开发工作从一次性的过程向不断循环、往复更新的过程发展8软件开发的过程需求分析(提出初始要求,形成功能说明)总体设计(包括软件的模块设计、数据结构的设计、各部份的连接方式和信息交换的标准)编写程序和编写文档(实现阶段)测试和调试(包括模块的测试和整个软件的联调)应用见效(提出评价与改进要求,进入下一版本的开发)9软件开发的基本问题将软件从用户的理解转换为程序员的理解
将软件从程序员的理解转换到计算机上的程序实现
10大型软件开发中的困难保持一致性的问题(人员之间各部份间的协调配合)全面测试(软件的复杂性只能用黑箱测试)控制工作进度(软件的复杂性,测试修改难于按时完成)文档与代码进行协调(代码常改,文档难改,代码容易与文档脱节)版本更新11对软件开发过程的再认识从工作任务的角度分析:需求分析、总体设计、编制程序和文档、测试和联调从参与开发过程的角色分析:项目负责人、系统分析设计人员、开发人员、用户、计算机软硬件从软件开发过程中的各阶段成果分析:功能说明书、总体设计文件和各模块的设计任务书、软件和各类文档(包括使用说明、用户手册的等)、测试计划和测试报告12软件开发方法的发展线型程序设计结构化程序设计方法软件工程面向对象程序设计方法组件化程序设计方法13线形程序设计早期的程序设计源代码的重用性差不能控制数据项的可见性14结构化程序设计诞生于60年代设计思路是:自顶向下、逐步求精。程序结构按功能划分为若干个基本模块,这些模块形成一个树状结构。模块化实现的具体方法是使用子程序三种基本结构缺点是数据与过程相互独立15软件工程的方法强调两个方面:工作步骤交流标准16面向对象程序设计将数据和对数据的操作作为一个整体来处理按人们认识世界的方法和方式来分析和解决问题17面向对象程序设计易于扩充、修改、维护易于实现软件重用扩充到OOA、OOD、ODBMS等方面,称为面向对象软件开发方法18组件化程序设计强调软件重用和高度的互操作性将软件分成若干独立但相互之间有联系的组件,将这些组件组装成软件产品组件化程序设计的核心:组件的生产和组件的装配19组件化程序设计关于组件软件的基本量子,具有一定功能,可插用,可维护软件开发中的可替换单元,封装了设计决策,与其他组件结合组成更大的单元具有特定功能,可跨越进程边界,实现网络、语言、应用程序、开发工具、操作系统的“即插即用”的独立对象是任何可被分离出来的,具有标准化的可重用的公开接口的软件20组件化程序设计组件的特征组件之间在二进制级别上集成和重用独立地生产、获得和配置21组件化程序设计组件的接口描述组件对外提供的服务,组件和组件之间、组件和客户之间同时通过接口进行交互组件接口的稳定性组件接口的“自我描述性”,描述标准IDL语言22组件化程序设计目前比较成熟的规范COM——(ComponentObjectModel)CORBA——(CommonObjectsRequestBrokerArchitecture)23软件工程软件工程是研究软件开发和软件管理的一门工程科学。现代软件工程研究的内容:序号研究方面具体内容1软件开发模型
软件开发周期(瀑布模型、增量模型、原型模型、迭代模型)
2软件开发方法面向过程方法、面向对象、面向数据3软件支持过程如CASE工具、北大青鸟、PowerDesigner4软件管理过程
ISO9000、CMM24软件工程软件vs.程序面向过程的程序=算法+数据结构面向对象的程序=对象+消息面向组件的程序=组件+构架软件=程序+数据+文档25软件的生存周期与开发模型生存周期与选择的开发模型有关软件开发模型瀑布模型增量模型迭代模型原型模型26软件生存周期(一般说法)立项(或签约)、下达任务书需求分析概要设计详细设计编码实现软件测试软件发布与实施软件维护版本更新或退役27瀑布模型软件在生存周期中不同的阶段,自上而下,互相衔接,逐级下落,具有固定的次序适合于结构化面向过程的软件开发方法特点里程碑或基线驱动,或文档驱动过程逆转性差或不可逆转28瀑布模型缺点:问题堆积克服:严格的里程碑管理制度(微软)
阶段评审和不符合项的动态跟踪(CMM)仍广泛使用的模型29增量模型用递增方式进行软件开发。软件作为一组增量部件,每次设计、实现、集成、测试和交付一块部件,直到所有部件全部实现为止。软件系统本身模块化,单个模块高内聚,模块之间低耦合,模块可组装拆卸30增量模型特点任务或功能模块驱动,可分阶段提交有多个任务单31迭代模型针对瀑布模型的缺点。采取循环的工作方式,每次循环使工作产品接近目标一次多次执行各个开发工作流程,最终交付一系列逐步完善的实施成果。32迭代模型一次迭代每次按顺序完成一系列工作流程以次要里程碑(MinorMilestone)结束需对迭代结果进行评估迭代发布的产品是开发过程最终产品的子集33迭代模型迭代生存周期——4个阶段初始阶段:确定系统的业务和项目的范围精化阶段:分析问题域、细化产品定义、定义系统架构并建立基线构建阶段:反复开发,完善产品移交阶段:将产品交付用户,安装、培训、交付、维护等34迭代模型面向对象的工具(如Rose)和UML比较适合迭代方法35原型模型在初步需求分析之后,马上向客户展现一个软件产品原型,根据客户试用意见不断修改原型,直到客户确认为止。特点:原型驱动,需要有一个原型或原型的核心快速原型法缺点:不利于开发人员的创新36软件工程软件工程是研究软件开发和软件管理的一门工程科学。现代软件工程研究的内容:序号研究方面具体内容1软件开发模型
软件开发周期(瀑布模型、增量模型、原型模型、迭代模型)
2软件开发方法面向过程方法、面向对象、面向数据3软件支持过程如CASE工具、北大青鸟、PowerDesigner4软件管理过程
ISO9000、CMM37软件工程的三要素软件工程的开发方法支持开发方法的工具软件管理过程38软件工程的基本原理B.W.Boehm于1983年提出用分阶段的生存周期计划严格管理软件开发。阶段划分为计划、分析、设计、编程、测试和运行维护。坚持实行阶段评审。上一阶段评审不通过,就不能进入下一阶段开发实行严格的产品版本控制。39采用现代程序设计技术。结果应能清楚地审查。因此对文档有严格要求。开发小组的成员要少而精。要不断地改进软件工程的技术和经验。
40软件开发项目的管理项目管理的要素:质量、进度、费用、资源利用软件评价标准:正确性、易用性(界面友好)、效率、可靠性、可维护性、与可重用性单个程序员的标准:了解程序设计的基本知识和技能、了解所涉及的应用领域、熟悉软件开发的技术与环境41软件开发项目的管理项目组对程序员的要求:严格限于本模块范围、严格按总体设计的要求、按统一规定存取公用数据、按统一规格命名标识符、按统一要求编写文档、保持程序风格的一致对软件开发项目组的评价(CMM模型):有严格成文的工作规范和文档标准、有严格的分工、有详细的工作进度表并得到严格执行42软件工程的三要素软件工程的开发方法支持开发方法的工具软件管理过程43软件工程的支持过程软件工程的过程指软件生存周期(LifeCycle)中的时间序列。例如可将一个软件的生存周期划分为市场调研、立项、需求分析、策划、概要设计、详细设计、编程、单体测试、集成测试、运行和维护这几个过程44软件工程的支持过程由支持软件生存周期各个阶段的生产工具所组成。生产工具诸如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具、开发环境(又称为CASE工具)。软件开发环境,是指能够连续的支持多个开发阶段的CASE工具。45说明本课程按软件工程各不同阶段来介绍需要的工具和实现的功能以实际工具中可能用到的为主,以微软、或容易获得的开源的工具为重点。461.1软件开发工具的由来计算机语言的发展阶段:
第一代:机器语言;第二代汇编语言;第三代:高级程序设计语言;第四代:非过程化语言非过程化语言的思想:
人们希望机器能自动地完成更多的工作,包括自动安排某些工作顺序,二做到只要给机器下达需要做什么的命令,由机器自己去安排执行的顺序。47软件危机
软件危机(SoftwareCrisis)是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。48软件危机的主要表现:
1.对软件开发成本和进度的估计常常很不准确。
实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种现象降低了开发组织的信誉。为赶进度和节约成本所采取的权宜之计往往又损害了软件产品的质量,从而不可避免地引起用户的不满。
2.用户对“已完成的”软件系统不满意的现象经常发生。软件开发人员常常在对用户需求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就仓促上阵匆忙着手编写程序。软件开发人员和用户之间的交流往往很不充分,“闭门造车”必然导致最终产品不符合用户实际需要。493.软件产品的质量常常靠不住。
软件可靠性和质量保证的确切定量概念刚刚出现,软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都会导致软件产品发生质量问题。4.软件常常是不可维护的。
程序中的错误很难改正,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需求在原有程序中增加新的功能。505.软件通常没有适当的文档资料。 软件不仅是程序,还应该有一整套文档资料。这些文档资料是在软件开发过程中产生出来的,而且应该是“最新的”(与代码完全一致)。缺乏文档必然给软件的开发和维护带来许多严重的困难和问题。51
6.软件成本在计算机系统总成本中所占比例逐年上升。 随着微电子技术的进步和生产自动化程度的提高,硬件成本逐年下降,然而软件开发需要大量的人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而逐年上升。美国在1995年的调查表明,软件成本大约已占计算机系统总成本的90%。52通用软件的弱点:
1.由许多工作是通用软件不能完成的;2.某些工作只能表现表面的形式,不能反映其逻辑内涵;3.难于保持一致性的困难。IBM的AD/Cycle失败的原因(两个):
1.拘泥于集中式的处理思路;2.背离了开放性的大趋势53软件开发工具的出现
在高级程序设计语言的基础上,为提高软件开发的质量和效率,从规划、分析、设计、测试、成文和管理各方面,对软件开发者提供各种不同程度的帮助的一类广泛的软件。541.2件开发工具的概念软件开发工具的概念要点:(继承性与创新)
a.在高级程序设计语言(第三代)之后,软件技术进一步发展的产物;
b.目的是在人们开发软件过程中给予人们各种不同方面、程度的支持或帮助
c.支持软件开发的全过程,而不是仅限于编码或其它的特定工作阶段。55硬件和软件的关系:硬件是躯体,软件是灵魂。软件的特性:
软件是看不见,莫不着的但是发挥重要作用的事先编好的指令系列。软件是用户与硬件之间的桥梁。
软件包括程序和文档两个不可缺少的组成部分。56软件开发的发展阶段第一代计算机语言(机器语言)第二代计算机语言(汇编语言)第三代计算机语言(高级程序设计语言)第四代计算机语言(非过程化语言)通用软件辅助开发工具软件开发工具的涌现专用软件开发工具集成的软件开发工具57软件开发的发展阶段最初阶段硬件算法机器指令用机器语言开发软件用户58软件开发的发展阶段第二阶段硬件算法机器指令用户汇编指令用汇编语言开发软件由汇编程序完成转换59软件开发的发展阶段第三阶段硬件算法机器指令用户程序(高级语言)用高级语言开发软件由编译程序完成转换60软件开发的发展阶段第四阶段硬件算法
机器指令用户程序(高级语言)在各种软件开发工具帮助下完成由编译程序完成转换文档结构需求设计61几个概念软件开发工具学(也即软件开发工具)和软件开发方法学的区别:
前者着重于实际应用和工具开发;后者着重于方法论的研究;后者是前者的理论基础62第四代语言(4GL)
第四代语言的原意是非过程化的程序设计语言。针对以处理过程为中心的第三代语言,它希望通过某些标准处理过程的自动生成,使得用户可以只说明要求做什么,而把具体的执行步骤的安排交由软件自动处理。63CASE技术
计算机辅助软件工程技术可以简单地定义为软件开发的自动化,通常简称为CASE(ComputerAidedSoftwareEngineering)技术。64完整的CASE包括:CASE方法(快速原型法或迭代方法)CASE技术(实体关系建模技术或面向对象建模技术)CASE工具(软件开发环境,如RationalRose)65(1)CASE工具CASE工具不同于以往的软件工具,主要体现在以下的几个方面:①支持专用的个人计算环境;②使用图形功能对软件系统进行说明并建立文档;③将软件生存期各阶段的工作连接在一起;④收集和连接软件系统中从最初的需求到软件维护各个环节的所有信息;⑤用人工智能技术实现软件开发和维护工作的自动化。66(2)CASE的作用CASE有如下三大作用,这些作用从根本上改变了软件系统的开发方式。①一个具有快速响应、专用资源和早期查错功能的交互式开发环境。②对软件的开发和维护过程中的许多环节实现了自动化。③通过一个强有力的图形接口,实现了直观的程序设计。67所见即所得
在程序设计时,对于界面上的设计只需要用键盘或鼠标在屏幕上直接设计,不用手写代码。设计人员在屏幕上看到的界面,就是所生成程序的运行界面。68可视化编程
可视化编程:以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序的调整与结果的调整同步进行。69即插即用的软件设计方法
一部分人专门生产软件组件,而另一部分人则构造整个软件的结构,并且把软件组件插入这个结构,以便迅速地完成大型软件的研制工作,这就是即插即用的软件设计方法。701.3软件开发工具的功能和性能软件开发过程(阶段、成果)
第一阶段:初始要求的提出 成果:软件功能说明书
第二阶段:总体设计 成果:系统的总体设计文件及各个模块的设计任务书71第三阶段:程序的编写和文档的编写(实现阶段)
第四阶段:测试或调试阶段 包括:模块的调试和整个软件的联调72软件开发工具的功能:(做什么)
a.认识与描述客观系统;
b.储存和管理开发过程中的信息;
c.代码的编写或生成;
d.文档的编制和生成;
e.软件项目管理73软件开发的性能:(做到什么程度)a.表达能力或描述能力;
b.保持信息一致性的能力;
c.使用方便程度;
d.工具可靠程度;
e.对硬件和软件环境要求741.4软件开发工具的类别基于应用领域划分的工具
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生与健康知识竞赛考试试题库及答案
- 西餐服务员培训考题及答案
- 药店工作人员培训试题及答案
- 证券管理考试试题及答案
- 液化石油气库站运行工公司招聘笔试题库及答案
- 职业技能大赛(品酒赛项)理论参考试题库及答案
- 中国妊娠期糖尿病母儿共同管理指南培训考试题及答案
- 中山市渡口渡船安全管理培训考核卷及答案
- 2025年绵阳市实验高中初升高自主招生考试数学试题库(附含参考答案)
- 证券从业资格考试《证券基础》试卷及答案
- 2026年秋季学期“1530”安全教育记录表1
- 2025年青春期矮身材儿童身高改善的药物治疗
- 2026年金川集团招聘试题及答案
- 2025年中秋国庆假期水上交通安全生产方案范文
- 塔吊吊装作业一会三卡样表(安全生产班前会、作业要点卡、风险提示卡、应急处置卡)
- 薪资管理系统初始化设置
- 科大讯飞智慧教育产品的个性化学习解决方案
- 高三日语复习4:高考日语自他动词
- HG+20231-2014化学工业建设项目试车规范
- 众神的山川山海经与上古地理、历史及神话的重建
- 基坑支护旋挖灌注桩技术交底
评论
0/150
提交评论