前 言
高校软件类、信息类专业都会学到软件工程学。目前市面上关于软件工程的教材很多,但大都是从理论上教学,实践的比较少。言若金叶软件研究中心编写的《软件工程导论实践指南》是以软件工程核心理论为指导,以具体的软件项目研发为实例,介绍软件的需求、建模、设计、编程、测试,直至部署,让读者在具体的实践中体会软件工程。
《软件工程导论实践指南》根据目前高校的教学和课程设置的实际情况,选择Java和ASP.NET两个方向进行编写。为了便于学生理解,Java方向选用“大学学籍管理系统”,ASP.NET方向选用“IBloger博客系统”。两个系统都力图用最简单的功能与实现来展现软件工程的基本过程。
1.本书特点与涉及的内容
本书以实际项目为原型,以关键的理论与丰富的实践为指导,贯彻先进的项目管理理念与全程质量管理思想,通过具体的实例,介绍软件工程每个阶段的目标和使用方法与技术,以及在软件行业中的各个职位,如产品经理PM、工程师经理EM、开发工程师DEV、软件质量保证工程师QA、人力资源管理师RM等,在软件各环节中所起的作用、主要做的事务。
本书包含众多软件从业人员多年工作经验的总结,再加上软件培训中心和高校教师与学生的共同参与和实践,使它最终成为一本很好的实践指导攻略书。
本书涉及的主要内容有:
(1)从理论上阐述了软件工程的基本概念、基本原理、软件的生命周期、软件模型以及软件工程的常见定义,使读者对软件工程有个整体概念性的了解,为后面软件工程实践打下理论基础。
(2)软件工程项目启动之前的可行性研究,结合实践项目介绍可行性研究的目的与意义,以及可行性研究的具体内容。
(3)以实践项目为出发点,介绍软件项目的需求分析。通过本章的学习,读者可以了解如何进行项目的需求分析,以及需求分析需要注意哪些事项。
(4)在项目实施时,对发生的成本和效益进行详细分析。
(5)通过绘制数据流图、数据字典、实体关系图,对项目进行结构化分析。在本章中,读者可以学到软件项目中各种常见图形的画法。
(6)基于面向对象,对实践项目进行需求分析。面向对象是软件工程中的重点内容。
(7)结合目前流行的UML、Rose、EA,对实践项目进行分析建模。
(8)介绍项目实施前,如何制订计划,以及项目团队建设。
(9)在项目实施阶段,阐述如何进行项目的整体设计和详细设计。详细设计的主要任务和基本原则;以实践项目为指导,介绍项目的数据库设计、代码设计和用户界面设计。通过本章的学习,使读者能够掌握具体项目实施中,如何自己独立进行项目设计。
(10)常用编程工具的使用介绍,结合实践来介绍项目设计的风格特点,以及如何对实践项目进行详细的代码编写。
(11)详细介绍测试计划的编写。
(12)通过各种类型测试用例—单元测试、集成测试、确认测试、系统测试、验收测试,深入学习各种测试用例的方法。测试是软件工程中不可缺少的部分,它是软件质量的重要保证。目前国内对专业的软件测试越来越重视。
(13)从项目管理的角度阐述项目过程中的进度管理、风险管理以及质量管理。通过项目管理程序Project 2007的介绍,阐述在实践项目中如何进行管理。
(14)介绍项目在完成之后,如何部署到客户机器。
(15)项目后期的技术评审与质量维护。
通过本书的学习,读者可以由浅入深地掌握软件工程的理论知识,基本流程,以及在每个阶段需要做什么和怎么去做。此外,您还将了解:
(1)什么是软件工程?
(2)软件工程的基本原理是什么?
(3)项目可行性研究的内容是什么?
(4)如何进行项目需求分析?
(5)项目实施过程中常见的数据图有哪些?
(6)如何基于面向对象进行分析?
(7)如何组织项目团队?
(8)如何制订项目计划?
(9)如何对项目进行总体设计和详细设计?
(10)如何编写代码?
(11)如何进行项目测试?
(12)如何通过管理工具对项目进行管理?
(13)如何评估项目质量?
(14)软件项目是如何部署的?
(15)软件项目后期需要哪些维护?
我们还为每本书提供配套的软件或源程序供下载,读者在本机安装后,可以继续进行开发和测试,通过一系列的实践,使读者熟练掌握软件开发流程。
《软件工程导论实践指南》是从工程学的角度来阐述软件生命周期的整个过程,以及在各个过程中每个参与的成员在做什么,要达到什么样的目标,各个团队成员如何协作来共同完成软件产品从有最初的想法(概念),到最终的产品正式发布经历哪些过程与环节,各个里程碑的关键路径。
每一个环节需要什么样的输入,经过这个环节有什么样的输出(可检查的显性成果,包括技术文档、软件、缺陷跟踪、进度跟踪等)。本环节的输出是下一个环节的有效输入,下一环节根据上一环节的输入,再进行深加工,然后将最后成果带入更下面一个环节,环环相扣,逐步推进,最终到整个项目的完成。
让每一位读者,清晰地认识到:我如果想从事软件行业,我应该担任什么职位(PM,EM,RM,DEV,QA)比较合适,每一个职位需要什么样的知识素养;软件过程每一个环节需要各个人做什么,达到什么样的结果可以进入下一个环节;如何检验项目成功与项目失败。
本篇采用大学学籍管理系统进行阐述。
我们的目标:让每一个人都能进入到软件项目中,根据各人的特长,从事不同的角色,完成不同的任务,共同为软件项目服务。
2.主要作者与贡献人
本篇由王顺策划与主编,汪红兵、盛安平、吴治为副主编,王顺和盛安平负责主审。
作者:第1章由盛安平编写,第2章由王莉编写,第3章和第4章由王顺、李海峰编写,第5章由李海峰、黄百乔编写,第6章由盛安平、王莉编写,第7章由王顺、薛平蛟编写,第8章和第9章由王顺、汪红兵、薛平蛟编写,第10章由汪红兵、薛平蛟编写,第11章由盛安平、王莉、吴治、恽菊花、高轶编写,第12章由黄晓航、乔玉婷编写,第13章由恽菊花、高轶编写。
Java EE篇配套软件是由汪红兵与薛平蛟带领Java EE方向开发团队完成。
3.软件工程实践者
中心书籍的实践者主要来自三个方面:软件工程师从行业的角度来看配套软件是否符合标准,书中的理念、选材是否能很好地引导学生进入软件行业;高校教师与软件培训中心教师,主要考虑是否方便教学与学生自学;在校本科、硕士、博士从学生的角度看是否容易理解,能否学到动手实践的本领。参加书籍阅读与实践的成员有:安徽财贸学院计算机系的朱金娜,中澳学院日语方向的张玉,合肥工业大学会计学方向硕士邢璐,资深软件工程师张玲,资深教育管理师黄德垚,网站媒体采编闫蕊,合肥工业大学信息管理与信息系统方向硕士许绍斌、张芹,同济大学博士安徽财经大学副教授陈涛,山西师范大学历史学方向李艳琳。
4.内部三轮审阅与合成人员
第一轮:Roy,Sky,Scott,Kate,Nimon,Berid,Terry,Sammy,Happybuaa
第二轮:Roy,Sky,Kate,Sammy
第三轮:Roy,Sky,Scott
5.书籍配套软件的安装与使用
本篇附录A—大学学籍管理系统安装配制说明书详细说明了软件的安装方法;附录B—大学学籍管理系统产品规格说明书V1.0详细说明大学学籍管理系统的主要功能与使用方法。
6.学生动手实践空间
本篇的附录C—大学图书管理系统产品需求文档(PRD)V1.0与附录D—大学图书管理系统产品规格说明书(SPEC)是提供给学习本书的学生按项目运行过程来组织,从需求→建模→设计→编程→测试→部署与维护,在这过程中注意采用软件工程导论的方法和工具。任课教师也可以让学生自己选择熟悉的项目,实际动手演练一下,作为本课程结束时的课程设计。
7.致谢
感谢清华大学出版社提供的这次合作机会,使本实践教程能够早日与大家见面。
感谢团队成员的共同努力,因为大家都为一个共同的信念“为加快祖国的信息化发展步伐而努力!”而紧密团结在一起。感谢团队成员的家庭,是家庭和朋友的无私关怀和照顾,最大限度的宽容和付出成就了今天这一教程。
书中罗列了所有为本书的出版做出贡献的作者与实践者简历,主要技能,以及对知识的追求、对人生的感悟,希望能为每一位想从事软件行业的成员指明方向。
由于作者水平与时间的限制,本书难免会存在一些问题,如果在使用本书过程中有什么疑问,请发送E-mail到tsinghua.group@gmail.com或roy.wang123@gmail.com,作者及其团队将会及时给予回复。
8.后记
您也可以到中心的官网www.leaf520.com进行更深层次的学习与讨论,在言若金叶软件研究中心官网,您可以:
(1)了解中心最新的动态。
(2)掌握中心最新的专著进展情况。
(3)报名参加中心的软件工程师培训。
(4)报名参加中心软件工程师认证。
(5)报名参加中心软件实训与外包,锻炼自己能力的同时获得应有报酬。
(6)加入中心会员,或者直接加入中心,成为中心的一员,共同体验成长的快乐。
(7)加入中心软件各领域QQ群,和其他高手或同学一起探讨学习困难与成长经验。
(8)加入中心软件外包QQ群,由资深工程师与项目管理师带领您参与国际软件外包。
一切成就,只因有你!相信追求梦想的力量!
王顺
2012年7月于中国黄山