软件技术开发名词_第1页
软件技术开发名词_第2页
软件技术开发名词_第3页
软件技术开发名词_第4页
软件技术开发名词_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Win32 编程 很不幸 我从开始学习编程到理解这个名词中间隔了很长的时间 上个世纪的学习环 境可见一斑 很长时间里我都不明白 32 是指什么 我用过 Dos Win31 win95 win97 但好 像没用过名为 Win32 的操作系统啊 很久以后我才知道 32 在这里并不是指操作系统的版 本号 而是指 32 位 微软操作系统在 win31 及其以前都是 DOS 系统 windows 只是在 dos 下运行的一个大程序而已 在其后 win95 则稍有改变 windows 除了 DOS 核心以外也真正 成为了操作系统的一部分 提供着各类操作系统提供的服务 应该说 在 win95 之后的 windows 新近的 64 位 win 系统以前 都可以称之为 win32 系统平台 95 98 实际上是 16 与 32 位混合 所以在这样的平台上 直接或间接使用系统提供的 API 编程 就称之为 Win32 编程 对 Visual Studio 而言 Win32 编程一般指 SDK MFC ATL 这几类开发方法 其中 ATL 在国内应用不是很广泛 一般应用于以 COM 组件为架构的中大型软件产品 SDK Software Development Kit 常译为软件开发 工具 包 在 Win32 编程领域一般指与 MFC 这类框架编程相区别的 直接调用 Windows 提供的 API 的开发方式 与字面原意有一些区别 另外一个经常见到的说法就是某软件 硬件 带有自己的一套 SDK 这里其实一般是指一套 API 库函数或者类库 供上一层的开发者调 用 又譬如常说的 DX 的 SDK 其实是微软开发的一套 COM 组件 供上层开发者使用 总之 供程序员使用的比较完备的代码库 就可以称之为 SDK MFC Microsoft Fundation classes 微软基础类库 大家都知道 使用 SDK 编程方式往往有很多每次都重复的固定不变的一些代码 为了 提高编程的效率 减少上千个 API 带给开发人员巨大的精神压力 微软开发出了这么一个 类库 注意 这个类库与操作系统本身无任何关系 它只是对 API 进行了一个面向对象的 封装 当然 还给出了一系列编程的框架 使用 SDK 的方法 使用 Visual Studio 通过调 用 Windows API MFC 你也可以做得出来 MFC 把一些固定不变的代码已经写好了 只 在编译时候链上 所以我们的代码里看不到 WinMain 而事实上整个程序的运行 和 SDK 的方式无任何区别 初学者请记住这一点 另 补充一点个人感想 MFC 的初衷 带给开 发人员更多的便利 我觉得并不太成功 学习 MFC 所费的力气和最终的所得 并不太成 正比 API Application Programming Interface 应用程序接口 这个词的出现频率很高 从某种意义上来说 也可以看作是 SDK 的一个子集 这也是 做给程序员的程序 不过一般指用导出函数的方式提供服务的函数库 不包括类库和组件 GDI Graphic Device Interface 图形设备接口 这个是 Win32 程序下最常用的显示方式 与 DirectX OpenGL 处于同一级 在 DOS 要显示一些东东可不是容易的事 最简单的是调用一些 C 的图形库函数来实现显示 不过 一般也就是些画线 填色 输出几个文字 效果很弱 所以 DOS 程序界面一般都不怎么样 且实现起来不是一般的复杂 要复杂一点的动画 图片显示什么的 经常要用到的就是硬 件中断 调用一些显卡自身的子程序 固化在显卡内的 来做 因为每一个显卡都不同 所 以 DOS 的游戏兼容常常由于显卡的差异而很糟糕 到 Windows 下大家就幸福多了 Windows 将硬件这一层屏蔽起来 用一个表格 Device Context 来代表一个显示 我们要 做的就是在这个表格上填好相关参数 然后画上我们想画的东东 然后操作系统会依照这 个表格 DC 把相应的显示内容 一般是一块显示内存 传送到指定显卡的指定的显存 再由显卡传给显示屏 我们不再需要与不同的显卡打交通 这是一个十分伟大的胜利 GDI 中最常用的是双缓存技术 就是说你可以在内存中创建 也就是复制 一个 DC 只 不过在这个 DC 中显示的不再被传送到显示器上 有什么用呢 因为它的各参数是与当前 屏幕 DC 一致的 COPY 嘛 当然是这个结果 所以它的显示内容可以完整无失真地传 送到屏幕 DC 上 我们通常在内存 DC 上画图 譬如画一圆 再画一条直线 画完后一次 性地传送到屏幕 DC 上 这样对用户来说屏幕只刷新了一次 可以解决你画一点内容屏幕 即刷新一次导致的闪烁问题 当然 双缓冲甚至多缓冲还有很多别的用处 那就要靠自己 揣摩了 DirectX 通常简称为 DX 读音 低叉 这是个很吸引人眼球的名词 读起来就很上口 Windows 为我们作了许多屏蔽底层硬件的工作 其中 DX 是最知名的技术之一 操作系统 要与各类硬件打交道 特别是多媒体相关的 譬如显卡 声卡 手柄输入 多媒体流的网 络传输等等 这些事情如果都自己来弄的话 那就太要命了 这些一般都涉及系统底层 自己也很难做出来 而 DX 则正是这么一套操作系统提供的隔离多媒体硬件与程序员的间 质 DX 自身一般并不实现处理的能力 它是一个标准 要求硬件来满足 好比 DX 提供 一个函数名 硬件来实现函数内容一样 通过它我们可以非常简单而快速地调用硬件提供 的各类服务 它主要包括 DirectDraw 通过直接访问显示硬件来提供快速的图象处理能力 DirectSound 提供了软硬件的低延迟声音混频和回放 以及直接访问音频设备的能力 DirectPlay 它明确的提供了通用环境连接能力来简化你应用程序之间的通讯服务 Direct3D DirectDraw 的 3D 版 DirectInput 简化你的应用程序访问鼠标 键盘和操纵杆 设备的能力 DX5 0 之后又增加了一些 如 DirectShow 不再详述 DX 一个重要的特点 就是你可以通过它直接访问硬件而无需知道硬件的具体细节 譬如 DirectDraw 就能够越过 内存而直接访问显存 这样的速度将比 GDI 快很多 不在一个数量级上 补充一点 DX 是以组件的方式提供的 而不是通常的导出 API 的形式 DX SDK 的最新版本是 9 0 COM component object model 组件对象模型 一般简称组件 这是微软为了解决代码重用的一个重要机制 重用代码的最简单办法是源代码重用 把写好的函数和类加到自己当前的代码中 编译即可 简单是简单 敝病却显然的多 另一 个常用的方法是单独做成模块 以 DLL 的形式分发 DLL 导出函数或者类 客户程序用 动态 静态链接的方法将其加载 这显然比前一种源代码的方法好一些 难度也不大 最为 常用 但 DLL 也有一些不足 最根本的 它不是二进制兼容 DLL 版本升级一次就需要 与客户程序代码重链接一次 有些时候这几乎是不可能的任务 为了更好地让编程像 搭 积木 一样简单 让模块可以完美地配合 完美地替换 COM 产生了 COM 不是类库 不是代码 不是操作系统的服务 而是一套编程模型 理论上来说 它与语言无关 与操 作系统无关 unix 下同样可以做 COM COM 是一种程序结构模型标准 你做的 DLL 或 EXE 在结构上满足这么一个标准 那这个 DLL 或 EXE 就是一个组件 它将在该平台上成 为二进制兼容 COM 主要利用了注册表来登记本模块的信息 客户程序调用时首先查注册 表 找到所需组件的位置 这实现了位置透明 然后就用 Loadlibrary 把它加载进来 这 和普通调用没有本质区别 区别在于由于组件特殊的实现方法使得整个过程中用户程序都 不知道组件的位置 组件的类的实例化过程 如何销毁 不能直接访问组件的任何实现细 节 用户只与组件的几个 public 接口打交道 这将实现真正的模块之间的独立 对用户程 序而言 对于目标组件的认识 除了接口 一无所知 在接口不变的情况下 组件可任 意 替换而客户程序不作任何改动 无需编译 仅这一点 在中大型程序的模块集成的过程中 就将节约相当多的时间 STL Standard Template Library 标准模板库 这是最早由 Alexander Stepanov 和 Meng Lee 蛮像中国人的名字 完成 于 1994 年提 交给 ANSI ISO 标准 C 委员会并通过而成为标准 C 的一部分 望文生义即可知这是一 个代码库标准 不是语法标准 简单地说 STL 是以 C 中的模板语法为基础建立起来的 一套包含基础数据结构和算法的代码库 STL 的特点是实现了 类型参数化 即 STL 的 代码中可处理任意自定义类型的对象 如果不使用模板技术的话 这是一件相当困难的事 也因为这个原因 在最新的 java 及 C 语法中均加入了对模板语法的支持 可见其重要性 另外一个有关 STL 重要的话题是 GP Generic Programming 泛型 这是与面向对象相并列 的另外的一个编程模型 它以模板为基础 弱化了实体类型的差异 简化了编程时问题抽 象的模型 提供了更好的封装性和弹性 对于繁杂的面向对象编程毫无疑问是一种解脱 至少是精神上的 GP 并不是用来取代面向对象的 而是作为一个有益的补充体 是面向对 象很好的合作伙伴 是最近几年软件架构的一个研究热点 但国内真正的应用似乎并 不多见 这项技术本身还基本处于研究前沿 一书对 C 中的 GP 应用有很好的诠释 而这本书对脑细胞的杀伤力之大 也是其它 C 书藉望尘莫及的 想 知道 C 的代码技巧可以做到怎样的出神入化吗 不妨看看这本书 ATL Active Template Library 活动模板库 这在 VC 编程下应该算是比较高级的话题了 它集 COM 和模板技术于一身 带来了 极方便的组件编写方法和极高的学习门槛 可以说 进入 ATL 领域就算是进入了中级以上 的编程领域 ATL 是为组件而生 它的目的是为了让程序员更方便地编写组件 纯用 C 写一个最简单的组件实现一个 Hello World 对初学者来说都是要命的 同时它使用模 板技术来类似于 MFC 一样建立了一个开发 COM 的框架代码库 模板库 使用该框架及模 板库可以相对方便地进行组件开发 ATL 中的一个特点就是你自己的类将成为 代码 库中某些类的父类 这是一件很有趣的事 这也是模板技术的一个特点 HANDLE 句柄 这是一个中文翻译很古怪的字 对初学者来说是百思不得其解的东东 这其实等价于 void 顺便提一下 初学者往往对 VC 代码中各种古怪的符号 类型标记 宏等百思不得其 解 其实它们大多来自基本类型的 define 或者 typedef 请将光标移到这些符号上 譬如 HANDLE 然后按下 F12 编译器自会把你带到它的声明处 反复使用几次 你终会见到 它的原貌 然后长吁一口气 原来不过如此而已 没用过的初学者请牢记 F12 很多初 学者总想知道一个 HANDLE 代表一个什么对象 我的建议是不要去理解为某对象 而就 是理解为访问某一个对象的入口 事实上 HANDLE 大多数时候是一个整数索引 标志该 对象在操作系统的某表中的位置 就好像一个数组的下标一样 Windows 系统核心中主要 是几张大表 这样一个整数索引就是标记目标在这个表中的位置 供操作系统访问时查询 用 偶而它的确是指向某对象的指针 有时它还携带一些额外辅助信息 总之 我们不要 去直接访问它 把访问 HANDLE 的任务交给操作系统好了 除非你还嫌写程序不累 DLL Dynamic Link Library 动态链接库 DLL 的一个特点就是可以动态加载 顾名思义 即在主程序 我更喜欢称为客户程 序 需要该模块时才由操作系统加载到内存 毕竟一个大型应用程序我们经常使用到的功 能并不多 这样一些不常用的功能模块 DLL 在程序运行时一般将不被载入 可极大节 省内存开销 DLL 同时也是目前最常用的分发模块的方法 便于彼此协作 程序中对 DLL 的调用主要有两种方法 1 针对使用 DEF 文件导出函数的 DLL 使用 API 函数 LoadLibrary DLLModuleName 加载 然后使用 GetProcAddress 得到函数指针 进而调用 2 直接将类 函数等导出 客户程序使用同一份头文件声明 加入对应的 lib 链 接库 即可在客户程序中直接使用 DLL 中的类或函数 无需 LoadLibrary Process 进程 进程是一个动态的概念 包括从进程的创建申请 PCB Process Control Block 进程控制块 一般操作系统实现为一个表格 struct 的创建 地址空间的内存分配 模块代码载入并执行 执 行完以后进行撤销 整个过程被称为 进程 在 Win32 下 一个进程有 4G 的逻辑空间 但 我们也常把它作为静态概念来使用 在 Win32 下 一个 EXE 的执行就是一个进程 如果它 内部又开了新进程 另当别论 Thread 线程 为了更有效的提高 CPU 的利用率 更好地实现多任务并发 微软将进程进行进一步分 割 实现了 CPU 任务调度的新对像 线程 一个进程拥有至少一个线程 我们在实现多任 务并发的时候通常是建立一个新线程 建立线程的系统开销要小于进程 线程以我们自己 的一个函数作为入口 函数执行完毕自动撤销 当然你也可以在执行过程中强制结束该线程 顺便提一下 在 UNIX 下并没有线程这个概念 想来是因为 UNIX 主要是以多进程的并 发服务为主 所以它更适合于做服务器 系统运行时通常已经有了太多的进程 所以没有 必要再对进程进行细化 因为这样做甚至会降低系统效率 CPU 调度不过来 当然 这是 我个人的猜想 C 语言 到目前为止 C 语言应该是传播最为广泛的语言 特别在 UNIX 的世界里依然扮演着 主角的位置 在其余如硬件开发 嵌入式系统 如手机 皆有十分突出的表现 即便在 win32 平台下 SDK 的开发中也有一席之地 更主要的是它是大多数国内 国外我不敢说 程序员的启蒙语言 通过它许多人才领会了程序的思维 C 最大的特点就是快 除了汇编 以外效率可以达到最高 而它的灵活性 对硬件的直访性也完全符合程序员自由的天性 如果说学习别的技术尚有犹豫和徘徊 那么学 C 只有一句话 相信我 没错的 也有许多 人主张可以直接学习面向对象语言 我不太同意 面向对象语言对机器模型的抽象十分容 易让程序员迷糊 心中难以建立准确的程序运行时的模型 毕竟我们是程序员 不是用户 我们不能把所有的问题都想当然地交给编译器和操作系统去解决 它们也解决不了 至少 学习一门面向过程的语言 才能知其所以然 C 这是贝尔实验室的又一杰作 同时 也伤透了全球太多程序员的心 脑细胞杀伤力十分 之大 C 比大多数初学者想像的都要复杂得多 它基本包括 一个类化了的 C 语言 模 板 标准模板库 很多初学者掌握的 C 仅仅只是一个类化了的 C 语言的一个子集 不相信 的话 你不妨看一看 中的 C 代码 看看能理解多少 更麻烦的 是使用 C 不得不谈到面向对象的编程风格 这同样比初学者想像的难很多 要有打持久 战的准备 而最让我这类 C 爱好者忧心的还是它目前在 Win 平台中的前景 在 net 平台上 很难找出不用 C 而使用 C 写新代码的理由 而它的复杂性和目前许多诸如 java C 及一些动态语言 python ruby 比起来 开发效率显然的低 大有退出上层应用程序开发的 趋势 这么一个包含了最多范式的近乎完美的语言 我实在不想放弃 我唯有祈祷在未来 C 的路可以走得更远更好一些 源代码版本控制 这是软件开发中一个十分重要的工程手段 几乎是必须的一个 Process 过程 很多作 坊式的开发团队在采用软件工程的一些方法的时候 第一个要进行改进或增加的 往往就 是这个过程 对初学者学习而言 建议在开始进行实践小项目的阶段即进行源代码版本控 制 因为这在以后的工作中 是一定会用到的 源代码版本控制的基本原理如下 在服务器端建立该项目的数据库 并保存你选定的项目源文件的第一个版本 客户端 任一用户要获得某源文件的修改权利 需进行 check out 操作 之后客户端一般每完成一个 无编译错误的版本想保存的时候 进行 check in 操作 将当前版本保存在服务器端上并成 为最新版本 注意 不是覆盖以前的哟 任一客户端可以方便地得到服务器上的文件的任 意版本 如果有权限的话 一般还实现了一个重要的功能是版本比较 任一客户端可以利 用版本控制工具对某文件的不同版本进行版本比较 它会标记出不同版本的同名文件的不 同点 可以轻易地看出版本内容的演化 这一招很常用 下面介绍一下我接触过的三种版 本控制工具 也是国内用得比较多的 VSS Visual Sourcesafe 这是微软 Visual Studio 自带的源代码版本控制工具 它最大的特点就是易安装 与 Visual Studio 集成在一起 装 VC VB 的时候就顺便搞定 不用别外费工夫 使用简单 服务器端设置相对容易 一般个人稍加摸索就可以轻松搞定 客户端更是只管 check in out 基本功能完善 版本比较很直观 我喜欢 它的特点是某人 check out 了某版本 以后 别人将无法对此版本 check out 也就是说同一时间只有一个可以修改某一个文件 这 样就避免了不同的人对同一文件的修改造成彼此冲突 注 可通过设置服务器端实现多人 check out 但几乎不会这样做 因为那样就失去了 VSS 的一个最重要的功能 另 VSS 可 集成于 VS 环境 但根据我的经验 直接在 VC 里对版本的 check 操作 常常不生效 所以 最好还是到 VSS 程序里去进行 check 操作 补充 单机上也可以使用 VSS 这样的好处是 在对当前某些文件进行了误操作或大规模地误修改之后 可以恢复到最近的无错误的版本 最大程度地挽回损失 VSS 实际应用较普遍 如果你是走 Visual Studio 路线的话 一定要 用一下 CVS Concurrent Versions System 这个也是一个大名鼎鼎的开源的版本控制工具 主要活跃在 UNIX 世界 CVS 我使用 不多 一般而言好像功能比较偏向于命令行方式 UNIX 下开发很多人也都使用着命令行 方式 当然 Windows 下面也实现了几个版本的 CVS 也可以集成于 VS 好像还有一个 可以挂接在 IE 上的 我没试过 著名的开源项目管理网站 也是用的 CVS 如果你要 和全世界的程序员一起协作开发 CVS 是必须要安装的 在 JAVA 的世界里 也是以 CVS 为主 Rational Clearcase 这个工具就比较上档次了 Rational 公司 现在是 IBM 的出品 价格昂贵 我最初参 加工作的时候用过一小段时间 简单谈一下 这个工具的特点是复杂 安装及设置就十分 复杂 我的印像中客户端甚至不得不加入到 NT 域里面去 导致我在本机的权限都不够 安装新程序都很麻烦 很郁闷 不知道是不是我们公司的相关人员安装设置错了 想来应 该是这样 但其复杂性可见一斑 对使用而言 它有一个功能挺有用的 就是它能够根据 你每次 check 的版本号 自动生成版本树 一个树状图表 你可以清晰地看到版本的演化 过程 所以严格地说 像 CVS Clearcase 这样的才真正称得上 版本 控制 VSS 还太勉 强 Clearcase 的功能十分强大 我不详述了 我还不想出书 较适于大型软件公司实施 软件配置管理时采用 虽然它的名气十分之响亮 但我不知道国内有多少公司在真正使用 正版的 Clearcase 这样的工具 想来应该是十分之少 OpenGL OpenGL 至今颇有一点英雄落寞的味道 这一套标准是实现得如此之好 以至于曾经 一度成为游戏界面华丽的标准 它的低落也是一个必然 毕竟在微软的强力打压下鲜有不 挫败的 但它曾经能够给微软带来如此的压力 至今也依然在工业界被广泛使用 大多数 游戏 显卡依然保留着对它的支持 CS 里我喜欢的还是 OpenGL 而它的性能在某些方面 与 D3D 比较 依然占着上风 不幸的是 DirectX 在不停地向前发展 而它 几乎止步不前 了 前景并不光明 OpenGL 目前在工业领域应用较为广泛 它的优秀的矢量图的操作性 能 华丽的色彩 在专业的图形图像处理领域表现突出 游戏中使用相对以前而言则是越 来越少 新近听说微软的最新操作系统 Vista 对 OpenGL 进行了极大的打压 不但性能上 折扣 支持的版本也只到 1 4 最新版本好像是 2 0 不知道最后如何收场 拭目以待 DirectDraw D3D 大凡像样的 2 维 Windows 游戏 几乎都是采用此技术来实现显示的 DirectDraw 有两 种模式 全屏和窗口 其中全屏应用更多一些 在全屏下 DirectDraw 有一个十分著名的 换页 技术 即在两个显示页面之间用 交换 来实现显示刷新 这个速度十分地快 只是一个显存内一个指针的交换 比你用 BitBlt 复制一屏的像素快太多太多 游戏的高效 的动画效果大多源于此技术 DirectDraw 主要用于娱乐领域和一些实时显示要求较高的场合 如医疗图像 D3D 是目前 大多三维游戏的标准采用 我没钻研过 不敢多言 它的效果嘛 玩玩游戏就知道了 UML Unified Modeling Language 多译为统一建模语言 这个语言是一种图形语言 主要是作为设计时建模的一种标准的图形模型 便于程序 员与程序员 程序员与客户 设计员与代码员之间的沟通 同时它也帮助设计人员将头脑 中的基于程序代码的对程序功能的理解形成文档 便于理清头绪 进行下一步编码的工作 换言之 设计过程的产品 可以表现为一些文本文档 或者一些框架代码 或者一些伪代 码 但比较标准通用的 是表现为一堆 UML 图 UML 包括动态图和静态图两大类 其中 静态图中的类图最为常用 很多人初学时不知道该怎么做设计 写小软件时常常没有设计 过程 其实很简单 把软件的类图画出来就好了 学做设计时未必要找一个像 Together 或 者 Rational Rose 一样的巨无霸 用一些简单的可以做 UML 图的工具就好 专门用来画 UML 图的小工具很多 网上容易找 补充一点 画 UML 图不要面面俱到 不要什么都画 突出重点方便理解就好 甚至使用不规范的记号也不要紧 当 UML 的功能是草稿的时候 RTTI Runtime Type Information 运行时类型信息 在程序中 当我们得到某一个对象的实例或者指针时 大多数时候并不能直接肯定它 的类型 都是继承以及类型转换惹的祸 这个时候 依靠 VC4 0 或更高版本的编译器提 供的 RTTI 支持 调用库函数 typeid 即可在运行时获取这个对象的 类型信息 在一些 动态处理中 类型信息 很重要 获取了类型信息以后 你就可以有十分把握地调用该类型 的相关操作 或者类型转换 或动态生成 因其重要性 在 JAVA 和 net 库中借助单根继 承和 虚拟机 对此有了更优雅的做法 每一个自 object 继承的类天然就有了表述自己类 型信息的能力 继承的好处 并且容易扩展 现在你需要类型信息的时候 大可直接 ask 那个对象 tell me what type are you 它就会告诉你答案 debug release 调试 发行 大家都知道 debug 是调试版 release 是发行版 区别在于 debug 版生成的程序中包 含大量供调试用的场景代码 不是真正运行需要的 而 release 一般去掉了这些信息 并 进行了某些代码优化 所以 release 版的程序会比 debug 版的程序小很多 运行速度也快一 些 同时 debug 版为了便于调试 往往会对调试使用的诊断代码加上 DEBUG 一类的宏 使得在 release 下不对这些代码进行编译 正由于两种版本编译使用的源代码的差异 以及 release 糟糕的优化 常常使得两种版本运行时产生截然不同的效果 一个正常一个崩溃是 大多数人都遇到过的 导致问题的可能性很多 注意事项详见各论坛的诸多精华贴 另 同一个程序如果 DLL 之间的链接使用了不同版本 譬如 EXE 是 release 版 dll 是 debug 版 有时会无法正常运行 所以我一般的做法是每一个 DLL 针对不同版本使用两个 DEF 文 件 编译生成不同名的两个文件 debug 版文件名后加 d 调用时各个版本针对自己的版 本调用 这在一定程度上可避免混乱 另 release 也是可调试的 在工程设置里把调试信 息打开即可 XP eXtreme Programming 极限编程 这是近几年才时兴起来的开发模型 国内大致是 01 02 年开始有所宣传 它主要是针对中小型开发团队在开发时间要求紧 需求不稳定的中小项目 大多数软 件项目都是这个情况 时使用 它打破了传统软件工程的框架 非常新巧 譬如整个开发 过程中文档很少 大量使用 卡片 如 CRC 卡片 来描述开发计划和内容 没有真正意 义上的软件功能规格说明书 取而代之的是一系列可测试的用例 没有独立的设计和测试 阶段 它们总是在迭代中增量反复进行 设计 尽可能小和简单 一般没有代码复审 code review 大家共同拥有代码 而它的最显著的一个外在特征是它常使用 成对开发 即一台机器前坐两个开发人员 共同开发 一个看 一个写 这乍听起来真是蛮有趣的 它的基本出发点是认为成对开发的效率在一定条件下要高于两个人独立开发的和 不要 觉得天方夜谭 在很多项目中 这种做法的有效性已经被证实 XP 的特点可以用 快 小 灵 来概括 它和传统瀑布模型 自顶向下 的区别在于 它使用迭代增量 设计 代码 测试 设计 代码 的方式 想法很简单 没有什么目标 是可以一开始就容易确定的 用爬山来做一下比喻的话 传统的是在山下研究地图 选好 一条路线 然后沿着此路前进 XP 则是走一走 停一停 看一看 对下一步的方向作出新 的选择 在很多时候 这样做会让你选择到更好的捷径 ICONIX 这个字相信很多人都没见过 我也不知道是什么字拼起来的 作为开拓眼界 我还是 提一下吧 这是一种界于 XP 和 RUP Rational Unified Process 之间的开发模型 换言之 它比 XP 大 比 RUP 要小 它采用了 UML 的一个子集 特点是用例驱动 保持良 好的进度跟踪能力 它的目标是用最短的时间来把用例变成代码 具体来说 这种开发模 型相对精简的 XP 而言 更加强调用例的建立 分析和代码化 用例是其中心地位 RUP Rational Unified Process 前面已经提到了 相信你已经感觉出它是一个丰富的软件开发模型 这是由 IBM 提出 来的软件工程模型 它使用完整的 UML 图 对开发的各阶段 需求 设计 代码 测试 维护 均有十分完善而复杂的标准 就不详述了 RUP 本质上是迭代式开发 在每一次迭 代中均完成以下四个阶段 初始阶段 inception 详述阶段 elaboration 构建阶段 construction 转换阶段 transition CMM Capability Maturity Model 软件成熟度模型 这是卡内基 梅隆大学软件工程研究所 我的专业正是软件工程 所以这也成为我心目 中的圣地 的一大力作 一度曾形成了席卷全球软件开发的 CMM 浪潮 CMM 分为五级 大多数软件企业都处于第一级 而得到第五级认证的全球也没有多少 国内去除掉挂羊头 卖狗肉的 也是寥若星辰 嗯 比星辰是寥多了 所以 CMM 实施一般是从第二级开始 能做到第三级的都是颇有实力的软件公司了 CMM 是以 Process 过程 为中心的模型 从二级始每一级都有几个 Key Process 关键过程 每一个 KP 又分为若干 Key Active 关键 活动 CMM 的实施一般不能越级实施 并且每一级的实施通常都要一年以上 所以要达 到较高等级是一级很困难的事 另 CMM 不仅可用于较大规模公司 同样也可实施于小 公司 小项目组 这是很多人所不知道的 实施视具体情况等级之间可交叉 譬如实施时 采用二级的某些 KP 再加上三级甚至四级的 KP 但你只有实施了所有二级的 KP 你才能 也只能通过二级认证 即便你采用了某些四级的 KP CMM 最新发展成果是 CMMI Integration 这主要是新考虑了软件与非纯软件因素的关系 譬如系统 以及团队 之间的协作问题 CMM 在国内的发展似乎有点走向 ISO 同样的道路 这实在不是一个好 消息 Callback Function 回调函数 在侯 sir 的 中一开始就提出了这个概念 大概的提法是说回调函数是操作 系统调用而你永远不要去调用的函数 这个提法让初学者有点望而生畏 以为是一种多么 高深而难以领会的系统底层的核心技术 其实不然 这个技术本质很简单 而且很常用 它实质就是函数指针的基本运用 如果不知道什么是函数指针的话 翻翻书 在一个模块 中 有时想让一部分功能由其它模块实现 譬如说一个做显示的模块 它只想实现显示的 资源配备 画面的刷新 缩放等控制功能 而把画具体实体 譬如圆 多边形 都可以有 很多种不同效率的实现方法 的代码由别的模块来实现 怎么办呢 用函数指针 在自己 的类中放一个画圆的函数指针 使用时由外部为这个函数指针赋值 其实就是指向了一个 外部的函数 在自己的代码中直接调用这个函数指针来画就可以了 本模块完全不知道外 部模块是怎么画圆的 那个外部的函数在这里就是回调函数 在很多系统 API 中就使用了这种函数回调的方法 让我们开发的代码实现可以嵌入到 API 的代码实现当中 其实我们就是传了一个函数地址给它而已 换句话说 这些 API 搭 好了某些运行的代码框架 我们来为它具体实现 XML Extensible Markup Language 可扩充标记语言 也许你还在为选择 net 和 j2ee 而徘徊不前 如果是这样的话 不妨先着手学一下它们 所共通的一个基础 XML 有了 HTML 为什么我们还要 XML 很简单 HTML 重在表现 文本 图片以及一些多媒体内容 它很难表达数据 因为它的标记是固定的 而数据类型千 千万 根本无法描述 net 和 j2ee 都要解决一个信息传输格式标准化的难题 这个格式要 能承载文本 数据 最好还能描述程序接口 同时又应该像 HTML 一样简单 具有通用性 能够在 HTTP 下很好的运作 在这种要求下 XML 产生了 它的特点正如其名 和 HTTP 一样 它也是一种标记语言 但是它的标记不是固定的 是可自定义 也就可无限扩展 的 这些自定义标记能够很好的描述数据类型以及对应的数据内容 乍看起来很像数据库 表的定义 除此以外 XML 还可以描述程序接口 所以 XML 可以方便地与网络程序构 件 COM EJB 等 直接交互 由于它也是一种 ASCII 文本流 所以与当前的 HTTP 兼容 在当前的 internet 上畅通无阻 这很重要 有了以上功能 XML 就名副其实地成为了新一 代互联网技术的标准信息载体 在 net 和 j2ee 的网络架构中 各种 构件 的信息交互都 交给了 XML 可谓任重而道远 XML 我自己没怎么写过 单就学习上的经验而言 感觉语法上比 HTML 更琐碎一些 小细节更多 没那么容易速成 好在根本同源 有 HTML 基础甚至 WEB 开发基础的 学起来也很轻松 Java2 这是近几年最吸引大众焦点的语言 在 Web 开发 网络平台 移动开发的世界里发光发热 你可以不用 java 但你不可以不了解 java 毕竟这是一个极大且丰富的软件开发领域 有些 没使用过 java 的 VS 阵营里的人可能还不明白 java2 里的那个 2 是什么意思 容我先解释 一下 Java 最初正式推出 1 0 时 并没有受到如此多的好评 受到颇多责难 于是它不断 地推出新版本来完善自己 其中变化显著的一个版本是 1 2 我没记错吧 Java 的每一个新 版本除了语法上的更新 还有一明显的标志 那就是 JDK Java Development Kit 就是 Java 自带的一套 SDK 的更新 版本 1 2 以后的 java 为了在宣传上与以前的 java 相区别 便被 称为 java2 目前用得比较多的 jdk 是 1 3 1 4 最新的 JDK 是 1 5 代号 tiger java 开发的 IDE 国内主要以 JBuilder 为主 另

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论