联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp2

您当前位置:首页 >> javajava

日期:2019-11-24 07:53

Assignment 5 – UML & Refactoring

CSCI3130 – Software Engineering – Fall 2019

Due date: November 29, 2019 at 23:59

For this assignment you will first answer some UML questions, and then you will perform

refactoring on some existing code.

Requirements and How to Submit

? Use the CSCI3130Assignments repo you created for assignment 3 and used for

assignment 4 to submit code for this assignment.

o Create a new directory at the base of the repo called A5

o Unzip the contents of A5.zip on Brightspace in the assignment 5 page into your

A5 directory

o Perform your refactoring programming in your repo and commit your changes

o Push your changes to your repo

o Do NOT commit .class or any other compiled files to your A5 subfolders, there

should be nothing but .java files in your A5 subfolders. Do not commit any files

you used for testing, any readme files, any environment or IDE files or anything

but .java files.

o In this assignment you are refactoring (improving the design of) existing code,

the code you modify already has unit tests written that pass. To receive full

marks on the assignment after you have modified the code the unit tests must

continue to pass.

o You may not modify the unit tests I have written. This

means do not alter the Main.java file in each folder in ANY

way.

o Your code must compile and run via the following commands executed in your

A5 subfolders (in each of the QuestionX folders):

§ javac *.java

§ java Main

o The results of java Main in each folder should be a single line of output: either

the word “PASS” or the word “FAIL”. If you have implemented your changes

properly the word will be PASS.

? Submit a PDF file with your answer to the UML questions and a link to your repo to

Brightspace

UML

Answer the following questions by drawing UML diagrams. To draw the diagrams, you have

several options:

? If you have a Windows based laptop, Dalhousie provides Microsoft Visio as part of our

Microsoft software available to all Dalhousie students. This is one of the best programs

for doing UML diagrams right now.

? If you don't have a Windows laptop or you can't figure out how to install Visio, you can

use Visual Paradigm online. This is what I use to make diagrams and it works fine. You

do need to create a free account to use it. You can access the tool here:

https://online.visual-paradigm.com

o If you choose this option screenshot your diagram when it is complete, the

export option will place watermarks all over the diagram that can sometimes

make it hard to read.

? Draw the diagrams on paper, and scan them in. Be warned with this option though that

we are marking everything about the diagrams (the boxes and arrows are the correct

shape, things are bold or bold italic when they are supposed to be, etc.). If you choose

to draw your own diagram by hand it must be legible, and the diagram must obey the

rules of UML as we've taught them in this course.


Questions:

1. Draw a UML state diagram that depicts a simple system that stacks and unstacks a set of

Russian “Matryoshka” dolls. Matryoshka dolls are hollow wooden dolls that can be

separated in two parts, revealing a smaller doll inside, which can itself be separated, and

so on, until the smallest, solid doll is reached. The system has four states: ready (dolls

stacked), ready (dolls unstacked), stacking, and unstacking. Consider the following

details of the system operation:

a. The system will never stack or unstack dolls out of order; dolls are always placed

inside the next largest doll.

b. The system can transition between stacking and unstacking mid-sequence; that

is, it can switch to stacking again even before all dolls have been unstacked, and

vice versa.

2. Using UML class diagram notation, sketch out the classes that would implement what is

expressed in the sequence diagram shown below. Include the class relationships in your

diagram. For each class, identify the public interfaces required in order to implement

what is expressed in the sequence diagram. Do not provide any additional detail about

the classes beyond the class name, the relationships, and the interface methods visible

in this diagram (i.e., don’t define new methods, or list fields/instance variables).

Refactoring

I have written 3 sets of code that contain various code smells. Your job is to apply the correct

refactoring to resolve the code smell I have identified for you. This may involve modifying the

existing classes or interfaces or writing new classes and interfaces.

Use the handouts from class to determine the correct mapping of code smell to refactoring,

and then perform that refactoring on the code in each question folder.

Question 1:

? Smell: Duplicated Code

? The Question1.buildBookQuoteHTML() has some badly duplicated code in it.

Question 2:

? Smell: Divergent Change

? The Person class has 2 reasons to change, and the reasons are not related.

Question 3:

? Smell: Long Parameter List

? The Person class private method isRobsAddress() takes too many parameters.

Marking Rubric:

UML questions: 50%, 25% per question

? Deviation from the UML specification described in the UML lecture will lose points

Refactoring questions: 50%

? All unit tests Rob wrote output the word “PASS”: 15% (5% per question)

? Proper use of refactorings: 30% (10% per question)

? Code readability / understandability: 5%

? Code does not compile = Automatic 0 on refactoring section.

? Modifying any of the Main.java files = Automatic 0 for that question.


版权所有:留学生程序网 2020 All Rights Reserved 联系方式:QQ:99515681 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。