图书前言

为了促进中国软件产业的快速发展,国务院于2003年颁布了“鼓励软件产业和集成电路产业发展的若干政策(即18号文件)”,在迄今五年多的时间里,以金山软件、江民科技等为代表的通用软件产品厂家和东软股份、大连华信等为代表的软件外包厂家以及以华为科技、中兴通讯等为代表的嵌入式软件厂家,纷纷加大了投资力度,业务得到了快速发展。由于软件能够明显地提高现有业务处理和工作效率,不同的行业、不同的地区软件又具有不同的应用特点,软件将渗透到每个单位、每个家庭、每个设备,同我们的工作和生活紧密相关,因此,软件产业市场领域广阔,具有良好的发展前景。

  2001年12月,教育部、原国家计委批准成立第一批35所国家示范型软件学院,主要目标是培养高层次、国际化和实用型的复合软件人才,满足社会对高层次软件实用人才的迫切需要。软件学院主要承担软件工程工程硕士研究生(双证)、软件工程工程硕士研究生(单证)、四年制软件工程专业本科生、在校转专业本科生和软件工程第二学位本科生等两个层次五个类别学生的教学培养工作。

  目前,国内多数软件学院都花了很大代价引进著名的卡耐基梅隆大学(Carnegie Mellon University,CMU)软件工程本科核心课程,许多专业课采用双语教学和最新英文原版教材,并与国外大学联合招收软件工程硕士研究生。同时,与印度TCS、Infosys、Wipro等著名软件外包公司展开各种形式的教学合作与学生交流。经过七年多的运行,软件学院为社会培养了大批的软件人才,获得了社会、家长和学生的广泛认可。但是,随着计算机技术的不断发展和社会需求的不断提高,软件学院未来进一步发展面临一些突出的问题,包括如何明确软件学院软件工程专业的定位,避免与计算机学院计算机科学与技术专业的“同质化”竞争问题; 强调软件学院的办学特色,设计满足中国学生实际情况的软件工程课程和教材等培养体系,做到“国际化”与“本土化”的有机结合等。

  软件开发实践课程是四川大学软件学院众多一线任课教师在5年多教学实践基础上提炼的一门特色课程,具有“承上启下”的作用,即在C/C++/Java高级程序设计语言、软件工程、计算机网络、操作系统、数据库等专业基础课的基础上,通过实际的软件项目与产品开发,激发学生学习和动手实践的兴趣,拓展学生市场思维,掌握软件开发技能,培养创造性的工程设计和协同工作意识,提高综合分析和解决问题的能力,为后续课程学习、校外实训、ACM竞赛、萌芽基金、大学生创新性实验计划、毕业设计甚至学生就业和创业奠定坚实的基础。

  软件开发实践不同于一般的高级程序设计语言和软件工程的实验课,特色之处包括: 

(1) 案例化。作为一门独立、实用、综合的软件开发实践课程,针对性强,借鉴管理学科MBA案例分析的思想,基于软件产品案例化教学,提升学生的软件工程和高级程序设计语言等知识和软件工具的综合运用能力,以基于项目驱动的教学模式和方法改革软件工程专业的课程体系。

(2) 实用化。课程项目来源的三种途径:

① 课程项目结合教师科研方向,来自教师的真实科研项目,对学生的训练有实际意义; 

② 通过引导学生确定市场导向的、感兴趣的项目,培养学生的市场意识和软件产品化能力,做到理论和实际的有机结合; 

③ 与企业合作,课程项目来自企业的外包或分包项目,也可实际参与到企业的开发团队中,承担一部分设计与开发工作。

(3) 个性化。建立“学生为主体,教师为主导”的教学模式,采用小组化、个体化教学方式,每组4~6人,教师充当教练和师傅,其教学效果远优于一般的大课课堂教学效果,更适合软件开发人才的培养,对学生个性和能力的发展很有帮助。

(4) 互动化。建立了教师与学生的一种良好教学关系,教师在课程结束以后继续指导学生进行软件开发工作,并最终取得各方面成绩,为学生未来创业和就业奠定坚实的基础。

(5) 成果化。每期课程结束后,进行实践成果的评选,优秀项目编为案例集,并推荐为学院萌芽基金和学校本科生科研训练计划的备选项目,继续资助学生不断研发,成为一个跨多个学期的项目,逐步发展成一个可用的软件产品,改善软件工程专业学生的培养效果和质量。

  课程教学方式建议:

(1) 将学生分成若干项目组,每组4~6人,推选组长1名。

(2) 课堂教学以学生为主,教师采取引导、讨论的方式,最大程度调动学生的积极性,激发学生的开发兴趣,确定项目组开发项目的内容、目标、分工和计划。

(3) 课程教学预计需要30~40个学时,主要用于项目进度和问题的分析与探讨,课余学生用于项目开发的时间约为课堂时间的3~4倍。

(4) 根据软件工程的流程,按照实际工程的标准合理组织项目的实施,按照需求分析、系统设计、编码实现和测试与文档四个阶段设定节点,加强日常项目管理,并检查项目成果。

(5) 虽然提供了较为完整的软件产品分类案例集,但只是对教师和学生的软件开发实践选题提供一个参考,教学方式应采用基于项目驱动的方法,而非基于案例驱动的教学方法,任课教师一般可重点选择介绍一个案例。

(6) 评价方式主要采用考查方式,平时表现、项目开发成果及项目报告三个方面结合,评价项目组及每个学生的实践成果。

  本书面向高等院校软件工程、计算机科学与技术、电子工程、通信工程等专业二年级以上本科生和研究生,可作为“软件开发实践”和“软件工程开发”等有关课程的教材,同时,也可作为各级职业教育软件开发、设计与应用人员培训的参考书。

  在本书的编写和相应教学案例研究与开发过程中,一直得到众多专家的亲切关怀和广大读者的热情支持与帮助。香港理工大学计算机系的邵子立教授、台湾大学电机资讯学院的郭大维教授、美国Texas大学Austin分校计算机系的Tao Li教授、加拿大St. Francis Xavier大学的Laurence T.Yang教授、美国得州大学Dallas分校(Univ. of Texas at Dallas)的Edwin Sha教授、澳大利亚La Trobe大学的Dianhui Wang教授、韩国Kyungwon大学软件学院的Y.S.Kim教授、美国新泽西工学院的王志刚教授、华东师范大学软件学院的陈慧博士、HP(中国)公司的杨思忠博士、Alcatel(中国)公司的骆志刚博士和吴星勇给了作者很多支持和帮助。本书还从国内外许多关于软件工程、软件管理、软件开发与设计、软件需求分析、软件测试、软件案例分析等高水平著作或与有关专家的讨论交流中吸取了新的营养,这些著作的部分作者和专家是H. M. Deitel、张少仲、李远明、陈宏刚、林斌、刘天时、俞辉、陈华恩、陈伦艳、赵丰、童畅等,谨向上述教授、专家和朋友表示诚挚的谢意。

  本书由郭兵、沈艳、洪玫、刘东权、胡晓勤等执笔完成,参加本书编写工作的还有何军、高伟、李晓华、赵奎、阮树骅、尹皓、赵奎、王湖南、李辉、黄武、周湘、罗刚、李冉、廖海艳、任磊、曾蜀芳、周雪梅、朱建、达波、王奇、黄钦、李奇、胡俊、蒋志发、邓勤林、宋彦、熊冰、何富华等同志。本书在编写过程中,四川大学计算机(软件)学院的有关领导和师生对本书的写作提供了宽松的环境和多方协助,得到了四川大学计算机(软件)学院邰明松书记、章毅教授、周激流教授、李志蜀教授、朱敏教授、唐宁九教授、张建州教授、王俊峰教授、彭舰副教授和电子科技大学计算机学院熊光泽教授的大力支持和悉心指导,在此表示深深的谢意。清华大学出版社的广大员工也为本书的编辑出版付出了辛勤劳动,在此,也向他们深表谢意。

  最后,特别感谢国家863成都软件产业化基地、成都巅峰软件集团有限公司和微软(中国)有限公司对本项研究工作的支持。

  软件是一门非常年轻的学科与技术,仍处于快速发展时期,对许多理论问题和工程方法作者尚未深入研究,一些有价值的新内容也来不及收入本书。由于作者知识和水平有限,加上编写时间较紧,书中错误之处在所难免,希望各位专家、教授和读者批评指正。

郭兵

于四川大学计算机(软件)学院

2009年6月