软件构造学习总结(个人观点)

这门课对于我来说,还是具有很大的挑战性。并且这门课的课堂涉及内容过多,有关的教材PPT内容亦过于繁重,亲自动手实验就尤为的重要。总的来说,六个实验设计的很好,能运用到学习的东西进行开发,但是代码量有些大了,一度出现连续自闭的情况,但这不影响这是一个好实验。但回过头来好好想想,一切都是有价值的。

实验一:Lab1 Fundamental Java Programming andTesting

这里是有关Java的较基础实验。

最开始统一要求用Java编程。说实在的最开始心里一点底都没有。已经半年多没有练习Java,不知道能不能很快适应。

第一部分:Magic Squares ,整体思路还算简单,主要是Java I/O的使用和学习。

第二部分:Turtle Graphics ,主体代码已经给出,要求学生实现几项基本功能,主要是对图形界面的应用。说实在的,这是第一次不是从0编程,但不算太难。 

第三部分:Social Network ,会与之后lab2相关联。主要涉及到Java的存储方式和数据类型以及一些遍历算法的知识。这里卡了一点时间,debug超级长时间。这里建议参考lab2的实验指导书,避免出现在lab2中复用代码时全部推倒重来的情况。

实验二:Lab2 ADT and OOP

作为整个实验流程的真正启动部分,lab2涉及到了ADT这一核心内容,同时要求学生实现graph这一ADT,即构造一个完全由数据组成的graph并实现对graph的一些操作,难度适中。

第一部分:Poetic Walks ,完成graph的基础构建和功能设计,并实现graphpoet,这一部分涉及一些遍历算法。

第二部分:Re-implement the Social Network in Lab1 ,借用第一部分的ADT改写lab1的Social Network构建friendship。这里前两部分相比较而言,第二部分更像是第一部分的实际应用。

第三部分:PlayChess,自行设计ADT及spec,和test用例。完成下国际象棋和围棋的操作。这里最好还是用可视化界面,强烈推荐,最起码要弄熟主要步骤,否则lab3会很难受的。

实验三:Lab3 Reusability and MaintainabilityOriented Programming

作为整个实验流程的最核心部分,lab3是一(xiang)定(dang)有难度的。

首先,以lab2的graph的构建为基础,将graph由抽象的ADT具象化实现几个具体的图的类型,实现其复用性。同时还要对graph中存储的点(Vertex)和边(Edge)进行复用化设计。通过factory工厂类实现从文件中读取数据构建graph的机械化操作,而application类则是实现graph的显示并通过外部操作对graph进行更改。

之后还要针对实验选择(5中情景选3个)设计ADT,之后还要学习正则表达式度读文件,匹配文件。最后要将这一切图形化表示出来。

实验四:Lab4 Debugging, Exception Handling, andDefensive Programming

在lab3的基础上,熟练运用spotbugs(Findbugs也可以);对代码加入异常分析和处理的功能,提高代码的安全性和稳定性;编写日志,并完成日志相关操作。

实验五:Lab5 Static and Dynamic Code Analysis andCode Optimization

在lab3的基础上,学习使用java工具对代码进行检测,并要求考虑到代码的规范性。这里强烈建议遇到百度找一下直接规范代码的工具或方法,很多一部分是缩进不规范。

要求读取大文件测试代码,测试在大量数据的轰击下,程序的性能表现并分析优,还涉及到一些javaI/O的知识。

实验六:Lab6 Multi-Thread Concurrent Programming

老师让我们去花果山帮猴子过桥。这里需要设计一个具体的ADT,同时操作过程要保证线程安全。另外还涉及到一些java log和java 多线程的知识。

  对于个人来说,这门课程我是不合格的,但我确实也看到了许多想把它学好的人挣扎的过程,也许我的评价并不能代表大多数学生的感觉,但我也诚心诚意地提出一些改进的建议:希望能将lab3内容划分为二,将lab6的实验时间提前,谢谢。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值