- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++程序设计案例遴选
摘要:针对C++程序设计课程中缺乏经典项目案例的问题,分析了从IT公司、开源项目中选取C++开发案例的优缺点。从开源项目中选取了8个关注度高、适合大学低年级学生知识结构的案例,设计了一套定量化的评估指标,使用代码查询语言(Code Query Language,CQL)及代码分析工具CppDepend,对这些案例进行了定量评估,给出了遴选C++程序设计案例的建议。
关键词:C++程序设计;案例;OOP代码质量评估;内聚性度量
在多年的C++程序设计课程教学实践中,学生们经常问的一个问题是:我们能够看得懂书,听得懂课,考试中能够考得好分数,但是为什么还是不知道如何编写一个规模稍大的C++程序?即使我们在教学中采用了课程设计的方式,来督促学生将课堂上所学的C++技术、编程思想运用到开发实践中,学生们在完成课程设计任务后,仍然会问:我们对C++的这种使用方式是正确的吗?是否有经典的C++案例可供我们参考?
目前已经出版了多本关于C++语言本身的经典教材,有适合初学者的[1-2],有深入介绍C++的[3-4],却没有适合大学低年级学生使用的经典案例教材。已经出版的C++案例书籍[5]大多只是讲述如何使用MFC开发一些具体应用领域的信息管理系统。虽然这些书籍讲述了如何用C++技术解决一些实际问题,部分书籍甚至给出了大量的源代码[6],但是这些书籍并没有深入讨论如何正确应用C++的各种技术和思想,使得设计出来的软件系统具有良好的性能、可扩展性、可移植性。这些书籍中的部分案例仅是为了书籍的出版而完成的,并非源自于工程实践。而其他源自于作者开发实践的案例几乎都是针对某个具体单位的业务要求,在有限时间内,由较小的开发团队完成的项目。由于这些软件项目缺乏公众的关注,投入的资源有限,其代码规模、代码质量、系统性能等并不适合作为大学教育的经典案例。
因此,我们需要从各种途径找到代码质量高的C++系统,对其进行系统地整理,以形成 C++程序设计课程的经典教学案例。
1案例的选择策略
我们曾考虑过从优秀的软件公司引入一些案例,在各种会议中曾和IBM、微软等公司的工程师交流,邀请公司对本科生进行培训。工程师对公司内部一些类似于课程“实训项目”需求的软件项目进行总结,将其中的技术、软件项目管理经验、先进的开发工具等传授给在校本科生。但是这种方式的问题是:
1) 出于公司商业机密以及知识产权的考虑,培训教师并不会将这些项目的源代码以及原始文档公布给学生。学生们无法切身体会到软件工程的各种理论、思想被活灵活现地应用到一个具体的项目中,学习中总是有一种“隔靴搔痒”的感觉。
2) 项目实施费用昂贵。由于这些实训项目源自于软件公司的实际开发过程,只有参与了这些项目开发的工程师方可讲透、讲活,而聘请这些工程师的费用是比较昂贵的。
在了解了以上情况后,我们更改了选择案例的策略,将目光转向了开放源代码(Open Source)项目。目前世界上有成千上万的开源项目,所有项目的源代码、开发文档都是公开的。其中绝大多数项目的版权协议都允许在高等教育中引用这些项目中的资料。开源项目数量庞大,我们依据以下原则进行初步筛选:
1) 关注度高。一个开源项目如果得到用户的关注,往往说明该软件功能实用,在同类软件中性能更好。由于得到用户的关注,其开发小组就能够持之以恒地对软件进行改进,其软件体系、软件代码质量就会更高。我们依据开源项目的每周用户下载次数对开源项目进行排序,忽略掉那些下载次数少的项目。
2) 较少涉及其他专业领域知识。在大部分计算机专业或者软件专业中,学生往往按照C、C++、Java或者C#的顺序来学习编程语言。由于大多数专业课程往往依赖于C或C++语言课程,当学生学习C++程序设计课程时,还没有学习其他更多的专业知识。如果将一些涉及到较深专业领域知识的开源项目作为课程案例,如电路板自动布线系统、编译系统等,学生将徒然花费很多时间去学习与课程本身不相关的领域知识。因此,我们忽略这类开源项目。
我们从以下途径搜索开源项目:1) Sourceforge (/),最著名、历史最悠久、规模最大的开源项目管理组织。2) Google code(http://code. /),访问速度快,是开源项目管理网站的后起之秀。3)“C++之父”Bjarne Stroustrup 的网站(/~ bs/applications.html),其中罗列了一些优秀的开源C++项目。4) 开源中国社区(/ project/ lang/21/c)。
我们初步筛选出了以下8个开源项目:1) C++程序开发框架Qt;2)以3D方式显示函数曲面的K3DSurf;3)比Windows 自带
文档评论(0)