Assignment Detail


Contract to produce robust self-verifying software modules

    Assignment Instructions

    Assignment ID: FG133135857



    This assessment evaluates the following CLOs

    – CLO1: Apply the UML design notation as part of the OO development process.
    – CLO2: Apply the process of Refactoring to continuously improve a software product.
    – CLO3: Apply Design by Contract to produce robust self-verifying software modules.

    The following topics are assessed:

    – Week 3: Refactoring (Practical)
    – Week 4: Design by Contract
    – Week 6: Creational Patterns

    Assignment Activities

    Task 1: src/main/java/task1

    The `StudentEnrol` class is designed to manage the enrolment of students. Students are allowed to take up to five courses made up of cores and electives selected from the list of cores (`coresOffered`) and electives (`electivesOffered`). There is an additional constraint that no student can be enrolled in more electives than core courses at any time.

    You are required to:

    **1.1.** Write the pre and post-conditions (if applicable) for all methods except `display()`

    **1.2.** Write the the class invariants.

    **1.3.** Specify invariants, preconditions and post-conditions as comments using the Javdoc annotations `@invariant`, `@pre.condition` and `@post.condition` respectively (in the spaces provided). You may use the notation `OLD.cores` in the post-conditions to refer to the original value for cores.

    Task 2: src/main/java/task2

    You are required to:

    **2.1.** In the code located on `src/main/java/task2` the classes have a number of common features. You are required to apply _extract superclass_ refactoring and write the resulting code. You may use protected instance variables if appropriate.

    **2.2.** In the same folder, there is a `` file. Write in that file the answers to the following questions:

    * 2.2.A: Name at least 3 smells that you identified BEFORE making the change of point 2.1. Is there any specific smell that is solved with the extract superclass? _No less than 300 words_.

    * 2.2.B: Mention other refactorings that you did when you _extracted the superclass_. Were these refactorings needed for the _extract superclass_? Why? Could you have used _extract interface_ instead? _No less than 200 words_.

    Task 3: src/main/java/task3

    Write your answers to the following questions in `task3/`:

    **3.1.** What creational pattern is being used in `PrintSpooler`? Is it correctly implemented? Why or Why not? Could you implement it differently? Justify accordingly.

    **3.2** Not all Builders must construct visual objects. What might you use a Builder to construct? Why? Find a real-world example and explain why it is correct using it there. Your answer your have at least 500 words _without_ the code snippet.

    **3.3.** If you are writing a program to track investments (namely: stocks, bonds, metal futures, derivatives, etc.), how might you use an _abstract factory_? Why? Complement your answer with a Class Diagram. You _must_ add it to the Answer file using markdown. Save it inside the `task3` folder.

    Attachment:- OO development process.rar

    Need fresh solution to this Assignment without plagiarism?? Get Quote Now

    Expert Answer

    Asked by: Anonymous
    Plagiarism Checked
    Answer Rating:

    Plagiarism free Answer files are strictly restricted for download to the student who originally posted this question.

    Related Assignments

    Our customer support team is here to answer your questions. You can send Assignments directly to support team.
    👋 Hi, how can I help?