这门课对于我来说,还是具有很大的挑战性。并且这门课的课堂涉及内容过多,有关的教材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. 软件构造学习笔记(九)面向复用的软件构造技术

    目录链接 Part I What is Software Reuse? Part II How to measure "reusability"? Part III Levels ...

  2. 软件构造学习笔记-第八周

    本周重点是Liskov可替换原则.它要求父类和子类的行为一致性,子类要有更强的不变量.更弱的前置条件.更强的后置条件.在该原则的要求下,每个子类都可以对父类进行替换.这在开发过程中会带来极大的便利,在 ...

  3. 2020春季学期哈工大软件构造学习心得二

    前言 上一章主要讲了软件构造的结果形态以及如何是一个"好"的软件 这一章主要学习软件开发遵循着一个什么样的过程 - 软件生命周期与配置管理 From 0 to 1,from 1 t ...

  4. 2020春季学期哈工大软件构造学习心得一

    前言: 今年是特殊的一年,由于新冠病毒的爆发,导致我们无法正常开学,所以网上开课如期进行,其中软件构造是这学期我们要面临的巨大挑战. 准备工作: 上学期末得知本门课程需要学习Java语言进行编程,所以 ...

  5. 软件构造学习笔记ATD

    在面向对象的编程中,ADT的编写十分重要,与传统的c语言不同,面向对象的编程更加商业化一点,所以保密需要做好,有点商业机密的感觉.如何设计良好的抽象数据结构,通过封装来避免客户端获取数据的内部表示,避 ...

  6. 哈工大软件构造学习笔记1 Views and Quality Objectives of Software Construction

    先要搞清楚软件构造的对象是什么,如何刻画,在关注如何构造. 1,Five key quality objectives of software construction 软件构造的五个关键质量目标 容 ...

  7. 软件构造学习笔记-第九周、第十周

    因为本周五开始五一假期,所以只有一节软件构造课.因为内容还属于创建模式.结构模式.行为模式.将该堂课的内容整合到本博客中.本周的重点是程序开发模式,在写代码之前首先充分考虑采用哪种模式更有利于开发.维 ...

  8. 2020春季学期哈工大软件构造学习心得三

    Abstract Data Type (ADT) and ObjectOriented Programming (OOP) 前言 前两章回答了:什么是"高质量的软件". 如何从不同 ...

  9. 哈工大2022春软件构造学习笔记1

    课程概述 第一部分:软件构造基础 第二部分:ADT+OOP 第三部分:面向可复用性和可维护性的软件构造 第四部分:面向健壮性与正确性的软件构造 第一章 软件构造的多维度视图和质量目标 软件构造的多维度 ...

最新文章

  1. jhipster创建项目问答汇总_[恭喜JHipster社区喜提 VueJS !]
  2. android启动流程之lk,Android系统之LK启动流程分析(一)
  3. 计算机实测物理实验报告,計算机实测物理系数实验论文.doc
  4. java特征向量计算_用Java和Python计算特征向量的差异
  5. vmware--查看链接克隆依赖关系
  6. create-react-app应用的入口定义
  7. plsql只提交存储过程里的事务_plsql 存储过程 事务 | 学步园
  8. Loj#6053-简单的函数【Min25筛】
  9. zookeeper 客户端配置_ZooKeeper安装配置如何操作
  10. Oracle中group by用法
  11. python中类方法、类实例方法、静态方法的使用与区别
  12. 有道翻译API接口的服务开通与使用Python进行接口调用实例演示,有道智云·AI开放平台
  13. c++编译提示:系统找不到指定路径
  14. jupyter notebook 配置没问题却连接不上服务器
  15. 逆转ACE《逆转裁判3》中文汉化版发布!
  16. 信息学奥赛知识点(一)—计算机基础知识【转载】
  17. 特殊的搜狗拼音输入法
  18. Ubuntu18.04键盘错乱问题
  19. 华为手机计算机删了怎么办,如何从华为手机恢复丢失或删除的文件
  20. ACM_置换群 burnside引理 Polya定理

热门文章

  1. 【鲲鹏HCIA考试】随堂习题卷一
  2. TM1650和AIP650 按键扫描、LED驱动程序
  3. 医院信息系统基本功能规范(4)
  4. c语言 虚拟摄像头设备_Windows下虚拟UVC摄像头开发演示
  5. Kong的插件: hmac
  6. 浪潮nf5280m5使用U盘安装win2012
  7. 【设计模式】享元(Flyweight)模式实例
  8. python判断火车票座位_火车票买不到?看我用python监控票源
  9. WinDebug双机调试
  10. ch9121-网络配置协议