“对于有志于成为一名优秀程序员的大学毕业生来说,这本书是必读之物。它不仅详细讲解了程序员需要具备的专业技能、素质技能,还介绍了程序员的职业生涯前景。”
周怀军 就业教育专家 中国就业促进会理事
“这是一本很特别的讲述软件开发的书,它不仅介绍了软件开发过程中程序员所要具备的各种知识,更详细介绍了Rose、PowerDesigner等常用工具的使用,并且还提供了各种模板和规范,使得读者进行软件开发变得事半功倍。”
汤涛 技术专家原微软(中国)有限公司政府行业高级咨询顾问
人才的发展应该是全方位的,一个职业化员工不仅要具备“硬技能”——专业技能,更需要具备“软技能”——素质技能。从人才培养的角度上看,具备本书所述所有技能的程序员一定是受企业欢迎的。
陈昉 原惠普远东区培训发展总监
程序员是一个综合性的岗位,除了要掌握编程语言外,软件开发过程中还要涉及其他多方面的技能。不仅要注重专业技能的积累,更主要的是培养一种专业的精神。
郭宗明 博士生导师 北京大学计算机研究所研究员
给程序员的一封信
关于学习,有些感受和大家交流。
1.“软件开发学习的重点是流程,而非技术本身”
事实上,技术的发展是日新月异的。记得我第一次做项目用的编程工具是Turbo C,后来用VC++5.0,再后来开始在微软中文网络广播讲VisualStudio.NET 2002,不久又换成了VisualStudio.Net2003,最近又讲的是VisualStudio.NET 2005,当然VisualStudio.NET 2008已经出来了……如此快得更新速度,不由得让我们感叹:“做一个程序员真累啊!”。
所以,作为一个程序员要求一直走在时代的前列,真得很难!那么面对如此快速的变化,我们该怎么办呢?
其实,细心的程序员分析一下,可以看到,在如此快速的技术变化后面,软件开发的流程基本没有改变!原来困扰我们的只是一个开发工具、一门编程语言而已。真正的武学大师,何必在意手中的武器到底是刀,还是剑呢?
掌握了这些,所有的编程语言和开发工具,都是任君选择。是用Java这个“倚天剑”,还是用C#这把“屠龙刀”,就由我们的个人爱好和开发的需要来决定了!
这也是我写作本书的理由。
2.学习的重点:培养一种“习惯”
我们每个人都应该把学习的重点放在能力、方法的长进上,而不是具体的某种技术、某个知识点的学习。在如今的知识爆炸时代,新的技术、新的知识层出不穷,即使我们穷其一生,仍然不可能学习掌握所有的知识和技术,而只能是在茫茫的知识海洋中占据一片孤岛。所以我们的重点应该放在培养适合于自己的一种学习方法,更确切地说,是培养一种习惯,一种学习的习惯。
我再三强调大家要自己有意识地总结一套学习新东西的方法,就是这个意思。
如果能够掌握一套得心应手的学习新东西的方法,面对茫茫的知识海洋你也会信心十足的。正如一句笑话:如果你是一个数学高手,当面对新的技术挑战时,你问一下自己:难道这个技术比高等数学还复杂?这样一想,你顿时会信心十足。虽是笑话,但也是很有道理的。
3.一些思维方式的培养
生活、学习中每个问题的求解,到最后或者是归结为一种数学模型,或者是归结成一种哲学思想。因此我建议大家在自己的自由时间能抽空学习一些哲学、数学方面的思想。这对自己是终生有益的。
人的价值往往体现在他的思想上,正如一个公司的品牌价值;技术永远是要被淘汰的;但一种思想永远有其存在的价值。因此当对某个问题,你自己有你自己的一套完整理论时,你的身价就会上一个(几个)新的台阶。
4.何为“高手”?如何成为“高手”?
所谓的“高手”是否就是什么都懂?并不是。上面谈过,世界上是没有一个人精通所有的知识的,从古至今都没有。所谓的高手只不过是对于某些事情的处理已经养成了一种良好的习惯。举例说明,一个VC高手,是否就是熟悉MFC的每个类?了解Windows的所有SDK?显然不是。现实中可能有这样的“高手”,但寥寥无几。
只要在遇到各种问题后能很快地找到解决问题的方法,就可以算的上是一个真正的高手了。
因此在实际的生活、学习中,我们应该注意多总结方法、修订方法,特别是对于一些重复发生的事情(大到“学习”这个行为,小到VC编程中每次遇到问题),我们应该总结每次发生问题时自己采取的方法,并在下次发生时采用。
时间一长,就会新成一种习惯,并能时常修订自己的这种习惯。
5.求精与求广
对于知识的学习,我们或者可以“求精”,即选中一个点,精通它,因为尽管知识是无限的,但具体到某个知识点是有限的,我们有可能对某个知识点的所有知识加以了解;或者“求广”,因为人的生存,归根到底是人的竞争,你懂的东西比别人多,你就会在竞争中获胜。
相比较两种情况,后者难一些,因为在“求广”的同时,其精度不好掌握:浅了如同一无所知;深了精力有限不太可能。前者容易些,但这个点必须选对,否则就可能被社会遗弃。比如,对于我们知识点有:VC、数据库、网络等,选择网络的可能就比选择数据库的竞争力强些(特别是在网络编程比较火的现在)。
对于我们,我感觉还是先“求精”,有了一技之长,然后在这个基础上拓展自己掌握知识的范围。
但最重要的还是要逐渐从“靠技术吃饭”转到“靠思想吃饭”。
因此我们的重点应该是总结、培养自己的各种“习惯”。当一切成为一种下意识的举动时,你自己的“修为”就又上了一个新的台阶。
其实,在我看来,生活就是在培养一种种新的习惯,如果把根据结果修订习惯也变为一种习惯,那就是一种真正意义上的“习惯”(比如,朋友。如果根本不相往来的话,那根本不算是朋友;但如果你和他的相处已经成为一种“习惯”后,你会发现他才是你真正的朋友,他已经成为你生活的一个部分)。
工具、模板、示例、开发规范是本书的四大特色。
1.工具
本书中介绍了许多软件开发过程所用到的11个工具,它们是Rational Rose、Power Designer、Nunit、JUnit、Install Shield、Visual Studio.NET、HLP文件制作工具、CHM帮助文件制作工具、Microsoft Visual SourceSafe、CVS、Visio等。对于这些工具介绍,都是本着能够让读者快速上手的原则。如果需要深入了解这些内容,可以参考相关资料,也可以访问本书提供的网址。
2.模板
本书提供了软件开发流程各个阶段的质量模板文件,可以作为读者项目开发过程中的参考文件。
3.实例
本书提供了一个“网上商城系统”的实战项目,详细介绍了从可行性分析、需求分析、系统设计、编码到安装盘等各个阶段的具体实现,并且提供了各个阶段的相关文档和具体代码。读者可以按照流程学习,体悟每个阶段的关键知识点,熟练掌握各种开发工具的使用,同时对于实际工作中的项目开发也有一定的指导意义。
4.开发规范
在本书的附录中,提供了团队开发所需要的各种开发规范,包括项目组工作守则、编码规范、源代码控制规范、界面设计规范、数据库使用规范、安装盘制作规范等,会极大地方便团队开发。
本书配盘介绍
目录名 说 明 包含文件
1 ASP.NET常用代码总结 汇集了ASP.NET编程过程中,最常用的一些代码 41个常用代码段。如数据集的操作、数据库的操作、下载文件的方法等
续表
2 ASP.NET系列视频讲座 作者主讲,ASP.NET系列完整视频讲座,包括知识点讲解、实例编程、实战编程、项目实战四大部分,共55讲。每讲1小时。每讲都提供PPT、DEMO、视频。 ADO.NET开发最佳实践
DataGrid使用最佳实践
DataSet和XML
.NET框架类在ASP.NET中的使用(1)
.NET框架类在ASP.NET中的使用(2)
水晶报表的使用
ASP.NET程序的部署
在ASP.NET中使用用户控件
Web服务的创建和使用
ASP.NET中的错误处理和程序优化
ADO.NET数据操作
数据集的使用方法和技巧
调试和跟踪ASP.NET应用程序
ASP.NET安全性
Web服务器控件使用
ASP.NET状态管理
ASP.NET事务和异常处理
ASP.NET页面框架
ASP.NET实现在服务器端控制网页
ASP.NET中的事件处理
如何ASP.NET中开发复合控件?
ASP.NET中的XML
使用ASP.NET实现网络通信
DataSet和XML深入编程
SQLServer的内置XML支持
深入解析ASP.NET架构
深入了解DataSet
数据集和数据库的同步-DataAdapter的使用
ASP.NET网络打印
ASP.NET文件处理
ASP.NET中的Web服务(一)
ASP.NET中的Web服务(二)
ASP.NET中的Web服务(三)
ASP.NET多线程编程(一)
ASP.NET多线程编程(二)
ASP.NET中的编码
在ASP.NET中进行消息处理(一)
在ASP.NET中进行消息处理(二)
ASP.NET实例编程(一)
续表
包含文件
2 ASP.NET系列视频讲座 作者主讲,ASP.NET系列完整视频讲座,包括知识点讲解、实例编程、实战编程、项目实战四大部分,共55讲。每讲1小时。每讲都提供PPT、DEMO、视频。 ASP.NET实例编程(二)
ASP.NET实例编程(三)
ASP.NET实例编程(四)
ASP.NET实例编程(五)
ASP.NET实例编程(六)
ASP.NET实战编程(一)
ASP.NET实战编程(二)
ASP.NET实战编程(三)
ASP.NET实战编程(四)
ASP.NET实战编程(五)
ASP.NET实战编程(六)
ASP.NET项目实战(一)
ASP.NET项目实战(二)
ASP.NET项目实战(三)
ASP.NET项目实战(四)
ASP.NET项目实战(五)
3 Demo 本书各个章节所讲示例
4 代码量统计工具 用来统计代码行 CountASP.bat
CountCPP.bat
CountCS.bat
Ff.exe
5 开发规范 软件项目组常用规范 项目组内部守则.doc
数据库命名规范.doc
软件安装盘制作规范.doc
界面设计规范.doc
编码规范.doc
SourceSafe使用规范.doc
计划样板.txt
6 开发模板 软件开发常用质量模板 01立项申请书.doc
02可行性分析报告.doc
03立项评审报告.doc
04用户需求说明书.doc
05需求分析评审报告.doc
06总体设计书.doc
07开发策划书.doc
08详细设计书.doc
09编码计划书.doc
10测试方案.doc
11测试报告.doc
12结项报告.doc
技术支持
关于本书的任何问题,欢迎大家登录进行讨论。
程序员岗位技能图
目 录
第1篇 知识篇
作为一名程序员要掌握哪些专业技能?应该具备哪些素质技能?自己以后的个人的职业发展道路应该如何设计?这是每个程序员都要面对的问题。在本章中,我们将就这几个方面给大家做个介绍。
1.1 软件程序员专业技能 2
1.1.1 专业技能检核表 2
1.1.2 软件程序员岗位技能图 4
1.2 软件程序员素质技能 4
1.2.1 软件程序员的素质技能 4
1.2.2 高级软件程序员的素质技能 5
1.3 软件程序员职业发展图 6
1.3.1 软件企业的人才类型和素质结构关系 6
1.3.2 高级技术人才理想成长路径 7
1.3.3 高级管理人才理想成长路径 7
1.3.4 高级综合人才理想成长路径 8
第2章 软件开发流程 9
什么是产品?什么是项目,它们的开发流程有何不同?如何基于项目进行产品开发?如何基于产品,做项目开发?软件开发中,质量和效率如何平衡?这些都是每个软件开发人员面临的挑战。在本章中,我们将共同来探讨这些话题。
2.1 项目还是产品——程序员心中的痛 9
2.2 软件开发流程 10
2.2.1 项目开发流程 10
2.2.2 产品开发流程 11
2.3 标准还是效率——痛苦的抉择 11
2.3.1 质量/过程标准的来源 11
2.3.2 标准能做到什么和不能做到什么 12
2.3.3 质量标准和过程控制有什么用 12
2.3.4 软件开发过程中如何应用这些标准 13
第3章 可行性研究 14
可行性分析是要决定“做还是不做”。显然,“做还是不做”比“如何做”更重要。如果可行性分析不够充分、完整,就有可能得出错误的结论,从而导致资金的浪费、无谓的投入。因此可行性分析至关重要。在本章中我们将学习如何从市场、政策、技术、经济,以及SWOT方面做可行性分析。
3.1 可行性分析的要素 14
3.2 市场可行性分析 15
3.3 政策可行性分析 15
3.4 技术可行性分析 15
3.5 成本—收益分析 16
3.6 SWOT分析 16
3.6.1 竞争优势分析 17
3.6.2 竞争劣势分析 17
3.6.3 外部机会分析 18
3.6.4 外部威胁分析 18
3.6.5 SWOT核心问题 19
第4章 需求分析 20
需求分析是要决定“做什么,不做什么”。在越来越用户导向的今天,用户需求分析变得越来越重要。在需求分析阶段,我们需要完成哪些工作?常用的需求分析工具有哪些?在本章中,这些问题会一一得到解答。
4.1 需求分析的重要性 20
4.2 需求分析为什么困难 20
4.3 需求分析基本任务 21
4.4 需求分析的结果 22
4.5 需求分析阶段工作重点 22
4.6 UML和Rational Rose 22
4.7 Microsoft Visio 23
第5章 系统设计 24
每个程序员都希望自己能够成为系统架构师,。要想成为一名系统架构师,充分了解系统设计的相关知识、掌握系统设计的相关工具就显得非常重要。本章中,我们将就如何进行系统设计进行详细介绍。
5.1 系统设计工作流程图 24
5.2 面向对象的设计方法 25
5.2.1 面向对象的概念 26
5.2.2 面向对象设计方法目标 29
5.3 三层应用程序模型 29
5.4 函数、对象和组件 30
5.4.1 函数和过程 30
5.4.2 类和对象 30
5.4.3 组件 30
5.5 系统设计内容 31
5.5.1 数据库设计 32
5.5.2 界面设计 42
5.5.3 模块设计 46
5.5.4 数据结构和算法设计 48
5.5.5 OOP(Object Oriented Programming)设计方法步骤 49
第6章 编码 50
作为一名程序员,首先要精通一种面向对象的编程语言,熟练掌握相应的开发工具;随着网络技术的飞速发展,有很多的网络编程技术如XML、Ajax等都需要我们去了解和学习;作为项目中的一员,了解编码规范和源代码控制工具也是程序员所必须掌握的。在本章中,我们将探讨这些话题。
6.1 编程语言和开发工具 50
6.1.1 编程语言 50
6.1.2 开发工具 52
6.2 网络编程必备知识 53
6.2.1 HTML/JavaScript 53
6.2.2 XML 53
6.2.3 WebService 54
6.2.4 Ajax 54
6.3 了解极限编程 55
6.4 编码规范 56
6.5 源代码控制 56
6.5.1 版本管理的必要性 56
6.5.2 常用源代码控制工具 57
6.5.3 源代码控制规范 58
第7章 软件测试 59
在某些开发人员眼里,测试很神秘;在某些开发人员眼里,测试很简单;在某些开发人员眼里,测试就是质量。那么软件测试到底是什么?作为程序员来说,和软件测试人员相比,应该了解和掌握哪些方面的测试知识?在本章中我们将着重介绍这些方面的知识。
7.1 软件测试基本概念 59
7.1.1 单元测试 60
7.1.2 集成测试 60
7.1.3 系统测试 62
7.1.4 性能、压力和负载测试 62
7.1.5 测试成本 63
7.1.6 黑盒测试和白盒测试 63
7.2 白盒测试用例 64
7.2.1 测试用例简介 64
7.2.2 白盒测试用例设计 66
7.2.3 测试用例设计步骤 67
7.3 软件测试工具 73
7.3.1 常见软件测试工具列表 73
7.3.2 常用单元测试工具介绍 74
第8章 结项和产品化 76
编码结束了,软件开发就结束了吗?不!远远没有,还有很多工作要做。制作安装程序、进行软件加密、编写说明书和系统帮助文档,都是在结项和产品化阶段要做的工作。
8.1 安装盘制作 76
8.1.1 使用InstallShield 76
8.1.2 使用Visualstudio.NET发布程序 76
8.1.3 安装盘制作规范 77
8.2 软件加密 77
8.2.1 软件加密概述 77
8.2.2 常见的软件加密技术 77
8.3 说明书制作 79
8.3.1 Word书籍版说明书 79
8.3.2 电子说明书制作 79
第9章 项目组建设 81
随着软件编程技术的发展,团队开发变得越来越普遍,因此如何能够提高整个团队的协作能力、提高整体的开发效率,是每个软件企业都关注的问题。在本章中,我们将探讨有关项目建设方面的问题:项目守则、公共代码积累、工作计划总结等。
9.1 项目组守则 81
9.2 常用代码 81
9.3 编程技巧 82
9.4 编写工作计划总结 82
9.5 代码量统计工具 83
第2篇 工具篇
第10章 Rational Rose实例入门 86
10.1 创建工程 86
10.2 建立Actor 88
10.3 创建Use Case 89
10.4 用顺序图描述Use Case 90
10.5 建立协作图 92
10.6 建立类 93
10.7 实现模型 94
10.8 UML符号和图形 95
第11章 Power Designer实例入门 99
11.1 创建项目工程 99
11.2 建立概念数据模型 100
11.2.1 创建实体 100
11.2.2 添加属性 101
11.2.3 定义属性的标准检查约束 102
11.2.4 定义实体的主、次标识符 103
11.2.5 创建其他实体 105
11.2.6 建立联系 107
11.3 生成物理数据模型 110
11.4 生成数据库建库脚本 112
11.5 生成关系数据库 113
11.6 Power Designer的4种模型文件 113
第12章 NUnit实例入门 115
12.1 NUnit下载安装 115
12.2 创建测试项目 116
12.3 添加NUnit引用 116
12.4 创建测试用例 117
12.5 创建被测试类 118
12.6 编译项目 118
12.7 运行图形测试工具 118
12.8 修改测试 119
12.9 异常测试 120
第13章 JUnit实例入门 121
13.1 JUnit下载和安装 121
13.2 创建测试项目 122
13.3 添加JUnit引用 122
13.4 创建被测试类 124
13.5 创建测试用例 125
13.6 创建测试单元 126
13.7 运行测试 127
13.8 JUnit结构说明 128
第14章 InstallShield实例入门 129
14.1 创建安装项目 129
14.2 安装程序语言设计 130
14.3 应用程序信息设置 131
14.4 设置程序运行条件 131
14.5 设定安装架构 131
14.6 添加要发布的网站文件 131
14.7 添加程序快捷键 132
14.8 添加注册表修改 133
14.9 安装界面设置 134
14.10 多语言字符串修改 134
14.11 生成安装 134
14.12 运行安装文件 135
14.13 添加数据库支持 136
14.14 直接附加数据库 141
14.15 程序卸载 141
第15章 “VisualStudio.NET部署应用程序”实例入门 142
15.1 创建要发布ASP.NET Web应用程序 142
15.2 创建安装程序类 143
15.3 创建包含SQL语句的文本文件以创建数据库 143
15.4 将代码添加到安装程序类中以阅读文本文件 145
15.5 创建部署项目 147
15.6 将主程序项目的输出添加到部署项目中 148
15.7 创建自定义安装对话框 148
15.8 创建自定义操作 149
15.9 程序部署 150
第16章 HLP文件制作实例入门 151
16.1 RTF源文件制作 151
16.2 编译成为HLP文件 155
16.3 制作主题帮助文件(CNT文件) 158
16.4 把CNT文件加入工程 159
第17章 CHM文件制作实例入门 161
17.1 材料准备 161
17.2 创建工程 161
17.3 设置CHM文档的标题 164
17.4 修改文档对话框属性 167
17.5 制作目录 168
17.6 添加目录 170
17.7 制作索引 172
17.8 添加索引 173
17.9 说明 174
第18章 Visual SourceSafe实例入门 175
18.1 软件安装 175
18.2 服务端创建VSS数据库和用户 175
18.3 客户端选择数据库 177
18.4 添加项目到VSS数据库 178
18.4.1 通过SourceSafe添加项目 179
18.4.2 通过VisualStudio.Net2005集成开发环境添加项目 180
18.5 在客户端VS.NET开发环境中使用VSS 182
18.6 修改历史查看 184
18.7 用户权限修改 185
第19章 CVS实例入门 187
19.1 安装CVSNT 187
19.2 服务端创建仓库和用户 189
19.3 添加项目到CVS服务器 189
19.4 在Eclipse客户端开发环境中使用CVS 193
19.5 VS.NET中集成CVS 196
19.6 CVS和VSS比较 199
第20章 Visio实例入门 200
20.1 建立新文档 200
20.2 创建流程图 201
20.3 保存 204
20.4 自定义形状的制作 204
第3篇 实例篇
第21章 网上商城系统开发实战 208
21.1 项目概述 208
21.2 可行性分析 209
21.2.1 系统目标 209
21.2.2 开发的可行性分析 209
21.3 需求分析 210
21.3.1 确定用户类型 210
21.3.2 用户工作流程 210
21.3.3 软件功能 212
21.3.4 UML图 213
21.3.5 系统运行环境 214
21.4 系统设计 215
21.4.1 数据库设计 216
21.4.2 页面设计 228
21.4.3 页面关系图 230
21.4.4 界面设计 231
21.5 编码和测试 244
21.5.1 公共模块设计 244
21.5.2 源代码控制 254
21.5.3 单元测试工具 254
21.5.4 系统源代码 254
21.6 制作安装盘 254
21.7 本章源文件 254
第4篇 模板与规范篇
第22章 软件开发模板 256
22.1 软件立项申请书 257
22.2 可行性分析报告 259
22.3 立项评审报告 260
22.4 用户需求说明书 261
22.5 需求分析评审报告 265
22.6 总体设计书 266
22.7 开发策划书 266
22.8 详细设计书 268
22.9 编码计划 268
20.10 测试方案 269
20.11 测试报告 270
22.12 软件开发结项报告 272
第23章 项目组规范 273
23.1 项目组工作守则 273
23.2 C#编码规范 276
23.2.1 命名 277
23.2.2 代码格式书写规范 278
23.2.3 其他 280
23.3 SourceSafe使用规范 281
23.4 数据库命名规范 283
23.5 用户界面设计规范 286
23.6 安装盘制作规范 290