自考软件开发工具03173
2023-12-26 16:20:19 0 举报
AI智能生成
《软件开发工具》是自考课程中的重要科目之一,课程编号为03173。本课程主要介绍软件开发过程中常用的工具和技术,帮助学生了解并掌握这些工具的使用方法,以提高软件开发的效率和质量。 课程内容包括:软件开发工具概述、需求分析工具、设计工具、编码工具、测试工具、维护工具等。通过本课程的学习,学生将能够熟练使用各种软件开发工具,从而提高软件开发的能力。同时,课程还强调了软件开发过程中团队合作与沟通的重要性,为学生将来从事软件开发工作打下坚实的基础。 作为自考生,在学习《软件开发工具》课程时,需要注意结合实际项目进行实践,以便更好地理解和掌握所学内容。此外,定期复习和练习也是提高学习效果的重要途径。通过这门课程的学习,学生将能够在软件开发领域取得更好的成绩,为未来的职业生涯做好准备。
作者其他创作
大纲/内容
1.绪论
1.1软件开发工具的由来
计算机语言的发展史
机器语言
汇编语言
同时出现操作系统
高级程序设计语言
20世纪60年代初,fortan、algol、cobol
优点
高级程序语言突破了与机器指令一一对应的限制
实现了计算机语言对机器的独立性,可移植性大大增强
用接近自然语言的表达方式描述人们设想的处理过程,把表达方式向机器指令的转行交给编译系统去完成
缺点:过程化语言,需要程序员一步一步安排好执行次序
软件危机:20世纪60年代末
非过程化语言
第四代语言,4GL
非过程化语言的思想
人们希望机器能够自动地完成更多工作
包括自动的安排某些工作的顺序
做到只要给机器下达做什么的命令
由机器自己去安排执行的顺序
软件开发工具的发展过程
软件开发工具的概念
在高级程序设计语言的基础上
为提高软件开发的质量和效率
从规划、分析、设计、测试、文档和管理等各方面
对软件开发者提供各种不同程度的帮助一类新型的软件
软件开发工具的进化史
没有专用的软件开发工具阶段(20世纪70年代末-80年代初),通用软件
专用软件开发工具开发阶段
20世纪80年代
优点:提高软件开发的质量和效率
缺点:一致性的保持困难,对软件开发缺乏全面的、统一的支撑环境
集成的软件开发环境阶段
20世纪90年代,大量应用软件开发工具
标志:1989年IBM提出名为AD/Cycle的巨大理论框架
21世纪软件开发的新阶段
面向网络:不仅基于网络,而且用于网络
开源软件的兴起与运用
1.2软件开发工具的概念
为什么说软件是人类知识与经验的结晶
有事先编写好的指令(软件),硬件才能完成任务
这些指令是人们在实践中形成的工作规范
可以对不同数据反复使用
进一步提高了人类的能力
软件开发工具的五个阶段及其特点
最初阶段:用机器语言写成指令,供硬件执行
第二阶段:用汇编语言开发软件,汇编程序完成转换
第三阶段:用高级语言开发软件,编译程序完成转换
第四阶段:用各种软件开发工具开发软件,编译程序完成转换
新阶段:由软件架构师完成架构设计,程序员用软件开发工具完成软件开发,编译程序完成转换
软件开发工具的提出和使用是软件发展的一个新阶段
自动化程度提高
将需求分析和软件架构包括在软件工作的范围之内
将软件开发工作延伸到项目及版本管理
吸收了许多管理科学的内容和方法
CASE工具
计算机辅助软件工程
计算机辅助系统工程
1.3软件开发工具的功能与性能
软件开发的过程
提出初始要求
需求分析
软件功能说明书
总体设计
结构图
模块清单
公用数据结构
实现阶段
程序编写
文档编写
测试阶段
模块调试
整个软件的联调
软件开发工具的功能要求
认识和描述客观系统
存储及管理开发过程的信息
代码的编写或生成
文档的编写或生成
软件项目的管理
软件开发工具的性能
表达能力或描述能力
保持信息一致性的能力
使用的方便程度-更重要
工具的可靠程度-最重要
对硬件和软件环境的要求
项目管理
进度管理
资料与费用管理
质量管理
1.4软件开发工具的类别
软件开发工具的类别
按工作阶段的划分
计划工具
为项目主管服务
分析工具
用于需求分析:数据字典管理系统、Dictionary/3000、FLOW
设计工具
出现最早、数量最多:代码生成器、第四代语言、测试工具
按集成程度划分
专用工具
面对某一工作阶段或某一工作任务
集成工具
面向软件开发全过程
依赖与机器与软件
按硬件、软件的关系划分
依赖与软硬件
设计工具
集成化工具
独立于软硬件
分析工具
计划工具
什么是集成化软件开发工具
2.软件开过过程及其组织
2.1软件开发的困难
软件开发的基本问题
第一转换是用户对软件功能的理解与程序员对软件功能的理解直接的转换(用户的理解和程序员理解之间的转换)
第二转换要解决的是人和机器之间的交流与协调问题(程序员的理解到程序之间的转换)
换种问题描述(程序员做好工作的关键是什么)
大型软件开发的困难
一致性的保持成为十分困难的问题
测试的困难大大增加
工作进度难以控制
文档与代码的协调十分困难
版本更新带来的困难
大型软件开发困难的原因
大系统的复杂性
个人之间的组织与协调
各个应用领域之间的差别
时间的因素,变化的因素
2.2软件开发方法的发展
软件开发各人员的责任
用户:提出需求、验收软件、使用软件、提出修改要求
程序员:编程、写文档、调试自己的程序、向项目负责人提交工作成果
项目负责人:验收模块、分析需求、验收修改成果
硬件:运行、试运行
结构化程序设计
什么是结构化程序设计
时间:20世纪60年代末
程序的结构分解成三个基本模块:处理单元、循环机制、二分决策机制
模块的划分应符合哪些要求
模块的功能在逻辑上应尽可能地单一化、明确化、最好做到一一对应。
模块之间的联系及影响尽可能少。应当尽量避免逻辑耦合,而仅限于数据耦合
模块的规模应当足够小,以便于使它本身的调试易于进行
(功能单一、规模小、模块之间耦合少)
实施结构化程序设计的基本思想
限制甚至不用GOTO语句,禁止超越模块边界的GOTO语句
子程序尽可能的做到只有一入口、一出口
程序风格应明确
完成有关的文档编撰
缺点:增大了程序的工作量,降低了程序的运行效率
软件工程
软件工程思想是如何产生的
软件危机的发生
软件工程产生:使软件生产从程序员的个人劳动提高成为可控制的工程
软件工程的思想主要集中于加强项目管理者的工作上
软件工程从传统产业工程中吸取的经验
对软件工程工作的步骤作出严格的规定,工作顺序不能颠倒
每一个阶段都有各自的明确的任务
在质量、表达方式等方面都有统一的,并为人们共同遵守的标准
利用有关各方沟通与交流的手段,使参加工作的人们成为一个整体,共同地完成一项大的工程任务
软件工程的思想与方法得到广泛的宣传是在20世纪80年代
IBM 提出的 AD/Cycle 中,对软件开发过程做了如下划分和规定
需求分析阶段
分析与设计阶段
编程阶段
测试阶段
使用及维护阶段
面向对象的程序设计
面向对象的程序设计的基本思想
客观世界的任何事物都是对象,他们都有一些静态属性和一些相关的操作
对象之间有抽象与具体,群体与个体,整体与部分等几种关系
抽象的、较大的对象所具有的性质,包括静态属性和动态操作,自然地成为它的子类的性质,这就是所谓的“遗传性”
对象之间可以互送消息
采用的方法是选择合理层次,控制系统复杂性
认识框架扩展到其它领域
面向对象系统分析
面向对象系统设计
面向对象数据库管理系统
即插即用的程序设计
即插即用的程序设计的基本思想
应用硬件制造思路来处理大型软件开发工作的方法
一部分人专门生产软件组件,而另一部分人则构造整个软件的结构,并且把软件组件插入结构中,以便迅速地完成大型软件的研制工作
提出即插即用程序设计的基础是面向对象程序设计
为什么真正实现即插即用的程序设计不是那么简单
标准化十分困难
软件的部件提供方式很难统一
版本控制十分困难
紧密相关
组件程序设计
组合文件
宏观程序设计
面向开源软件的程序设计
在什么情况下利用开源软件进行程序设计比较合适
在一些应用面广,流程比较清晰、比较规范的应用领域,开源代码的重用是比较有把握的
例如:网站的设计确实可以从开源代码中找到比较实用的,略加修改就可以使用的代码,这无疑是可以节省人力和物力的
必须充分估计应用领域的复杂性和多样性
开源软件的质量,取决于其文档和代码的规范程度
2.3软件开发过程管理
什么样的软件才是好软件
软件评价的主要方面
正确地实现所要求的功能
用户界面友好
具有足够的速度,而不是越快越好
具有足够的可靠性
易于修改
对单个程序员的要求
具有程序设计所要求的基本知识与技能
对本项目所在的领域有较深入的了解,能够准确地理解用户的信息需求,正确地把握有关的信息流程与信息处理原则
对于软件开发的技术环境比较熟悉,对所用的语言,有足够的、实际的运用经验
项目组对程序员的约束
保证严格的在本模块范围内操作,绝不使用可能干扰其他模块的命令或函数
严格按总体设计的要求和理解去传递参数值,决不随意修改其内容或含义
在对公用的文件或数据库进行存取时,必须完整的、准确的按统一规定的格式去操作,决不能擅自改变
在使用标识符时,应按照统一的原则,尽量使用易于看出逻辑含义的名称
严格按照统一的要求编写文档,在内容、格式、表达方式、符号使用上遵循项目组的统一规定
尽量保持程序风格的一致,如注释行的安排,行首空格的使用等
一个好的项目组至少应当具备的条件
有严格的、成文的工作规范和文档标准
人员之间有严格的分工,除了程序员之外,必须有专门的秘书和测试人员
每个项目都要有事先制定详细的时间表,并且严格执行
3.软件开发工具的理论基础
3.1软件开发过程的信息要求
软件开发过程中信息流通的模型
有关系统环境、现状及需求的信息。由用户提出,由分析人员采集,需求分析。
用户:提出需求
有关软件的功能设计与物理设计的各种信息。由分析人员设计方案
分析人员:设计方案
软件成果本身,包括程序与文档。由程序员编制。
程序员:编程、文档
用户对系统的各种需求变更要求,以及系统的各种变更的记录。由维护人员收集。
维护人员:修改要求
软件开发过程中涉及的信息类型
需求信息
设计信息
软件成果
变更信息
软件开发过程中要进行的信息管理
合理存储
正确转化
顺畅流通
软件开发工具的理论及技术基础
概念模式
数据库技术
编译技术
人机界面技术
项目管理与版本管理理论
系统工程理论
3.2概念模式及其作用
概念模式的意义与作用
概念
指人们在认识事物的过程中,对于某一事物或某一系统形成的,抽象的,一般化的框架。
概念模式具有主观性,又有客观性
作用
概念模式在认识中的作用十分重要,同时作为交流与表达工具也是十分重要的
人们在相互配合、相互协调、共同完成某项任务的时候,需要统一思想、统一认识、协同行动就必须用某种公认的方式来进行表述
常用的概念模式
框图
框图是描述程序执行逻辑过程的概念模式
把程序执行的基本步骤归纳为判断、处理、输入、输出、起始或终止等几个基本功能,并用不通的记号加以表示
用箭头表示控制或执行的顺序
当软件规模不太大时比较适用
结构图
当程序模块比较大时,直接用框图表示会过于复杂,使人无法分层次地掌握程序的结构,针对这种情况引入结构图
用以表示大型软件的层次结构,即模块结构
以模块的调用关系为线索,从宏观上使人一目了然的掌握软件的全貌
它的基本图例为模块,用自上而下的线索表示调用关系,并注明参数传递的方向和内容
它的基本观点是,程序调用的三种方式:顺序调用、选择调用、循环调用
某些细节有时需要用框图加以补充
优点
能够体现层次观点,由粗到细、自顶向下的描述程序
数据流程图(DFD 图)
面对的是一个系统的信息流程
用于描述某一业务处理系统的信息来源、存储、处理、去向的全面情况
基本思想
把信息流看做一个组织或系统运作的线索,力图简明扼要的勾画出全局
基本元素
外部实体(即系统以外的信息来源或去向)
数据处理
数据存储
用箭头表明信息在它们之间的流动状况
与结构图相比
它更适合于客观描述,而结构图着重描述软件模块间的控制
实体关系图(E-R 图)
用于描述静态数据结构的概念模式
基本元素
实体
关系
属性
广泛应用于数据库的设计中,常和数据流程图、结构图等相互配合使用
因为前二者重点描述信息的处理与流通,所以缺乏对静态数据结构的描述方法
因为前二者重点描述信息的处理与流通,所以缺乏对静态数据结构的描述方法
数据字典
是一种描述数据内容的概念模式
用表格的形式列出数据的基本属性以及相互关系,作为人们对于数据的认识和了解
它的雏形是编写软件时的变量说明或标识符清单
和 E-R 图相比
它更适于记录各种细节
时序网络
主要描述系统的状态及其转换方式
状态
指系统在运行中某一特定的形态或工作方式
转换
指状态之间在一定条件下的相互变化
常用于一些实时控制方面的软件的功能描述
数学与逻辑模型
用 数学公式 或 逻辑表达式 来描述客观系统的 状态 或 运动规律
优点
严格
准确
可计算
作为逻辑模型的表示方式
决策树
决策表
计算机模拟模型
利用计算机大量、高速处理信息的能力,在计算机内设置一定的环境(如资源条件),
以程序来实现客观系统中的某些规律或者规则,以便人们观察与预测客观系统的状况
以程序来实现客观系统中的某些规律或者规则,以便人们观察与预测客观系统的状况
3.3信息库及其一致性
概念
信息库是一个随着项目进度不断修改与补充的 数据集合
特点
作为软件开发过程的信息管理总枢纽,它的数据结构是相当复杂的,
而且会随时间不断变化,因此 保持一致性 的任务变得十分复杂和艰巨
而且会随时间不断变化,因此 保持一致性 的任务变得十分复杂和艰巨
信息库应该存放有关软件开发全程的所有有用的信息
所述软件的工作环境、功能需求、性能要求、有关的各种信息来源的状况、用户状况、硬件环境以及在该专业领域中的作用等外部信息
需求分析阶段 中收集的有关用户的各种信息,包括用户本身提供的,也包括在调查研究中得到的
逻辑设计阶段 的各种调查材料和由此生成的各种文档,包括调查记录、原始数据、报表及单证的样本、绘制的各种图以及最后生成的系统说明书
设计阶段 的各种资料,包括所有的数据库与数据文件格式、数据字典、程序模块的要求、总体结构、各种接口及参数的传递方式以及最后形成的设计方案
编程阶段 的所有成果,包括程序代码、框图、变量说明、测试情况(输入数据及输出结果)、验收报告、使用说明等
运行及使用 情况的详细记录,包括每次使用的时间、状态、问题,特别是有关错误及故障的记录情况
维护及修改 的情况,包括修改的目标、责任人、过程、时间、修改前后的代码与文档以及修改后的结果、原系统的备份
项目管理 的有关信息、人员变更、资金投入、进度计划及实施情况。这项还包括版本信息,即各个版本的备份、每个版本的推出日期、与以前版本相比的变更说明等
3.4人机界面及其管理
人机界面的作用及重要性
作用
人与计算机之间传递、交换信息的媒介和对话接口,是计算机系统的重要组成部分
重要性
对于用户来说,界面就是系统本身
用户关心的最主要问题就是自己是否能够有效的使用软件
界面不友好的软件不是成功的软件
人机界面设计的原则
用户界面的主要功能是通信
用户界面必须始终一致
用户界面必须使用户随时掌握任务的进展情况
用户界面必须提供帮助
宁可程序多干,不可让用户多干
常用的八种人机交互方式
键盘操作
屏幕滚动
菜单选择
帮助系统
鼠标操作
色彩应用
数据录入
信息显示
IBM 的 AD/Cycle 的应用系统框架 SAA
程序员接口-CPI
通信接口-CCS
用户接口-CUA
3.5项目管理与版本管理
项目管理
含义
与固定的生成线上的日常生成管理不同,具有更大的变动性、时间线的另一类管理任务
目标
使产品(或工程)的质量得到有效控制
保证整个系统按预定的进度完成
有效地利用资源,减少资源的闲置和浪费
控制与降低成本
特点
子任务多,关系复杂
任务不可重复,形式不断变更
协调组织的任务十分突出,资源浪费闲置的风险与合理地优化组合、提高效益的机会并存
信息处理工作的作用与意义更为突出
进度 和 质量 是软件开发最关键的问题
版本管理
核心是保持两个一致性
从时间上来说,系统完善过程中,前后一致
从系统各部分之间的关系来说,系统的局部与整体一致
方法
规定长远的版本更新计划,制订版本有关的信息范围及收集、管理方法
在项目组内明确分工,在程序编写、测试、文档缩写等工作中贯穿项目管理的思想及要求
用户的反馈信息 是项目管理和版本管理的重要资源
4.软件开发工具的技术要素
4.1基本功能与一般结构
软件开发工具的基本功能
系统描述
信息管理
代码生成
文档生成
项目管理
软件开发工具的一般结构
总控部分与人机界面
信息库及其管理模块
代码生成模块
文档生成模块
项目管理模块
4.2总控与人机界面
地位
总控和人机界面处于中心的位置
作用
在各个具体之上,实现信息的正确传递和转换,帮助人们完成协调和配合的工作,
从而形成一个统一的、完整的支撑环境,并通过一个统一的、友好的人机界面与用户对话
从而形成一个统一的、完整的支撑环境,并通过一个统一的、友好的人机界面与用户对话
实现的技术考虑
面向使用者
保证信息的准确传递
保证系统的开放性或灵活性
4.3信息库及其管理
信息库技术应考虑的问题
信息库的内容
信息库的组织方式
信息库的管理功能
历史信息的处理方法
信息库的内容
系统状况
要处理的信息的
种类
格式
数量
流向
应用领域对软件的要求
功能的要求
性能的要求
使用者的
情况
背景
工作目标
工作习惯
设计成果
数据流程图
数据字典
系统结构图
数据库的逻辑设计
各模块的设计要求
设计文档
运行状况的记录
运行效率
作用
用户反映
故障情况
故障的原因和处理情况
项目及版本管理信息
包括项目的
进度
过程
人员分工
资源投入
版本组织
信息库的组织方式
集中存储
实现方法
把各种信息存放到一个数据库中,用各种工具对这个信息库进行录入、修改、查询、删除
优点
容易保持一致性
缺点
与模块化相冲突
分散存储
实现方法
把信息分别存入不同的数据库,由不同的功能模块来处理
优点
某一部分发生变更,不会影响整个系统
缺点
每个模块都要进行一整套增、删、改的操作
各部分之间的一致性无从保证
逻辑上集中,物理上分散
实现方法
通过信息库管理模块化,对分散的各个数据库进行存储,并进行一致性的检查和维护
优点
保持了一致性和灵活性
信息库管理的主要功能
录入更新
使用查询
一致性维护
历史信息在信息库中保留的难点
历史信息的数量太多,占用存储设备过多
历史信息格式不一致,难以有效的利用
4.4文档生成与代码生成
二者是软件开发工具的起点
代码生成
基本任务
根据设计要求,自动的或半自动的产生相应的某种语言的程序
目标
输出程序代码
某种高级程序设计语言的代码
优点
使用者可以在此基础上进一步修改加工
缺点
功能较死
效率不高
需要修改
某种机器环境下可运行的机器指令
优点
可以直接运行,从而立即检查是否符合要求,
如果不符合要求可立即调整命令或参数重新生成一遍
如果不符合要求可立即调整命令或参数重新生成一遍
缺点
机器代码无法直接修改
对机器的硬件 、软件环境依赖很大
依据的资料
信息库里已有的有关资料
利用各种标准模块的框架和构件
使用者通过屏幕前的操作送入的信息
文档生成
包括
文章
图形
表格
和代码生成相比
数量更大,内容更复杂
文档处理从难到易
文章、图形、表格
4.5项目管理与版本管理
项目管理的内容与方法
研究与确定开发工作的方针和方法
采用什么样的阶段划分方法,采用什么样的系统描述方法等
开发任务的划分与分工
整个开发任务如何逐层分解为具体任务,任务委托给什么人来做,任务之间的相互关系
资源状况
人力
物力
设备
软件
资金
人员状况
每个人的进度
技术水平如何,是否需要培训
是否需要调动工作
变更情况
需求变更
环境变更
人员变更
开发期间设备与技术的变更
质量情况
验收标准
如何验收,由谁检验,用什么数据检验
项目管理的难点
各个工作阶段对信息的要求、视角不同,信息库中的内容不能符合要求,或不够确切,或不够详细,需要反复进行补充调查,
不仅进度会出现延误,以前已有的文档、资料也必须进行相应修改,否则就会出现不一致的情况
不仅进度会出现延误,以前已有的文档、资料也必须进行相应修改,否则就会出现不一致的情况
版本管理的基本内容
各个版本的编号
功能改变
模块组成
文档状况
推出时间
用户数量
用户反映
封存情况
5.软件开发工具的使用与开发
5.1购置与开发的权衡
原则
从实际需求出发
客观认识软件开发工具的实际发展水平
应当考虑的主要因素
开发工作的要求
开发环境
准备从事的软件开发工作的性质与要求
开发人员对支持工作与支持程度的实际需要
工作环境
人员因素
购买软件开发工具的
优点
能够帮助人们减轻一定的工作负担,在某些环节上代替一些简单的、重复性的工作
可以使工作的组织管理比较规范,信息的管理与检索比较方便,部分地做到信息与知识的重用和共享
一般而言,软件开发工具,我们更倾向于购买用途十分明确的
缺点
软件工具的引入比较昂贵
目前软件开发工具的发展水平还不高,一体化的软件开发工具不多,产品不满意,效率不高等问题十分突出,作用与可靠程度还不尽如人意
自行开发软件开发工具的
优点
目标明确,切实符合自己的需要,便于进一步扩充和升级,不存在引进外面产品时不可避免的冲突与不一致
可以商品化,称为软件产品出售
缺点
低估了商品化与集成化的困难
工具要适用于较广的范围、不同的环境中
5.2软件开发工具的选择与购置
进行市场调查的要点
功能
性能
开发方法或理论
运行环境
文档资料是否齐全
服务和培训条件
价格
购置软件开发工具的工作步骤
明确购买软件开发工具的目的和要求
明确购买软件开发工具的环境条件与制约条件
市场调查
对于可提供选择的各种工具进行综合比较
进行测试和检验
正式签约购置
安装与试用
5.3软件开发工具的使用
组织管理的重要性
组织管理工作的成功与失败,直接影响着软件开发工具的作用的发挥程度。如不认真管理,就会出现混乱,以至使系统崩溃。从不规范的、立足于程序员编程技术的软件开发方式,转变到严格地、按科学方法组织管理的软件开发方式,这是一个极其深刻的变革,它必然要经历许多磨擦与碰撞。人们总是有意无意地采用传统的工作方式或工作习惯,违反严格的要求,导致种种信息不通、信息不一致的现象发生。因此,软件开发工具的使用过程,就是一个逐步改变旧的工作习惯,建立科学的软件开发方法的过程。如果没有认真的组织管理,也就不可能自发地、轻易地、顺利地使用开发工具,切不可低估了这一过程的困难、复杂与反复。
引入软件开发工具后,组织管理工作的内容
严格使用限制
明确信息来源、使用权限、维护职责等有关事宜
明确规定由哪些人在什么时候完成任务
对于已经存入信息库的信息也要规定其使用权限及维护责任
如果没有明确规定,信息库的内容就失去了可靠性,工具的运用也就失去了基础
记录使用过程
系统运行的次数与时间
信息库的输入与更新时间
各种输出的质量与数量
使用者的反映与满意程度
各种故障的情况及处理
培训使用人员
软件开发工具的使用过程是人们转变工作方式的过程
审批与评价工作
目的和意义
审计是指对系统的运行状况及效率进行检测与评价,以便更好或改进系统
保证取得实际的应用效果
审计的基础是日常记录的信息
审计的范围
包括工具使用的环境、人员、工作负担、工作效果、存在问题、改进方法等很多方面
问题举证
在工具使用过程中进行审计的主要内容
有没有出现过错误和丢失数据的情况,有没有出现过由于误操作而引发的异常情况,
对这些情况有哪些补救措施和纠正,效果如何
对这些情况有哪些补救措施和纠正,效果如何
软件开发工具性能的审计
工具的效率
工具的响应速度
工具的输出方式
在购置开发工具时进行审计
希望利用的功能
投入的资金和人力
定量计算的收益和无法定量计算的收益
从经济上看是否合理
5.4软件开发工具的开发
自行开发工具的注意事项
从实际需求出发,从具体功能做起
注重文档及资料的积累
谨慎对待商品化
6.软件开发工具的现状与发展
6.1软件开发工具的发展现状
国内外软件开发工具的当前发展水平
IBM与1989年提出的AD/Cycle——关于 应用系统开发 和 CASE工具 的总框架
兴起是在 20世纪80年代中期,提出了 一体化 的要求
专项的、支持某一工作环节的 专用工具 大量涌现
与国际软件开发工具比较,国内应用水平较大地落后于国际
6.2软件开发工具的发展方向与趋势
四个基本的发展趋势
智能化
软件开发工具的研究与使用中引入 人工智能、神经网络 等技术
在开发中,存在大量不确定因素,人们常常需要用 知识 与 经验 来补充或加工
网络化
通过网络,更方便的互通信息,共享知识,这就给 软件重用、知识重用 提供了新的机会
一体化
对于软件开发中设计的各种信息,以及在开发过程中他们的 发生、变化、关系、一致性 等有了完整与深刻的理解,才能真正实现软件开发工具的一体化
标准化
软件结构 必须实现 标准化,用构建组成 大型软件的结构 也必须符合 一定的标准,否则就不可能提 高生产效率
软件工具的发展轨迹
我们需要软件开发工具,就是要 更快更好 地开发软件,就是为了提高软件开发的 质量 和 效率
软件开发工具一个值得注意的特点是 多样性 和 趋同性 的并存
在 信息处理、知识表达、事务处理 等问题上,确实是存在着普遍规律,只是我们还没有透彻理解和掌握它们
抽象程度最高的软件开发工具是 XML Mosaic
6.3从计算机语言发展而来的工具
几种代表性语言及其开发工具的比较
6.4综合性的平台或开发环境
Visual Studio与Eclipse相比,各自的优势
Visual Studio
在微软环境下和其他产品的交互协同能够浑然一体,天衣无缝
在运行速度,代码显示速度等方面也强于Eclipse
Eclipse
一款免费的、面向各平台开发者的软件开发环境,在各种操作系统上表现差异非常小
具有“大平台、小核心、多插件”的特点,更富有灵活性
7.Eclipse入门
7.1Eclipse简介
Eclipse体系结构
运行时内核
平台的运行库是内核,它在启动时检查安装了哪些插件,并创建关于它们的注册表信息
工作空间
负责管理用户资源的插件,包括用户创建的项目、项目中的文件,以及文件变更和其他资源
工作台
为Eclipse提供用户界面
其它插件
帮助组件
具有 Eclipse 平台本身相当的可扩展的能力
团队支持组件
负责提供版本控制 和 配置管理支持
7.2Eclipse的获取与安装方法
8.Eclipse工作台
8.1初识Eclipse工作台
工作空间
Eclipse在用户计算机磁盘上划出的一块区域,用来存放用户的工作资料,如代码、配置信息等
Eclipse工作台(Workbench)
是一个高级用户界面框架,它为用户提供一个整体架构 和 可扩展的用户界面
工作台的组成部分
菜单栏
工具栏
主工具栏
位于菜单栏下面,内容会随着活动透视图而改变
视图工具栏
位于视图的标题栏中,视图工具栏中的按钮只适用于该视图的操作
作用
向用户提供最常用功能的快捷按
工具栏是可以定制的
透视图
视图
资源管理器(导航器视图)
所有项目和各个项目的文件列表
大纲视图(Outline)
显示当前活动编辑器中所打开文件的纲要,如函数、变量等
单击大纲中的各项,可以快速在编辑器中定位到该项目
控制台视图(Console)
若编写的程序有从控制台输出内容,则在程序运行时控制台视图会显示相应的部分
错误视图
编写代码时,错误视图会实时显示程序中的错误,提示用户及时改正
错误视图中也显示相关警告信息
搜索视图
打开搜索对话框完成一次搜索操作,显示搜索结果的详细信息,以便用户查找和定位
任务视图
用于显示程序代码中未完成的任务
双击一项任务,光标会自动定位到该任务在编辑器中的位置
编辑器
概念
是工作台中的一个可视化组件,允许用户打开、编辑、查看、保存文档对象
在Eclipse中,所有视图共享同一组编辑器
常用的编辑器有哪些
C/C++编辑器
文本编辑器
任务编辑器
二进制文件编辑器
Web浏览器
8.2透视图及视图介绍
8.3编辑器介绍
8.4管理项目
Eclipse集成开发环境中,每个小程序都是以项目为单位
源代码
注释
配置文件
各种文件夹
新建项目的步骤
点击菜单栏中的文件(File)菜单,选中新建(New)子菜单下的项目(Porject)选项
打开常规(General)文件夹,选择项目(Project)后单击Next按钮
在项目名称(Project name)中输入项目名称,需要注意的是,项目名称是唯一的
单击 Browse 按钮可以重新选择文件保持的位置
输入完成后,点击 Finish 按钮即可完成新建项目操作
新建的项目会立即在资源管理器中显示
从外部导入项目的步骤
点击菜单栏中的文件(File)菜单,选择导入(Import)选项,弹出 Import 窗口
打开常规(General)文件夹,选择 Existing Projects into Workspace 单击 Next 按钮,进入到下一步
选择项目根目录(Select root directory)选项后单击 Browse 按钮选择项目所在目录
单击Finish按钮即可完成导入工作
导入后的项目会立即在资源管理器中显示
支持导入哪些
项目 Porject
归档文件 Archive File
通过 Jar 命令或 War 命令打包后形成的压缩文件
文件系统 File System
操作系统文件夹中的各类文件
首选项文件 Preferences
可以让用户通过该配置文件来个性化定制 Eclipse
8.5常用快捷键介绍
常用快捷键
查找或替换:Ctrl+F
查找上一个:Ctrl+Shiift+K
查找下一个:Ctrl+K
打开搜索对话框:Ctrl + H
编译:Ctrl+B
调试:F11
运行程序:Ctrl+F11
格式化代码:Ctrl + Shift + F
后退一步:Alt + ⬅
前进一步:Alt + ➡
重命名:Alt+Shift+R
8.6使用Eclipse帮助文件
使用联机帮助文档
单击菜单栏中的帮助(Help)菜单
选择帮助内容(Help Contents),即可打开帮助文档
使用动态帮助
单击 Eclipse 界面中的特定部分(如大纲视图)
单击菜单栏中的帮助(Help),选择动态帮助(Dynamic Help)选项即可打开动态帮助
新版本变成了 Show Context Help
当用户单击鼠标激活不同的 Eclipse 元素时,帮助视图也会相应的将帮助信息定位到该元素的文档处,便于用户查阅
9.使用Eclipse进行C/C++开发
9.1安装MinGW
MinGW
为了能够使用Eclipse CDT编译且运行C和C++程序,必须要安装一个C/C++编译器
MinGW是指用来生成可执行文件的编译环境,它是开发C/C++项目的工具集
9.2第一个C/C++项目
C语言是一种面向过程的计算机程序设计语言
新建C/C++项目
单击菜单栏中的文件(File)菜单,选择新建(New)子菜单下的项目(Project),弹出选择向导(Select a wizard)
在对话框中打开 C / C++ 文件夹,选择 C Project 后单击 Next 按钮进入下一步
在项目名称(Project name)标签中输入项目名称,在工具箱(Toolchains)标签中选择 MinGW GCC,单击 Next 按钮
在 Basic Settings 窗口中可以设置源代码的注释部分内容,填写作者(Author),版权声明(Copyright notice)等信息,单击 Next 按钮
在 Select Configurations 窗口中可以选择调试和发布文件夹及高级设定,单击 Finish 按钮完成项目创建
新建Source Folder
鼠标右击资源浏览器中新建的项目,选中新建(New)子菜单里的资源文件夹(Source Folder)选项
在弹出的 New Source Folder 窗口中,把光标定位到文件夹名称(Folder name),输入文件夹名称(一般为src),点击 Finish 按钮即可完成
新建C++ Class
鼠标右键点击 src 文件夹,在弹出的菜单中选择新建(New)子菜单里的类(Class)选项
在类名称(Class Name)标签中输入类名后,单击 Finish 按钮即可完成新建操作
编译C程序
在资源管理器中鼠标右键单击项目名称,在弹出菜单中点击 Build Configurations 中的 Build All
Release 文件夹包含了刚刚编译的可执行文件
运行C程序
在资源管理器中鼠标右键单击项目名称,在弹出菜单中点击运行方式(Run As)子菜单中的运行设置(Run Configurations)
在 Create, manage, and run configuartions 窗口中,单击新建运行配置(New launch configuration)按钮新建一个运行配置
进入新建窗口后,在 Build Configuration 选项中选择 Release,单击 Seach Project 按钮进行设置
在弹出的 Program Selection 窗口中,选择 exe 后,单击 ok 按钮
全部设置完毕后,点击 Run 按钮,即可运行项目
使用浏览功能
使用浏览功能可以从多个角度快速查看并定位到程序中的各个元素,包括代码的层次结构,调用关系,集成关系等
打开变量声明:F3
是从变量的引用位置直接定位到变量定义行的方法
将光标定位到编辑器中相应的变量位置
单击菜单栏中的浏览(Navigate)菜单,选择打开变量声明(Open Declaration)选项
Eclipse 自动将编辑器中的光标定位到声明变量的位置
另外 Eclipse 还提供了,当光标定位到某个变量时,把该变量的各个实例用灰色底色标注
打开类型层次结构:F4
快速打开程序中已经在使用的特定数据类型及相关继承结构的方法
将光标定位到编辑器中的相应变量位置(如 FILE 类型)
单击菜单栏中的浏览(Navigate)菜单,选择打开类型层级结构(Open Type Hierachy)选项
显示类型层次结构视图,左侧为该数据类型的继承结构,右侧时该数据类型包含的属性和方法
打开调用层次结构:Ctrl+Alt+H
提供了浏览函数的定义与调用层次,并快速定位到需要的函数
将光标定义到编辑器中相应的函数位置(如 add( ) 函数)
单击菜单栏中的浏览(Navigate)菜单,选择打开调用层次结构(Open Call Hierarchy)选项
在调用层次结构视图中,可以看到函数的调用
打开文件包含浏览器:Ctrl+Alt+I
用于浏览程序中包含的头文件
单击菜单栏中的浏览(Navigate)菜单,选择打开文件包含浏览器(Open Include Browser)选项
显示文件包含浏览器(Include Browser)视图,在视图中可以看到程序中所包含的全部头文件( .h 文件)
打开元素:Ctrl+Shift+T
Eclipse 中的元素
命名空间(Namespace)
类(Class)
结构(Struct)
类型定义符(Typedef)
函数(Function)
变量(Variable)
通过浏览功能可迅速打开需要的元素,元素可以是程序员在程序中定义或使用的,也可以是包含在C语言库文件中的元素
单击菜单栏中的浏览(Navigate)菜单,选择打开元素(Open Element)选项
在弹出的 Open Element 窗口中,输入 File,Eclipse 将使用模糊搜索的方式找到包含 File 关键字的所有元素
双击搜索结果可以在新编辑器中打开文件路径所指向的文件,并将光标定位到搜索内容的位置
9.3使用Eclipse重构功能
重命名变量
解决了变量、类、函数等重命名的问题
选中变量,单击菜单栏中的重构(Refactor)菜单,选择重命名(Rename)选项
填写新的变量名称,点击回车,程序中的变量将被替换
抽取方法
将程序中出现多次的代码段抽取出来形成方法,可以大大减少代码的长度并增加程序可读性和易维护性
同时使得方法的调用变得清晰和简单,抽取方法可以增加程序的可扩展性、提高代码的质量
选中代码段,鼠标右击选中部分,在弹出的菜单中选中重构(Refactor)子菜单下的抽取方法(Extract Function)
在弹出的窗口输入方法名,点击 OK 按钮,编辑器中显示抽取后的方法
抽取常量
将程序中的数字、字符等定义为常量,使得对于常量的调用和修改变得简单
选中常量,鼠标右击选中部分,在弹出菜单中选择重构(Rafactor)子菜单下的抽取常量(Extract Constant)
在打开窗口的文本框中输入常量名,点击 OK 按钮完成抽取变量
9.4使用搜索功能
使用查找/替换方法
单击菜单栏中的编辑(Edit)菜单,选择查找/替换(Find/Replace)选项,弹出搜索窗口,也可以使用 <Ctrl + F> 快捷键打开窗口
窗口中可以执行基本的查找和替换功能,并有选择查找范围、向前/向后查找、是否大小写敏感、查找循环等多个参数
分别在查找(Find)和替换(Replace with)中填入需要的字符,然后单击查找或替换按钮即可执行
使用Search菜单进行搜索
执行文件、任务和C/C++搜索功能
C/C++ Search
单击菜单栏中的 Search 菜单,选择 Search 选项打开搜索对话框
在 C/C++ Search 选项卡中,输入要搜索的字段,可以指定只搜索某些特定部分,如方法、变量、函数等
默认设置为搜索全部程序部分,设置完成后单击 Search 按钮即可进行搜索
显示搜索结果
搜索完成后,Eclipse 将会在搜索(Search)视图中显示与本次搜索相关的搜索结果
使用视图工具栏的 Show Next Match、Show Previous Match 按钮查看搜索结果
双击视图中的搜索结果,Eclipse 将会激活编辑器,并在编辑器中将光标定位到该搜索结果的位置
10.调试程序
10.1安装GDB
10.2调试C程序
CDT调试器:运行用户设置断点、暂停、单步执行代码等方法来控制程序的运行过程
设置行断点
断点可以使程序在运行到断点位置时自动暂停并且显示程序当前的状态
激活状态的断点会以蓝色的圆圈显示
非激活状态的断点则是以白色透明圆圈显示
添加行断点
在资源管理器中打开需要调试的文件
将光标移动到编辑器左侧边缘的标记区域上,用鼠标右键单击,从弹出菜单中选择 Toggle Breakpoint 即可设置一行断点
设置后的 Eclipse 将在标记区域上的这一行显示一个蓝色圆圈
显示断点视图
单击菜单栏中的窗口(Window)菜单,在显示视图(Show View)子菜单下选择其他(Other)选项,弹出 Show View 窗口
在 Show View 窗口中,打开调试(Debug)文件夹,选择断点(Breakpoint)后单击 OK 按钮,即可激活断点视图
删除行断点的三种方法
将光标移动到编辑器左侧边缘的标记区域上,双击需要删除的行断点,即可删除该行断点
将光标移动到编辑器左侧的标记区域上,用鼠标右键单击需要删除的行断点,在弹出的菜单中,选择 Toggle Breakpoint
在激活断点视图中选中需要删除的行断点(可多选),单击工具栏中的删除选中断点(Remove Selected Breakpoints)
激活和禁用行断点的两种方法
将光标移动到编辑器左侧边缘的标记区域上,用鼠标右键单击需要禁用的行断点,在弹出的菜单中选择 Disable Breakpoint 即可禁用该行断点
在激活断点视图中选择需要禁用的行断点,将该行断点左侧复选框中的勾去除,既可禁用该行断点
设置方法断点
与行断点类似
设置事件断点
在程序运行过程中,发生特定问题时(如异常触发、线程启动、线程退出)将程序暂停
在激活断点视图中,单击视图上方工具栏中的视图菜单(View Menu),在弹出的菜单中选择添加事件断点(Add Event Breakpoint)
在弹出的对话框中有一个下拉框,选择一个事件类型后点击 OK 按钮
设置断点动作
每个断点,用户可以自定义它被触发时的动作,如声音、显示消息等
打开断点视图,用鼠标右键单击需要设置断点动作的断点,在弹出的菜单中选择断点属性(Breakpoint Properties)
在弹出的窗口中的左侧选择动作(Action),在窗口中设置自定义断点的动作
调试程序
调试相关配置
单击菜单栏中的运行(Run)菜单,选择 Debug Configurations 选择
在弹窗中单击左侧的 New launch configuration 新建一个调试配置
在名称(Name)中输入调试的名字,在 Main 选项卡的 Project 选中被调试的项目
单击 Search Project 按钮,在弹出的对话框中选择要 Debug 的项目
单击 OK 按钮,返回到 Eclipse 主界面,单击工具栏中的 Debug 图标,选择刚刚设置的调试配置,即可开始调试
调试透视图
专门为调试程序设计的透视图
默认情况下,调试透视图包括
调试视图
显示当前调试的程序线程和其所处的状态
变量视图
显示整个调试过程中程序变量值的变化情况
该视图是帮助程序员差错和纠错的主要手段
断点视图
编辑器
在调试透视图中,编辑器的左侧标记区域中有一个 → 图标,用于指示当前调试程序执行的具体位置
大纲视图
控制台视图
调试C程序
P178
单击视图工具栏中的继续(Resume)按钮即可继续执行暂停的线程,线程将自动执行到第一个断点处并停止
变量视图将显示程序中所有变量的当前值
单步遍历程序可以让用户逐行地运行整个程序
单步跳入 Step into(F5)
线程将运行所在行的程序,并在下一个可暂停位置后暂停执行
单步跳过 Step over(F6)
线程将跳过该行并运行至下一个可暂停位置后暂停执行
单步返回 Step Return(F7)
单步返回仅对函数调用时有效
执行单步返回操作即跳出该函数,返回至调用该函数的位置继续进行调试
单击调试视图工具栏中的中断(Terminate)按钮,或者快捷键 <Ctrl + F2> 即可中断当前线程
11.Eclipse CDT开发常用功能
11.1自定义编辑器
设置首选项
单击菜单栏中的窗口(Winodw)菜单,选择首选项(Preferebces)选项
C/C++首选项设置
外观(Appearance)
自定义 C/C++ 编辑器的界面风格和各元素,包括显示转换单元、在资源管理器和 C/C++ 项目视图中将头文件排序等
编辑控制台(Build -> Console)
自定义控制台各参数,如背景、字体颜色、最大输出行数等
是否在每次编译时自动清空控制台区域
是否在编译时自动打开控制台视图
是否在编译时将控制台置顶
限制控制台一次最多输出 的消息行数,默认为 500 行
自定义控制台中各个部分和消息的颜色
调试(Debug)
自定义 Debug 视图相关参数,包括编码方式、是否显示完整文件路径、断点动作设置等
任务标记(Task Tags)
自定义任务标签,默认的任务标签格式是 TODO Normal
可以通过 New、Edit、Remove 按钮分别新建、编辑、删除任务标签
常规首选项设置
外观(Appearance)
自定义整个 Eclipse 界面风格
键(Keys)
自定义快捷键相关参数
搜索(Search)
自定义搜索及视图相关参数,如是否在搜索后激活搜索视图;是否忽略可能的搜索匹配项等
工作空间(Workspaces)
设置是否在启动 Eclipse 时提示选择工作空间,设置常用工作空间和个数
浏览器(Web Browser)
默认的 Web 浏览器,并选择使用 Eclipse 自带浏览器或使用外部浏览器
设置编辑器布局
一个编辑器区域 可以包含多个编辑器和多个相关的视图
编辑器与视图不同,不能被用户关闭,用户可以根据自己的需要改变编辑器在 Eclipse 界面中的位置和大小
最大化、最小化显示编辑器
打开一个文件,双击标签区域即可全屏显示该编辑器区域,再次双击标签区域会恢复到初始状态
或者通过单击编辑器右上角的图标来最大化、恢复和最小化编辑器
定制编辑器位置
通过拖动编辑器上方的标签 或 显示/隐藏周围的视图
11.2定制工作台
定制工具栏
解锁或锁定工具栏
鼠标右键单击工具栏空白部分,在弹出的菜单中勾选 Lock the Toolbars
定制快捷键
点击菜单栏总的窗口(Window)菜单,选择首选项(Preferences)选项
在弹出的窗口左侧部分树形菜单中,选择 General -> Keys,即可打开定制快捷键界面
选中描述看中出现该功能的简单介绍,将光标定位到绑定(Binding)输入框,按下需要设置的快捷键
在 When 的下拉框中可以设定该快捷键的作用范围,如仅在某个视图中生效
点击 Apply and Close 按钮,完成设置快捷键
定制透视图
点击菜单栏总的窗口(Window)菜单,选择透视图(Prespective)选项下的定制透视图(Customize Prespective)
在打开的窗口上方可以看到四个标签,分别用来定制
工具栏
文件工具项
新建 C/C++元素工具项
编译配置工具项
搜索工具项
工具栏的定制只会影响到 C/C++ 透视图
菜单栏
文件菜单
编辑菜单
源代码菜单
重构菜单
搜索菜单
命令组
断点
编译配置
快捷方式
新建子菜单
打开透视图子菜单
显示视图子菜单
可以通过打勾的方式,控制所有工具栏按钮的显示
复位透视图
单击菜单栏中的窗口(Window)菜单,现在视图(Perspective)选项下的复位透视图(Reset Perspective)
在弹出的询问对话框中,单击复位透视图(Reset Perspective)按钮,即可将透视图复位到默认状态
保存透视图
在用户定制完透视图后,如果希望其保存下来,以便以后使用时可以直接使用该视图而不用重新进行定制
单击菜单栏中的窗口(Window)菜单,现在视图(Perspective)选项下的保存透视图(Save Perspective As)
在弹出的对话框中,输入透视图的名字,该名称可以使用新名称,也可以使用已有的名称,但会覆盖现有的透视图,应当谨慎操作
删除透视图
单击菜单栏中的窗口(Window)菜单,选择首选项(Preferences)选项
在弹出的对话框左侧部分,展开常规(General)树形菜单,选择透视图(Perspectives)选项
选中要删除的透视图,单击 Delete 按钮即可删除透视图
Eclipse 本身自带的透视图无法删除
11.3格式化代码
设置代码格式
代码格式化之前首先要设定代码格式
单击菜单栏中的窗口(Window)菜单,选择首选项(Preferences)选项
在弹出的对话框左侧部分,展开 C/C++ 树形菜单,选择代码格式(Code Style)
在代码示例中,用户可以根据自己的喜好更改格式,如
花括号位置
代码缩进的记录
修改成功后单击应用并关闭(Apply and Close),将该代码格式设置为默认格式
用户也可以根据自己的需要新建代码格式 或 从外部导入已有的代码格式
格式化代码 Ctrl + Shift + F
打开需要格式化的程序,选择其中一段代码(如果未选择,则默认格式化当前编辑器中的全部代码)
用鼠标右键单击空白处,弹出菜单,选择源代码(Source)子菜单下的格式化(Format)选项即可
使用代码模版
为用户提供的可自定义的结构化代码格式,用户可以省去许多重复的代码编写工作
单击菜单栏中的窗口(Window)菜单,选择首选项(Preferences)选项
在弹窗的对话框左侧部分,展开 C/C++ 树形菜单,选择代码格式(Code Style)中的 Code Templates
在Eclipse中允许用户在注释、代码和文件三个维度设置代码模版
11.4生成历史记录
将文件替换为历史版本
Eclipse 自带保持历史记录功能,支持用户随时将程序恢复到之前某个时间点
在左侧资源管理器中,选择需要进行恢复的程序,用鼠标右键单击
在弹出的菜单中选择 Replace With -> Local History
在弹窗中的 Revision Time 处显示了该文件的所有历史版本,也就是可以恢复的文件版本
选择其中一个版本,可以在底部窗口中显示该版本与目前文件的对比结构,其中的差异将会以浅绿色标记显示
单击 Replace 按钮可以把文件恢复到历史记录的版本
Eclipse 指挥记录比较短时间内的文件版本,如果需要进行长期的版本控制,则需要借助 CVS 版本控制软件完成
从历史记录中恢复已删除文件
在资源管理器中,用鼠标右键单价项目名称,在弹出的菜单中选择从历史记录中恢复(Restore from Local History)
在打开的窗口中,可以看到项目中曾经存放过的所有文件,以及它们的各个版本
选中需要恢复的文件后单击 Restore 按钮即可完成
12.CVS的安装及使用
12.1CVS介绍
CVS是什么
并发版本控制系统(Concurrent Versions System,CVS)是一个常用的代码版本控制系统
使用CVS可以对代码进行集中管理,记录代码所有的更改历史
提供协作开发的功能并支持多人同时修改代码文件
利用版本控制软件的好处
随时将程序恢复到以前的某一时间点
实现程序的互斥性修改,能够实现某一程序在同一时间只能由一个人开发人员修改
对程序修改进行有效的管理
可以将用户分为管理员和程序员两种角色
只有管理员可以将程序冻结(Freeze)和解冻(Unfree)
被冻结的程序是不允许修改的
将开发环境与测试环境、运行环境进行有效的隔离
评估软件开发人员编写的程序质量。控制软件开发的进度
管理文档
使用者可以在版本控制中建立专门的文件夹,用于存放软件开发过程中生成的各种文档
对于每个文档可以存放它的多个版本,以便随时查阅
12.2常用版本控制软件
Rational ClearCase
ClearCase涵盖的范围包括版本控制、建立管理、工作空间管理和过程控制
ClearCase支持现有的绝大多数操作系统
ClearCase安装、配置、使用相对复杂,需要进行团队培训
Visual SourceSafe(VSS)
Visual SourceSafe(VSS)是一种很好的入门级的配置管理工具
VSS易学易用,采用标准的windows操作界面
VSS提供共享、分支和合并功能,支持团队开发
VSS只能在windows平台上运行,不能运行在其他操作系统上
VSS安全性不高
VSS的用户可以在文件夹上设置不可读、可读、可读写、可完全控制四级权限
VSS不收费,对用户的数目没有限制
CVS
CVS是开发源代码软件世界的一个伟大杰作,简单易用、功能强大、跨平台、支持并发版本控制,而且免费
其最大的遗憾就是缺少相应的技术支持,许多问题的解决需要使用者寻找资料、甚至读源代码
Star Team
一个用于管理配置和变更的集成环境,能够与众多工具平台进行无缝集成
Firefly
Hansky公司软件开发管理套件中的重要组件,可以轻松管理、维护整个企业的软件资产,是新兴的优秀的版本控制软件
PVCS
MERANT公司核心产品,主要支持team开发中的一些列管理问题
Perforce
美国Perforce软件公司产品,易用性强,速度快
CCC
最早的配置管理工具之一,元老级的版本控制软件
RCS
元老级版本控制软件,属于单一文件的版本维护系统,适用于任何正文文件的版本维护
SCCS
和RCS类似,也是早期的基于单一文件的版本维护系统
12.3CVS的安装与配置
CVS的安装
CVS Control Panel的设置
About页面提供了CVS产品的版本、来源以及服务状态等信息
CVS 资源库的设置
即软件资源的存放地,用来放置开发的代码并对其进行控制管理的一个文件夹
CVS的访问权限的设置
账户
管理员账户
一般用户账户
一般是开发小组的管理者给小组成员分配一些账户,而小组成员通过这些账户对 CVS 资源库进行访问
管理员对这些账户有更改和删除的权力
保证了软件产品的安全性
将软件载入CVS资源库
打开 CVS Perspective 视图,创建一个新的 CVS 资源库连接
右键单击 CVS Respositories 视图区域弹出快捷菜单,在 New 子菜单中选择 Repository Location 选项
在弹窗中填写 CVS 相关信息
回到 Java 视图,将项目载入到 CVS 库中,鼠标右键单击项目,在弹出菜单中选择 Team -> Share Project
选择对应的 CVS 库,点击 Finish 完成配置
CVS的日常使用
提出(Check Out)
代码同步(Synchronize)
更新本地文件(Update)
提交本地文件(Commit)
避免冲突(Mark as Merged)
CVS常用术语
资源库(repository)
签出(check out)
提交(Commit)
更新(Update)
冲突(Conflict)
快照(snapshot)
标签(Tag)
分支(Branch)
13.Eclipse插件的使用与开发
13.1插件简介
插件的定义
插件是一种遵循其所依附的软件的接口规范所编写出来的程序
插件实际是对原有软件的扩展,替应用程序增加一些所需要的特定功能
插件的构成
每一个插件都由一个插件清单文件(plugin.xml)和一些可选文件组成
插件清单文件描述了插件的名字、版本号、使用的或者本身定义的扩展点等信息
plugin.xml 插件清单文件
主要由plugin、runtime、requires和extension四个标签
plugin 标签的属性提供的是插件的基本信息,除了 name、version、provider-name 等,最重要的是 id,它要求不能和现有的 Eclipse 插件 id 有冲突
requires 标签中所列出的是需要的插件
runtime 标签指明的是该插件所在jar包的文件名
extension 标签是插件扩展点的信息
plugin.properties 插件的一般信息
记录插件的属性设置,容纳被 plugin.xml 引用的字符串
about.html 记录证书信息
*.jar 插件需要的类文件
lib 容纳第三方 JAR 包
icons 容纳 icon 文件,通过是 GIF 格式
其他需要文件
13.2使用PDE进行插件开发
插件开发环境(Plugin Development Enviroment,PDE)新增了透视图来帮助开发者创建、开发、测试、调试和部署插件
PDE透视图主要包括
清单编辑器
概述(Overview)页面
该页面有两个用途
此页面由 一般信息 和 执行环境 两个主要部分组成,它们定义了重要的插件属性
* 通过 插件内容、扩展/扩展点内容、测试 和 导出 部分,提供了有关如何开发、测试和部署插件的快速参考;
* 这部分提供了超链接,当点击这些超链接时,将跳转到其他个页面或调用命令;
* 单击测试部分的两个超链接,可以分别以 运行模式 和 调式模式 启动测试平台;
* 在导出部分,可以通过 Manifests 文件组织向导来组织插件,可以跳转到配置页面确定需要将哪些内容部署到插件中,还可以通过调用导出向导来导出插件;
* 这部分提供了超链接,当点击这些超链接时,将跳转到其他个页面或调用命令;
* 单击测试部分的两个超链接,可以分别以 运行模式 和 调式模式 启动测试平台;
* 在导出部分,可以通过 Manifests 文件组织向导来组织插件,可以跳转到配置页面确定需要将哪些内容部署到插件中,还可以通过调用导出向导来导出插件;
依赖性(Dependencies)页面
当前插件运行时所需的插件列表
运行时(Runtime)页面
扩展(Extensions)页面
扩展点(Extension Point)页面
构建(Build)页面
插件模版
Hello,World模版
带有编辑器的插件
具有编辑器的插件
具有弹出菜单的插件
具有多页面编辑器的插件
具有视图的插件
具有属性页面的插件
具有增量项目构建器的插件
13.3常用插件扩展点
常用插件扩展点
视图扩展点
编辑器扩展点
透视图扩展点
13.4常用插件介绍与使用
常用插件有哪些
代码类
C/C++ Development Tools(CDT)
建模类
Model Development Tools(MDT)
Eclipse Modeling Framework(EMF)
语言类
PHP Development Tools(PDT)
UI类
Visual Editor (VE)
Graphical Editing Framework(GEF)
代码管理类
Log4E
J2EE 类
Lomboz
数据库类
DBEdit
娱乐类
Raman VideoPlayer, Eclipse Games
EMF(Eclipse Modeling Framework) 插件
是 Eclipse 的建模框架
可以实现四个功能
代码生成
所有模型的代码都可以自动生成
输入
用户可以通过模型定制文件作为代码生成的输入文件
默认的持久化机制
EMF 能够保存和加载 XML 的模型文件
模型编辑器
EMF 能够为用户生成模型编辑器
Visual Editor 插件
目标
构建一个用于构建工具的工具
允许使用者通过一个所见即所得的图形化编辑器来创建 SWT/AWT/Swing 应用程序
14.常用建模工具
14.1UML建模介绍
UML
统一建模语言(Unified Modeling Language,UML)是一种面向对象的建模语言,它提供了描述软件系统模型的概念和图形表示法
因为采用了面向对象的技术和方法,所以能准确方便的表达面向对象的概念,体现面向对象的分析与设计风格
可以实现大型复杂系统各种成分描述的可视化、说明并构造系统模型,以及建立各种所需的文档
是一种定义良好、易于表达、功能强大且普遍适用的建模语言
面向对象方法的出现和发展
当前人们所要开发的信息系统不同于以前,在功能等诸多方面都变得很复杂且灵活多变,系统的边界也更加难以界定
复杂性、多样性和相互关联性是各个信息系统的重要特征
于是面向对象的方法应用而生
面向对象概念认为客观世界的任何事物都是对象,或者说对象是客观世界的抽象
在程序设计中,对象表达为被描述事物的数据和对数据的处理的统一整体,也称之为封装
把对象按相同特征区分成为类,类具有层次性,子类可以继承父类的所有数据和操作,由于对象是封装的,对象的联系是通过传递信息实现的
面向对象方法及基本特点
面向对象方法简称OO方法,它由面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)组成
它起源于面向对象的编程语言,强调对现实世界的理解和模拟,把现实世界到信息世界的转行工作减少到最小,所以特别适用于系统分析和系统设计
面向对象的一些概念
对象
对象是一些属性及操作行为的封装体,它是问题空间中一些东西的抽象
对象就是问题空间中的事物,它具有一组属性和一组操作
类
类是对一组几乎相同的对象的描述
从一组对象中抽象出公共数据与方法,并将它们保存在一类中,类是面向对象功能的核心
类是创建对象的框架,而对象是类的实例
在同一类中的对象也可根据其他相似特征而分成子类。所以类具有层次性
属性
属性是以静态的数据组成,用以描述类和对象所固有的特征
是类和对象的性质,并以此来区分不同的类和对象
抽象
抽象是人们认识客观世界中复杂性的一种基本方法
抽象是事物或现象的简括描述,突出事物或现象之间的共性,而暂不考虑它们之间的差异
封装
封装即信息隐藏
对象就实现了很好的封装,它向外提供了一组数据结构和一组操作,而把内部细节隐藏起来
封装使一个对象形成两个部分
接口部分
实现部分
对于用户来说,接口部分是可见的,而具体实现部分则不可见
方法
方法是驻留在对象中的过程
方法是当对象接受消息时执行的操作
方法还能发送消息至其他请求动作或信息的对象
继承
继承指对象继承它所在类的结构
子类可以继承其父类的特性,同时也可以有自己的新特性和新方法
消息与多态
在面向对象方法中,完成一件事情的方法就是向有关对象发送消息
多态
多态指不同事物具有不同表现形式的能力
多态机制使具有不同内部结构的对象可以共享相同的外部接口
这样又很好地支持了消息机制
而不同对象接收到同一个消息可产生完全不同的结果也是多态的一种体现形式
面向对象方法与传统方法
优点
解决了软件维护的复杂性、提供高生产效率
具有灵活性和各种性能使软件开发的风险降低、知识重用度提高
面向对象方法更加接近于自然,在客观世界的实际信息需求和解决方案转化为信息世界中的软件系统功能的过程具有极大的优势,实现更迅速,交互性更好,易于维护
面向对象方法的基本过程,一般由四个部分组成
标识和定义对象及类
组织类间的关系
在类层中构造框架
建立可重用的类库和应用程序框架
面向对象的系统分析设计方法
Booch 方法
OMT 方法
Coad/Yourdon 方法
OOSE 方法
组件思想
组件是一个可重用的软件结构,一个预先构建的封装的代码模块,能够与其他组件很快的生成定制的应用程序
组件的目标是粗粒度的复用,类是组件技术中的一个基础概念,核心的概念是接口
UML与系统开发
分成五个开发阶段
需求分析
分析
设计
编程
测试
UML 的组成
视图
从不同角度来观察待建模的系统
用例视图 (Use-Case View)
从系统外部使用者对系统的需求来描述该系统工程所应具备和完成的功能
是 UML 的核心视图,一般包括
用例图
活动图
顺序图
逻辑视图(Logical View)
用于描述系统内实现的逻辑功能
描述了系统的静态结构关系,也描述了系统内的动态协作关系
静态关系有
对象图
动态关系由
状态图
时序图
协作图
活动图
组件试图(Component View)
从系统实现的角度来描述模型对象间的关系
由组件图组成
配置视图(Deployment View)
用户说明系统的物理配置,如计算机和设备以及相互间的连接关系
由配置图组成
图表
描述视图内容的图
用例图(Use-Case Diagram)
用于描述外部项与系统提供的使用事件之间的联系
使用事件定义了系统的功能需求
类图(Class Diagram)
用于描述系统的静态结构
类可以用不同方式连接,包括
联合
依赖
独立或包装
一个系统一般有多张类图,一个类可在不同的视图中出现
对象图(Object Diagram)
用于表述系统的静态结构,它使用与类图一样的符合表示,但并不是同一种图
不同之处在于对象图表示的是类中的许多对象实例,而不是类本身
对象图也可以作为协作图的一部分,说明一组对象之间的动态协作关系
状态图(State Diagram)
用于说明类中的对象可能具有的状态,以及由事件引起的状态的改变
状态的改变称为转换(transition),一次转换也可以由相关的行动引起
状态图也可以以系统的整体形式画在一张图上
顺序图(Sequence Diagram)
用于描述对象间的动态协作关系
表达了对象间发送信息的时序,同时也表达出对象间的相互作用,以及当系统执行到某个特定位置时会发生的事
顺序图是由一条纵线上的一些对象组成,以时间流动为方向,表达对象间消息的交换
协作图(Collaboration Diagram)
用于描述对象的动态协作关系
在表达协作关系时,通常可视情况选择时序图或协作图
在表达消息交换时,协作图还可以用于秒速对象及它们之间的关系
协作图画法与对象图一样,但强调对象间的关系(使用的符合与对象/类图一样)
协作图还可以表达活动对象以及一起执行的其他活动对象
活动图(Activity Diagram)
用于描述系统活动的流程
可以在一张活动图中表达多个活动的流程,也可以在一张图上表达一个操作所完成的所有活动
活动图由动作状态组成,包含将完成的活动说明
当一个动作完成时,激发一个明确的事件,并转到一个新的状态
它可以描述并行执行的活动
它还包括了当前动作部分完成时收到或发出的消息说明
组件图(Component Diagram)
用于描述组件代码的物理结构
它可以是代码组件、二进制组件或一个任意可执行的组件,包含类的逻辑和类的实现等信息
它建立了一个从逻辑视图到物理视图的映射
还描述了组件的依赖关系,可以用来分析一个组件的变化对另一个组件所产生的影响
配置图(Deployment Diagram)
用于描述系统中软件和硬件的物理结构
它可以描述计算机或其他节点设备、相互间的连接关系,以及连接的类型,还可以描述组件间的依赖关系
模型元素
各种图表中所用的概念符号,称为模型元素
它是按语义定义的,具有一致的视图含义,用图形或符号来表达
做为元素间关系的连接描述也成为模型元素,主要有
联合
依赖
聚合
模型元素还描述为消息、动作、类型等
基本机制
UML 的基本机制表现为各种图标上的附加信息,用于描述那些模型元素无法表达的内容
有三种方式
修饰
通过特定的修饰把一些语义加到模型元素上
注释
UML 提供增加注释的方式以表达那些模型元素无法表示的信息
注释可放置于图中的任何位置上,可以包括任何信息
说明
用于郑家无法正式在图中表示的元素实例的附加说明,可以由文本的形式对图中相应部分的责任和权限加以说明
14.2Rational Rose建模工具介绍
Rational Rose 是面向对象的可视化建模的软件工具,包括面向对象的分析、设计、建模和组构
Rose采用三层解决方案,是由用户接口层、事物处理原则层和数据层组成的应用模型
建模过程
确认应用系统的功能需求,并为事物处理原则建模
对抽象的对象映射需求,提供设计模版并创建惯用的模版
分辨和设计对象或划分三层模型的服务
对软件的组成部分映射成对象并设计组件在网络上如何分布
Rose进行可视化建模的特点
支持 UML 的建模
采用基于组件的开发
支持多语言开发
支持双向工程
全面的团队支持
简单易用
提供可视化的差异比较以及合并工具
提供框架向导
提供扩展接口,以实现定制的Rose
基本报告生成,可以生成数据词典
COBRA/IDL生成
数据库模式生成
微软存储库集成
实现Oracle8的正向和逆向工程
支持Forte附加项,以实现在此环境下的分析、构建企业级应用
14.3使用Rational Rose建模
UML建模的三大部分
用例视图视图
用例视图设计主要借助用例图、活动图、状态图来了解用户的需求
逻辑设计
逻辑设计要用到类图、顺序图和交互图
主要通过设计相应的类和对象实现前面用例所定义的用户需求
其中可以用类图来表现出系统的静态信息
用顺序图、交互图等表现出系统的动态信息
物理设计
在系统物理设计阶段,要借助部署图等视图,确定系统的物理体系结构
而物理体系结构揭示了系统硬件的结构,其中包括各个不同的结点,并指出这些结点是如何连接在一起,以及系统的物理结构和软件之间的依赖关系
需求分析之用例与活动图
用例图主要通过用例来描述系统的功能性需求,它是系统中与实现无关的视图
活动图在本质上就是流程图,它很好地描述了系统的活动、判定点、先后顺序和分支等
系统分析与设计
顺序图
顺序图是强调消息时间顺序的交互图
顺序图描述类系统中类和类之间的交互,它将这些交互建模成消息交换
换句话说,顺序图描述了类以及类之间相互交换以完成期望行为的消息
协作图
协作图是强调参加交互的个对象的组织
协作图只对相互有交互作用的对象和这些对象间的关系建模
组件图
组件图描述了软件的各种组件和它们之间的依赖关系
组件图通常包含三种元素,即组件、接口和依赖关系
每个组件实现一些接口,并使用另一些接口
类图
类图是根据系统中的类以及各个类之间的关系描述系统的静态视图
类图不仅显示系统内信息的结构,还描述系统内这些信息的行为
类由三部分组成
类名称
类属性
操作又称方法
14.4Eclipse UML建模工具介绍及使用
0 条评论
下一页