一.正向建模与开发
正向建模与开发是软件开发中的一种重要方法,旨在从需求分析到实现的过程中,通过建模来引导和规范开发过程。这一方法在Java开发中尤为常见,利用面向对象的思想和工具,可以帮助开发人员更好地理解需求,设计系统结构,并最终实现功能。
正向建模与开发的具体步骤
-
需求分析:
这次作业主要就是对图书馆的书籍进行存取操作,对书籍的数目和位置进行修改,对图书馆中的不同位置建立类来存放相关的书 籍,在Library中实现书籍的转移。
-
系统建模:
类图:类图是描述系统静态结构的工具,通过识别系统中的类及其关系,明确系统的静态结构。通过前期的架构对类图进行设 计,通过类图进行相关代码的编写。
顺序图:顺序图是描述系统动态行为的工具,通过描绘对象之间的消息传递,明确系统的动态行为。
-
实现:
通过预先的类图设计,明确大致思路就可以实现相关的代码,同时具体的代码实现就可以比较轻松的完成,相较于之前的一边写 一边进行架构的方式,代码的整体架构更加合理。
-
测试与验证:
对完成的代码进行相关的测试,一方面就是大量的数据进行测试,还有就是边界测试,这次作业的边界测试感觉主要是对时间的 测试,借书,取书,归还等操作进行边界测试。
二.架构设计
写完这单元的三次迭代后,发现当时新建一个 B o o k Book Book类感觉实现会更加方便,我这几次的迭代都是采用官方包当中的 L i b r a r y B o o k I d LibraryBookId LibraryBookId类,写到第三次发现需要对Book设计一些状态位,当时的想法是继承,但是要修改挺多地方的,为了方便就没有进行大的改动,直接采用损耗空间的方法来存放相关的书籍来达到目的。
再说一下这次的架构,这次作业主要就是书籍位置的转移,所以设计不同的类代表不同的位置来存放相关的书籍,最后实现一个Library类进行书籍位置改变的具体操作。
最终类图如下
状态图如下
三.架构设计体会
我对于每次的作业的思想就是简洁,类与类之间没有复杂的关系,也尽可能地不用继承和接口来保证代码的简洁和美观。感觉第四单元的代码实现就很符合我对代码的架构设计,没有类与类之间复杂的调用关系,都只在Library类中进行应用,虽然最后感觉Library类中的代码实现有点冗余,但代码的可读性还是挺强的。第一单元的代码实现的层次性感觉也挺强的,最终代码的架构也很好理解,但是这单元的递归下降感觉很抽象导致代码的实现也挺抽象的,但是具体的架构挺好的。
四.测试思维的演进
这几个单元的测试基本上都是黑箱测试,这也是测试最轻松和高效的方式,相比于边界测试和白箱测试,黑盒测试只要生成大量数据让后进行对拍集合,不需要针对于某个边界点和某个具体的方法实现来生成特点的数据点,只要足够多的合理黑盒测试就能覆盖基本上所有的测试点。
还有就是电梯多线程的测试,这一单元的测试主要就是检测线程之间是否会有死锁等情况,至于电梯运输的情况还是很好debug的,主要就是死锁和轮询等情况,你永远不知道你的代码会不会发生这种情况。黑箱测试通过大量的测试来检测你的代码是否会再多线程触发这些异常。
五.课程收获
通过四个单元的多次代码迭代,我的编程技巧有了很大的提升对Java语言的深入理解,包括面向对象编程、异常处理、集合框架、多线程编程等。这些知识帮助我在编写高效、可维护的代码时更加得心应手。通过多次的代码迭代,我学会了如何识别和消除代码中的冗余部分,如何通过重构提高代码的可读性和可维护性,以及如何使用设计模式来解决常见的问题。这些技巧在实际开发中是非常有用的。
个人感觉第一单元的难度是最大的,抽象的递归下降让代码的debug变得异常困难,第一单元的第二次迭代也是写的最煎熬的一次。当时就听说oo
的难度较大,这次的迭代我是充分感受到了,但之后的作业感觉还是比较轻松的,电梯的多线程多注意死锁和轮询就可以避免很多问题,第三和第四单元基本上就没有什么难度了。
最后庆祝oo
课程圆满结束。