软件项目设计开发与管理
容那么明显与直接。
软件分析设计方法的革新主要体现在面向对象的技术与思想,数据与方法的封装、继承,多态及复用,使设计师们可以更加形象地用软件来描述客观事物及其相互关系与作用,这应该是一种非常伟大的创造,也在软件行业起到巨大的推动作用;然而,另一方面,虽然面向对象技术与思想的优势已为同行们所公认,但在实际工程中,除了大量使用面向对象的开发工具与语言以外,真正采用面向对象的思想来分析、设计系统、描述设计结果以完成实际项目的作法却远不如想象中那么普及。这是因为某些工程太简单而没有必要用到它,还是因为它太难以实用化,还是其它什么原因呢?
软件工程理论在不断在构造新的理想:软件的生产能象生产一部汽车,生产一台电视机或盖一座大楼一样,有标准的零件,标准的结构,标准的流程,标准的生产线,标准的组装……。理论家们充满了创造性的构想与信心,而大批一线的软件工程师们却对这种理想产生怀疑。
软件企业管理模式的革新也是大部分企业迫切的需求,先进的CMM出现了,其理论不断被人们所了解,大家都对那些已经获得某种CMM级别的企业产生了深切的崇拜与向往,并异口同声的宣布,“我们也要做!”但我们同时又发现,大量的软件企业在把CMM与自己企业的实际情况有机结合的道路上却遇到了令人头痛的困难与疑惑,这种困难与疑惑好像不仅仅是为接受新机制而“痛一时,利一生”那么简单。
问题出在哪里呢?为什么在软件工业化的道路上要达到电子、机械产品的程度会那么困难?多年来,作者也一直思考这个问题。
本文认为,“对一件事物解决方法的制定要基于正确了解该事物的本质。”那么,可能软件这个事物与传统其它产品的特征还是有着巨大的区别,这可能不只是量的区别,而是质的区别。
或许我们应该从这个角度重新审视一下过去采用与传统工业化类比的思想所得来的灵感、理想与方法。
这里,要首先感谢家人的支持!感谢长年在日本工作的好友郭果明与施文彪为我提供一些信息,同时,电工工业出版社的袁金敏编辑与顾惠芳老师也为本书的出版提出了许多宝贵的建议,在此一并衷心感谢!
何小朝
2009年12月
序 11
前言 13
第一部分 现状与困惑 16
第一章 困难与困惑 16
1.1软件项目实施的困难 16
1.1.1漫长的维护期 16
1.1.2什么时候开始编码——生产过程控制 16
1.1.3开发周期的精确估算 17
1.1.4需求何时确定 17
1.1.5令人头痛的边缘问题 18
1.1.6鲁棒性 19
1.2飞速发展?——困惑 19
第二章 技术方法的抉择——软件设计师的困惑 21
2.1 引言 21
2.2 软件设计师的理想 22
2.2.1 什么是软件设计师 22
2.2.2 技术人员的理想 24
2.2 似有曙光——方法论 25
2.2.1技术进步带来希望 25
2.2.2软件技术方法综述 26
2.2.2.1可视化编程 26
2.2.2.2面向对象 28
2.2.2.3多层体系结构 30
2.2.2.4中间件 31
2.2.2.5统一建模语言——UML 32
2.2.2.6平台无关 32
2.2.2.7 Web Service与SOA 33
2.2.2.8 J2EE, .NET与MVC 34
2.2.2.9网格与云计算 34
2.2.2.10标准化 36
2.3现实!? 37
2.3.1新技术手段的使用状况 37
2.3.1.1面向对象分析、设计方法 38
2.3.1.2设计结果的表示 39
2.3.1.3开发调试工具 40
2.3.1.4编程语言 41
2.3.1.5支撑环境 42
2.3.1.6 标准化 42
2.3.2困难没有得到本质解决 43
2.3.3许多人这样看 44
2.3.4痛一时,利一生? 44
2.4 疑惑——方法的抉择 45
2.5方法到底解决了什么 47
2.5.1通用函数库、类库与框架的复用 47
2.5.2分层体系使生产集中于应用本身 49
2.5.2.1分层体系综述 49
2.5.2.2 软件行业的分层体系 50
2.5.3面向对象有机描述客观目标 51
2.5.4 “平台无关”是以“时间换空间” 53
2.5.5其它本质探讨 54
2.6常用有效技术方法简介 54
2.6.1 分析与设计的组织 55
2.6.2开发环境的选择 56
2.6.3编程 60
2.6.4文档的生成 61
2.6.5其它环节 62
2.7本章小结 62
第三章 如何有效地服务——技术管理者的烦恼 64
3.1 软件项目管理现状 64
3.1.1管理过多依赖个人经验 64
3.1.2管理规则很不成熟 65
3.1.3管理组与开发组不协调 66
3.1.4无通用规则可循,各有特色 67
3.1.5新方法的现实情况 68
3.2软件项目管理的几个具体问题 68
3.2.1文档的管理问题 68
3.2.2设计文档的作用到底是什么? 69
3.2.3过程控制问题 70
3.2.3.1软件过程模型简介 70
3.2.3.2现状 71
3.2.4测试的问题 71
3.2.5需求制定的问题 72
3.3管理者的希望与困惑——CMM 72
3.3.1 CMM简介 72
3.3.2 PSP/TSP 74
3.3.3 CMM应用现状 75
3.3.4 CMM的困惑 75
3.4 究竟怎么回事? 76
3.5本章小结 76
第二部分 软件的本质—不是三维 78
四、理想与现实——科学与工程的碰撞 78
4.1软件工程的理想——生产线与复用 78
4.2工程实践——与理想模式的距离 79
4.2.1软件是数字化社会的主体 79
4.2.2软件生产业的主体是什么? 80
4.2.3软件生产工程实践现状 80
4.2.3.1系统软件与支撑软件生产较规范 80
4.2.3.2应用软件生产主体处于手工业阶段 80
4.2.3.3软件生产业主体处于手工业阶段 81
4.3“飞速发展”的本质 81
4.4本章小结 82
五、不是三维——软件的本质 83
5.1三维空间——人类形象思维的局限 83
5.2传统产品简析 83
5.2.1传统产品——三维实体 83
5.2.2传统产品的核心——设计输出 84
5.2.3传统产品生产模式——生产线 84
5.3软件产品简析 84
5.3.1软件是一种特殊的产品 84
5.3.2二维可视化设计语言能力分析 85
5.3.3软件无法完全可视化表达 87
5.3.4软件产品的核心——代码 87
5.3.5一个有趣的问题 88
5.4软件的本质——不是三维 88
5.5本章小结 89
第三部分 软件生产方法论----实践与研究 90
六、设计与开发 91
6.1引言 91
6.1.1 构件化生产与自动化的探讨 92
6.1.1.1 软件构件化生产简介 92
6.1.1.2 关于UML与构件化生产 93
6.1.1.3 软件构件化生产探讨 94
6.1.2 实用技术方法涉及的内容 94
6.2应用系统架构设计 95
6.2.1 什么是架构 95
6.2.2 几种常见架构模式 96
6.2.2.1单机应用系统(Standalone) 96
6.2.2.2客户机/服务器(Client/Server)结构 97
6.2.2.3 多服务结构(SOA) 103
6.2.2.4 企业数据交换总线 105
6.2.3 实践中的系统架构设计 106
6.2.3.1 两层,三层还是四层 106
6.2.3.2四层以上的多层体系 109
6.2.3
目录
序 11
前言 13
第一部分 现状与困惑 16
第一章 困难与困惑 16
1.1软件项目实施的困难 16
1.1.1漫长的维护期 16
1.1.2什么时候开始编码——生产过程控制 16
1.1.3开发周期的精确估算 17
1.1.4需求何时确定 17
1.1.5令人头痛的边缘问题 18
1.1.6鲁棒性 19
1.2飞速发展?——困惑 19
第二章 技术方法的抉择——软件设计师的困惑 21
2.1 引言 21
2.2 软件设计师的理想 22
2.2.1 什么是软件设计师 22
2.2.2 技术人员的理想 24
2.2 似有曙光——方法论 25
2.2.1技术进步带来希望 25
2.2.2软件技术方法综述 26
2.2.2.1可视化编程 26
2.2.2.2面向对象 28
2.2.2.3多层体系结构 30
2.2.2.4中间件 31
2.2.2.5统一建模语言——UML 32
2.2.2.6平台无关 32
2.2.2.7 Web Service与SOA 33
2.2.2.8 J2EE, .NET与MVC 34
2.2.2.9网格与云计算 34
2.2.2.10标准化 36
2.3现实!? 37
2.3.1新技术手段的使用状况 37
2.3.1.1面向对象分析、设计方法 38
2.3.1.2设计结果的表示 39
2.3.1.3开发调试工具 40
2.3.1.4编程语言 41
2.3.1.5支撑环境 42
2.3.1.6 标准化 42
2.3.2困难没有得到本质解决 43
2.3.3许多人这样看 44
2.3.4痛一时,利一生? 44
2.4 疑惑——方法的抉择 45
2.5方法到底解决了什么 47
2.5.1通用函数库、类库与框架的复用 47
2.5.2分层体系使生产集中于应用本身 49
2.5.2.1分层体系综述 49
2.5.2.2 软件行业的分层体系 50
2.5.3面向对象有机描述客观目标 51
2.5.4 “平台无关”是以“时间换空间” 53
2.5.5其它本质探讨 54
2.6常用有效技术方法简介 54
2.6.1 分析与设计的组织 55
2.6.2开发环境的选择 56
2.6.3编程 60
2.6.4文档的生成 61
2.6.5其它环节 62
2.7本章小结 62
第三章 如何有效地服务——技术管理者的烦恼 64
3.1 软件项目管理现状 64
3.1.1管理过多依赖个人经验 64
3.1.2管理规则很不成熟 65
3.1.3管理组与开发组不协调 66
3.1.4无通用规则可循,各有特色 67
3.1.5新方法的现实情况 68
3.2软件项目管理的几个具体问题 68
3.2.1文档的管理问题 68
3.2.2设计文档的作用到底是什么? 69
3.2.3过程控制问题 70
3.2.3.1软件过程模型简介 70
3.2.3.2现状 71
3.2.4测试的问题 71
3.2.5需求制定的问题 72
3.3管理者的希望与困惑——CMM 72
3.3.1 CMM简介 72
3.3.2 PSP/TSP 74
3.3.3 CMM应用现状 75
3.3.4 CMM的困惑 75
3.4 究竟怎么回事? 76
3.5本章小结 76
第二部分 软件的本质—不是三维 78
四、理想与现实——科学与工程的碰撞 78
4.1软件工程的理想——生产线与复用 78
4.2工程实践——与理想模式的距离 79
4.2.1软件是数字化社会的主体 79
4.2.2软件生产业的主体是什么? 80
4.2.3软件生产工程实践现状 80
4.2.3.1系统软件与支撑软件生产较规范 80
4.2.3.2应用软件生产主体处于手工业阶段 80
4.2.3.3软件生产业主体处于手工业阶段 81
4.3“飞速发展”的本质 81
4.4本章小结 82
五、不是三维——软件的本质 83
5.1三维空间——人类形象思维的局限 83
5.2传统产品简析 83
5.2.1传统产品——三维实体 83
5.2.2传统产品的核心——设计输出 84
5.2.3传统产品生产模式——生产线 84
5.3软件产品简析 84
5.3.1软件是一种特殊的产品 84
5.3.2二维可视化设计语言能力分析 85
5.3.3软件无法完全可视化表达 87
5.3.4软件产品的核心——代码 87
5.3.5一个有趣的问题 88
5.4软件的本质——不是三维 88
5.5本章小结 89
第三部分 软件生产方法论----实践与研究 90
六、设计与开发 91
6.1引言 91
6.1.1 构件化生产与自动化的探讨 92
6.1.1.1 软件构件化生产简介 92
6.1.1.2 关于UML与构件化生产 93
6.1.1.3 软件构件化生产探讨 94
6.1.2 实用技术方法涉及的内容 94
6.2应用系统架构设计 95
6.2.1 什么是架构 95
6.2.2 几种常见架构模式 96
6.2.2.1单机应用系统(Standalone) 96
6.2.2.2客户机/服务器(Client/Server)结构 97
6.2.2.3 多服务结构(SOA) 103
6.2.2.4 企业数据交换总线 105
6.2.3 实践中的系统架构设计 106
6.2.3.1 两层,三层还是四层 106
6.2.3.2四层以上的多层体系 109
6.2.3
上一篇:深圳市互联精英信息技术有限公司[ 06-03 ]
下一篇:SYBYL[ 06-03 ]





