说实话,一开始对软件构造这门课的认知还停留在单纯的“设计”和“编码”这一层上,在一个学期的学习之后,我对其有了一定的更深入的了解。
首先,作为完成一个软件项目中的重要一项,软件构造得到了软件的所有源代码和可执行代码,实现了软件产品从设想到现实这一软件工程体系的重要一环。如果不关心软件的质量,包括外在质量和内在质量,那么软件构造与一门语言课程无异,也就是说《软件构造》可以改名为《Java程序设计基础》。但是为了实现高质量的软件产品,不仅需要有编码工作,还必须遵守软件构造的各种原则,具有良好的软件设计,遵守一定的编码原则以及规范的编码过程,具有软件测试的过程等,这些都是属于软件构造的内容,而这些也都是软件构造这门课的教学内容。
由于这门课的课堂涉及内容过多,有关的教材内容亦过于繁重,所以课程中的实验这一内容就尤为的重要,使得学生通过实际运用来对加深甚至是学习课程的内容。整个课程包括6个实验。
实验一:Lab-1 Fundamental Java Programming andTesting
作为整个课程的第一个实验,lab1准确来说难度并不高,主要是让学生上手练习用。
Magic Squares 部分,涉及到一点简单的算法设计,主要是Java I/O的使用和学习。
Turtle Graphics 部分,主体代码已经给出,要求学生实现几项基本功能,涉及到一点简单的算法,主要是对图形界面的应用。
Social Network 部分可以说是整个lab1的核心部分,也是之后lab2-lab4的启动项。主要涉及到Java的存储方式和数据类型以及一些遍历算法的知识。
实验二:Lab-2 ADT and OOP
作为整个实验流程的真正启动部分,lab2涉及到了ADT这一核心内容,同时要求学生实现graph这一ADT,即构造一个完全由数据组成的graph并实现对graph的一些操作,难度适中。
Poetic Walks 部分,完成graph的基础构建和功能设计,并实现graphpoet,这一部分涉及一些遍历算法。
Re-implement the Social Network in Lab1 部分,改写lab1的Social Network构建friendship。
实验三:Lab-3 Reusability and MaintainabilityOriented Programming
作为整个实验流程的核心部分,lab3是具有一定的难度的。
首先,以lab2的graph的构建为基础,将graph由抽象的ADT具象化实现几个具体的图的类型,实现其复用性。同时还要对graph中存储的点(Vertex)和边(Edge)进行复用化设计。通过factory工厂类实现从文件中读取数据构建graph的机械化操作,而application类则是实现graph的显示并通过外部操作对graph进行更改。
实验四:Lab-4 Debugging, Exception Handling, andDefensive Programming
在lab3的基础上,对代码加入异常分析和处理的功能,提高代码的安全性和稳定性。涉及到log来记录程序的状态,再有一些java工具的学习使用。
实验五:Lab-5 Static and Dynamic Code Analysis andCode Optimization
在lab3的基础上,学习使用java工具对代码进行检测,并要求考虑到代码的规范性。要求读取大文件测试代码,测试在大量数据的轰击下,程序的性能表现并分析优,还涉及到一些javaI/O的知识。
实验六:Lab-6 Multi-Thread Concurrent Programming
要求学生学以致用,涉及一个自己风格的新的ADT,同时还涉及到一些java log和java 多线程的知识。
总而言之,我觉得软件构造这门课是一门很重要很有意义的课程,通过这门课的学习,能收获到了很多知识,也意识到了很多不足。