
基本信息出版社:电子工业出版社
页码:264 页
出版日期:2009年12月
ISBN:7121099101/9787121099106
条形码:9787121099106
版本:第1版
装帧:平装
开本:16
正文语种:中文
丛书名:全国高等职业教育计算机类规划教材实例与实训教程系列,2009年国家精品课程配套教材
内容简介 《软件项目开发与实施》重点阐述软件开发的基本过程和实际工作中可能碰到的问题,以商业化的图书馆管理系统作为贯穿全书的案例,按照软件企业从签订合同到实施的工作过程,系统地介绍了软件合同签订→项目组织→需求→设计→编码→测试→实施的完整过程。
《软件项目开发与实施》以生动的漫画、角色表现、照片等多种形式,形象地阐述软件开发过程中的抽象问题。此外,书中记录了图书馆调研和分析过程中涉及的素材,包括调研照片、录像、设计文档、设计样例、案例数据库、参照程序等。读者利用配套的素材可自行开展实际训练。《软件项目开发与实施》基本架构不拘泥于某种设计方法,书中附有结构化和面向对象设计方法,以便教学者和学习者灵活选择。
《软件项目开发与实施》可作为高职、大专院校、本科院校的实训课程教材,也可供广大学习软件研发的开发人员作为入门学习教材使用。
编辑推荐 《软件项目开发与实施》:全面剖析商业应用案例,面向高职量身定制,精挑必需知识,漫画生动展现
完善的案例素材(调研录像、调研照片、案例设计方案、数据库结构、案例源程序、安装包等),营造开发意境,确保项目案例的可操作性和易实施性
共享国家精品课程丰富教学资源(wwwit0101.net),共享论坛问题资源库
全套教学辅助资料(教学项目设计方案、教师PPT、Flash动画、习题参考答案、项目模拟合同、项目参考安排表、项目操作布置照片等),方便课程教与学
实例讲解
实训强化
培养技能
面向就业
目录
第1章 一起动手做软件(1)
1.1 项目开发背景(1)
1.2 要学什么(2)
1.3 该怎么学(2)
1.4 该怎么做(3)
1.4.1 软件产业的一般过程(3)
1.4.2 软件的开发过程(5)
1.5 你想做哪一种工作(6)
1.6 本书涉及的人物及岗位角色(7)
1.7 从哪里开始做——先签订合同(9)
1.8 案例、实践与思考(9)
第2章 签订合同(12)
2.1 本阶段的工作任务(12)
2.2 本阶段涉及的角色及分工(13)
2.3 不同的合同格式(14)
2.3.1 软件销售合同(14)
2.3.2 定制软件合同(14)
2.4 签订合同与需求分析(14)
2.5 案例、实践与思考(15)
第3章 拿着合同如何开始——开工前的功课(23)
3.1 本阶段的工作任务(23)
3.2 本阶段涉及的角色及分工(23)
3.3 从造房子开始谈软件工程(24)
3.4 软件工程和软件项目(25)
3.5 软件生命周期和软件工程的一般过程(26)
3.5.1 瀑布模型生命周期——设计后最好不要修改(28)
3.5.2 演化模型——修修补补(29)
3.5.3 增量迭代模型和RUP(31)
3.5.4 其他软件生命周期及比较(35)
3.6 选择图书馆管理系统的生命周期模型(36)
3.7 案例、实践与思考(37)
第4章 开工——开始项目规划和分工(38)
4.1 本阶段的工作任务(38)
4.2 本阶段涉及的角色及分工(39)
4.3 明确图书馆管理系统项目任务(39)
4.4 组建项目开发团队(40)
4.5 制定项目开发计划(42)
4.5.1 项目开发要点(42)
4.5.2 项目工作结构分解(42)
4.5.3 项目干系人(43)
4.5.4 甘特图(43)
4.6 案例、实践与思考(44)
第5章 需求——确定要做什么(46)
5.1 本阶段的工作任务(46)
5.2 本阶段涉及的角色及分工(47)
5.3 什么是需求——再从造房说起(47)
5.4 如何进行需求分析(48)
5.4.1 获取并记录用户需求(49)
5.4.2 分析用户需求(51)
5.4.3 编写需求规格说明书(53)
5.5 需求和设计的边界(54)
5.6 需求分析的过程和具体方法(55)
5.6.1 结构化方法(56)
5.6.2 面向对象方法(56)
5.7 图书馆管理系统的需求过程(57)
★5.8 结构化需求分析方法与数据流图画法(58)
5.8.1 数据流图的基本符号(59)
5.8.2 数据流图的画法(60)
5.8.3 画数据流图的注意事项(63)
5.8.4 数据字典(65)
★5.9 面向对象的分析建模——UML建模(69)
5.9.1 UML中的事物(70)
5.9.2 UML中的关系(72)
5.9.3 UML中的图(73)
5.9.4 关键视图的绘制(76)
5.10 案例、实践与思考(83)
第6章 图书馆管理系统调研资料搜集及分析(87)
6.1 本阶段的工作任务(87)
6.2 本阶段涉及的角色及分工(88)
6.3 调研图书馆的基本情况(88)
6.4 调研图书馆的基本业务流程(89)
6.5 图书馆业务流程调研过程(90)
6.6 调研图书馆管理系统的基本工作流程(101)
6.6.1 图书馆管理系统的基本工作流程(101)
6.6.2 微星图书馆管理系统的基本功能(102)
6.7 图书馆手工工作流程相关素材分析(105)
6.8 图书馆应用计算机管理后相关素材分析(110)
6.9 图书馆关键业务手工流程数据流图分析(115)
6.10 图书馆关键业务应用计算机系统数据流图分析(119)
6.11 案例、实践与思考(122)
第7章 软件设计——告诉程序员怎么做(124)
7.1 本阶段的工作任务(124)
7.2 本阶段涉及的角色及分工(125)
7.3 在了解需求后是否可以直接编程——为什么需要软件设计(126)
7.4 软件设计与硬件设计的关系(126)
7.4.1 软件的总体设计与硬件设计和选型是相关的(126)
7.4.2 对硬件的要求属于软件需求还是软件设计步骤(128)
7.5 是否有先将菜单设计好的冲动和欲望(129)
7.6 对于菜单、界面、数据库,应先设计哪一个(130)
7.7 如何设计表(132)
7.7.1 怎么知道要设计哪些表(132)
7.7.2 根据范式进行适当的优化(138)
7.8 怎样进行模块划分(142)
7.8.1 是否所有的设计都应由一个人完成(142)
7.8.2 应该从哪里开始进行设计?先设计界面吗(142)
7.8.3 怎样确定应做哪些模块(142)
7.8.4 怎么设计一个模块(146)
7.9 如何设计界面(148)
7.10 总体设计的图形描述工具(150)
7.11 需求分析和设计的方法及工具总结(151)
★7.12 设计案例——基于结构化设计方法(152)
7.12.1 结构化设计基本方法(153)
7.12.2 图书馆管理系统设计案例(154)
7.12.3 面向对象设计方法(163)
★7.13 微星图书馆管理系统表设计(168)
7.14 案例、实践与思考(171)
第8章 编码(174)
8.1 本阶段的工作任务(174)
8.2 本阶段涉及的角色及分工(175)
8.3 编码语言和后台数据库的选择(175)
8.3.1 编码语言的选择(175)
8.3.2 后台数据库的选择(176)
8.4 落实任务并开工(177)
8.4.1 再次确认分工是否合适(177)
8.4.2 如何协作进行编码(177)
8.5 登录编码设计(179)
8.5.1 假冒的安全登录设计(180)
8.5.2 带用户密码设定的登录设计(180)
8.5.3 防止穷举攻击的登录设计(183)
★8.5.4 满足数据库安全要求的登录设计(184)
8.6 防止错误输入编码设计(185)
8.6.1 在编程语言的控件中进行设定(186)
8.6.2 在编程语言中进行编码设定(186)
8.6.3 在数据库中用Check进行数据完整性设定(187)
8.7 界面编码设计(188)
8.7.1 界面设计详解——借书证办理界面编码设计(190)
8.7.2 界面设计详解——图书借还界面设计(194)
8.7.3 界面设计详解——某杀毒软件注册界面设计的缺陷分析(195)
8.7.4 界面设计详解——快捷简码的设计(196)
8.8 性能优化编码设计(198)
8.8.1 观察应用程序占用的系统资源(198)
8.8.2 尽量减少海量数据访问(198)
8.8.3 涉及表的性能优化方案(199)
★8.9 界面设计的一些原则(200)
8.10 案例、实践与思考(203)
第9章 测试(205)
9.1 本阶段的工作任务(205)
9.2 本阶段涉及的角色及分工(206)
9.3 软件能否交付给用户(207)
9.4 软件测试与软件开发(208)
9.5 测试从哪里入手(210)
9.5.1 快速掌握业务需求(210)
9.5.2 确定测试范围(211)
9.5.3 选择测试方法(212)
9.5.4 搭建测试环境(214)
9.6 如何进行功能测试(216)
9.6.1 测试需要设计(216)
9.6.2 测试用例模板(218)
9.6.3 黑盒测试方法(219)
9.7 如何进行性能测试(222)
9.7.1 不同视角对性能测试的认识(223)
9.7.2 网络软件性能测试要点(224)
9.7.3 性能测试实施流程(228)
9.8 易用性测试(232)
9.9 发现问题时应该如何处理(235)
9.9.1 缺陷处理流程(235)
9.9.2 编写缺陷报告(236)
9.9.3 执行回归测试(238)
9.9.4 学会与开发人员沟通(239)
9.10 案例、实践与思考(239)
第10章 实施(241)
10.1 本阶段的工作任务(241)
10.2 本阶段涉及的角色及分工(242)
10.3 软件实施的基本过程(242)
10.4 软、硬件系统的安装和调试(243)
10.5 软件培训(244)
10.6 软件初始化(245)
10.7 系统验收(247)
10.8 图书馆管理系统的销售及实施(247)
★10.9 验收测试报告(249)
★10.10 微星图书馆系统配置参考报价表(250)
10.11 案例、实践与思考(251)
附录A IEEE标准830-1998需求规格说明书模板(254)
附录B 软件需求说明书(国家计算机标准文件模板)(258)
附录C 概要设计说明书(国家计算机标准和文件模板)(261)
附录D 课程资源列表(265)
参考文献(266)
……
序言 只有通过更多的实践环节,学生才能更好地掌握实际技能。但是,在学习软件工程相关知识的过程中,很多同学遇到了知识学习如何与理论实践相结合的瓶颈,软件工程相关知识教学遇到了难点。由于“软件工程”课程本身比较强调理论的应用,传统的“软件工程”教学在实际教学过程中的效果不理想,部分高职院校的计算机应用专业甚至干脆取消了这门课的教学;部分院校则通过在语言课程中穿插软件工程知识来强调工程化知识;而部分院校软件的专业则更加强调“软件工程”知识,通过将软件工程知识拆分为更加专业的“软件项目管理”、“软件测试”等课程进行强化。
本书的作者经历了“软件工程”在高职院校开设和取消的整个过程。在这个过程中,本书的作者所在的院校也对这门课程教学进行了大胆的改革,其中最重要的就是引入了“软件项目开发与实施”这门实训课程,通过四年的实际教学表明,学生对实训环节的接受效果较纯粹的理论教学要好很多。
高职教育强调“面向就业”的技能需要,传统的“软件工程”教学明显无法满足这个需要。从学生就业的情况来看,即使是软件班的同学,也不能保证大部分学生将来能够直接从事软件开发工作。计算机应用和软件相关专业的学生,主要从事软件开发、软件企业的软件售后服务、售前服务、软件销售、软件应用企业的软件维护、软件测试等岗位的工作,其中从事软件售后服务和软件维护的同学占了很大的比例。因此,如何在软件项目开发相关课程教学过程中,除了强化软件开发的工程知识外,更强调针对学生就业岗位群的知识技能点,是本教材努力的方向。
本教材试图在实际教学过程中,对软件工程知识点做多岗位视角的诠释,而不仅局限于“软件开发”这个单独的岗位来阐述软件工程知识。本教材以图书馆项目案例的方式来阐述软件工程相关知识,除了以图书馆开发项目实践贯穿整个教材外,在项目实践的各个阶段,都从学生就业的各个岗位视角阐述本阶段需要掌握的技能,以最大可能地接近就业实际。
本教材选择了微星图书馆管理系统作为案例。微星图书馆管理系统目前已经运行在全国200多所中、小型图书馆中,是一个成型的商业化图书馆管理系统。采用成型的图书馆管理系统可以使学生有成型的参考案例,并且有丰富的案例数据。本书作者已经与微星图书馆管理系统的经销商达成一致,该公司提供软件的演示程序、案例数据库、设计文档,并将配合各学校搞好实训工作。
在具体使用本教材的过程中,可以直接采用项目实训的方式,建议实训时间为4~6周。若实训时间较少,本教材也可采用授课形式进行,结合课外平行进行项目训练。本教材提供丰富的配套案例,包括案例数据库,针对不同程度的学生可采用自行设计数据库或者直接采用案例数据库两种形式进行教学。相关素材可从电子工业出版社网站下载或者从课程网站www.it0101.net 下载。
由于软件项目开发与软件工程相关知识的容量很大,所以很难在高职教育中面面俱到。本书在内容选择、难度深度控制等方面,都针对高职同学的就业岗位的实际情况进行考虑。
考虑到高职同学就业的主要面向岗位为编码及实施维护岗位,因此,本教材以图书馆管理系统开发为项目任务,以简化的瀑布模型为基本软件开发的过程,结合软件开发的具体方法,辅之以适当的工具,使学生在具体工作任务的驱动下学习软件的开发过程。图0.1说明了本书的基本框架体系,其中斜体字部分是作者认为对于高职学生学习有难度的部分,但可作为可选内容。本书不特别强调特定的设计和分析方法,具体的设计方法皆以附录的形式出现,供授课老师选择。教师也可根据具体情况选择使用相关设计工具,本书不具体介绍。书中标题前带星号“★”部分为作者理解意义上的高职学生可选内容部分。
(此处有一张图)
图0.1 本书的基本框架体系
本书由戴坚锋任主编,徐芳任副主编。徐芳负责第9章和部分章节习题的编写,姜洋负责第5章和第7章中有关面向对象设计的编写,戴坚锋编写其余全部内容。在本书的编写过程中,王雷、林逢升提供了部分图表和一些格式模板,王雷根据其多年的软件开发经历对本书提出了宝贵的建议。本书还得到了杭州正隆数码科技有限公司的方燕川、叶维等工程师的配合,并提供了部分资料和素材;浙江机电职业技术学院图书馆的沈国林、沈国强,也为前期的素材准备等工作提供了帮助和便利。叶楚楚根据作者创意为本书绘制了配套漫画,本书的配套光盘中使用了徐贤哈等历届学生的设计资料,同时本书也参考了同类经典教科书中的一些典型说明,包括张洋提供了面向对象设计的部分资料,在此一并致谢。
本书为2009年国家精品课程建设项目《软件项目开发与实施》的配套教材。本书的主编为系统分析师,一直从事项目开发实践;副主编徐芳为信息系统项目管理师。但是,由于对高职、本科在软件开发方面的定位理解不一定精确,对软件工程在实践中运用的理解也不一定完全正确,加上编写时间仓促,作者在编写教材和表达方式方面的不足,以及资料检索方面的不周,都会造成教材存在一定的不当和错误之处,恳请读者批评指正,并欢迎将问题反馈至电子邮箱:A13335817778@QQ.com,以便再版时更正。
文摘 插图:

1.2要学什么
我们要学习软件项目开发和实施相关的知识, 我们一起做一个图书馆管理系统。
有人可能要问:“老师,为什么我们不做一个仓库管理系统,不做一个ERP系统,或者不做一个××管理网站呢?”
这是因为在学习和掌握语言后,要想真正地设计软件,必须接触一个实际的场景;每个学校都有一个图书馆,图书馆的管理系统,既不能简单地从做一个小程序的角度考虑,又不能太复杂;而且大部分同学也了解流程,所以用图书馆管理系统作为案例,比较容易深入实际。
有同学可能认为,虽然我学的是计算机专业,但我今后不想做程序,或者我不一定做设计,为什么还要学习编程和项目开发的知识呢?
的确,很多同学今后不从事软件设计和研发,但是,不从事软件设计和研发,并不表示不接触软件和软件的相关知识。从事企业信息化维护的同学,不一定要自己设计软件,但是经常会与设计软件的公司打交道,代表企业与软件开发单位交流软件的需求。如果没有软件设计的经历,交流会比较困难。事实上,很多同学将来会从事编码或者实施和维护,了解一定的软件开发的项目知识,对今后做好这些工作都是非常有益的。
1.3该怎么学
本书提供了项目开发的大量素材,包括照片、录像、对话等。只要按照本书提供的素材逐步地进行,就可以了解软件开发的基本过程,并完成一个实际的项目。
为了适应不同基础的同学的需要,可以按照两种方案进行项目的实际训练和操作:
(1)完全、重新由自己设计,包括数据库和表都由自己设计。
(2)利用现有的设计基础,利用现成的数据库和表,在此基础上增加一些新功能。比如,原来采用C/S(客户端/月艮务器模式)结构的系统,现在采用B/S(浏览器/服务器模式)结构,增加网上预约等功能。