认证学习
软件构造
分享
课程详情
课程评价
spContent=课程以一个案例的演变,模拟不断变化的用户需求,用增量迭代的开发模式,组织软件构造的教学:按照需求学习、增量渐进编程。 每章以案例故事引出构造问题,讨论解决问题的基本原理、方法和技术,给出1-2个可操作的构造方案供学生实践,指导学生自学更新更深更广的相关知识。学完每章学生都有可用的、实现用户要求的程序,直至最终一个完整的软件。 课程以山东省一流本科教材为基础,是国家级一流本科混合式课程的线上课程。
—— 课程团队
课程概述

  随着计算机与互联网在社会经济与日常生活中的渗透,各种形态的软件层出不穷,如传统的桌面软件、Web应用、软件和服务SaaS及移动应用程序app等,社会对软件的需求日益增长。本课程旨在学习如何把编程语言、软件设计的原则和方法、软件测试技术及数据处理、用户交互等方面的知识和工具,融合到增量迭代的开发流程,通过“设计、编写、测试和调试”的软件构造过程把实际问题逐步地转换为实用软件的能力。

  软件构造实际上就是学习如何构造一个有用的软件,类比如何写出一手好文章:正如你掌握了丰富的单词和句型、精读了优秀范文,不足以写出一篇漂亮文章。学习了编程语言、数据结构等知识,不能保证你自然而然地写出好程序。作为程序员的你还需要学习如何把知识、工具、技能融合在编程中,构造出一个好的软件。


  学完本课程,你能够:

l 理解和应用软件构造的一般原理:模块化,信息隐藏,逐步求精,面向对象原则,增量迭代,软件复用,软件质量。

l 使用软件构造的常用技巧:表驱动编程,防御式编程,按意图编程,事件驱动编程,代码重构,框架与程序包,测试驱动开发。

l 使用基本的软件设计:软件建模及UMLE-R图,控制流图,状态图,设计原则,设计模式,契约式设计,面向对象设计,用户交互,数据库的设计与实现。并能评价设计和实现。

l 选择、评价和运用软件知识:软件过程,敏捷开发,最佳实践,面向对象编程,数据结构与算法,数据库编程,软件复用。

l 深入理解软件构造的工作要素(如编码及其规范),使用构造工具如IDEJUnit、jchart、windowBuilder以及其它开源工具

l 熟练应用软件构造的活动:设计-编码-调试-集成-测试(单元测试、回归测试、集成测试、静态测试)。

  课程设计:依据能力优先知识、理论支撑应用、灵活自主学习的原则,对知识的引入遵循足够、按需和渐进的策略,通过案例的展开由浅及深地融合软件构造的原理、原则、方法、技术、流程和工具。多方面的知识(如调试、测试、设计、复用)逐步深入地分布在若干章节。习者最好把书中的知识通过案例连写起来,根据需要,提前看某个章节、跳过某个章节、需要时回过头来再看前面章节的内容或者查阅相关资料。强烈建议习者一边思考和分析案例问题,一边补充必要的知识、动手构造案例。只有同时完成案例构造和理论测评才可能通过本课程。

  课程以授课团队的山东省一流教材《基于案例的软件构造》为基础,按照MOOC的原则、方法和技术,优化课程内容、重构授课组织和授课方式,将教材、录课、PPT、程序代码、课后辅助材料以及在线辅导等有机整合,形成一体化教学。

  建议教师采用混合式教学方式,按需增补知识和工具使用,并一起研讨教学。

授课目标

课程适合我国普通高校计算机类本科大学生。学完课程之后,学生能够:

1、理解SEBOK3.0“软件构造”知识域的主要内容:软件构造的一般原理、常用方法、工作要素、构造活动以及软件设计技术和软件知识;

2、根据任务需求,整合应用碎片化的软件知识(如编程语言、数据结构、算法、数据库、UI)和软件工具,迭代运用“设计、编码、调试、测试”的构造过程,增量开发出具有多个功能、处理数据和用户交互等特征的高质量软件(3千行左右Java源码),能评价构造的设计与实现的优劣;

3、应用问题导向、目标牵引、用现代软件构造技术解决问题,加快从程序编写到软件开发的转变,通过后续课程(如软件工程、综合课程设计和实习实训),奠定能解决实际复杂工程问题的软件工程师的基础。

课程大纲
预备知识

1. 高级语言程序设计,Java编程基础或面向对象程序设计

2. 数据结构基础

参考资料

教材:李劲华 等:基于案例的软件构造,电子工业出版社

Java语言 https://www.oracle.com/java/

集成化开发环境Eclipse https://www.eclipse.org/downloads/

其它参考资料:

[1]   S. McConnel. 金戈,等译. 代码大全(第二版). 北京:电子工业出版社,2011.

[2]   B. Liskov, J. Guttag. 裘健,译. 程序开发原理. 北京:电子工业出版社,2006.

[3]   骆斌. 软件工程与计算(三卷). 北京:机械工业出版社,2012.

[4]   M. Fowler. 熊节,译. 重构:改进既有代码的设计. 北京:人民邮电出版社,2010.

[5]   Robert C. Martin. 邓辉,译. 敏捷软件开发:原则、模式与实践. 北京:清华大学出版社,2003.

[6]   Capers Jones. 吴舜贤,等译. 软件工程最佳实践. 北京:机械工业出版社,2014.

[7]   E. Gamma, R.Helm, R. Johnson, and J. Vlissides. 李英军,等译. 设计模式. 北京:机械工业出版社,2004.

[8]   C. Larman. 李洋,等译. UML和模式应用(原书3rd Ed.),北京:机械工业出版社,2006.