Paired software development

Assignment Help Software Engineering
Reference no: EM132371374

Assignment - Paired Software Development

Overview

The aim of this assignment is to provide you, as students with the opportunity to apply knowledge and skills related to current good design principles and practices. You will follow an Agile system development approach by working in pairs in an iterative and incremental manner to write code and conduct unit and integration tests. Whilst coding you will apply SOLID design principles, design patterns and refactoring to satisfy the functional requirements of a portion of an animal clinic system.

Learning Outcomes Assessed
The following course learning outcomes are assessed by completing this assessment:

• S1. Apply software engineering principles to design and implement software applications.

• S2. Operate CASE software to develop appropriate models of software systems.

• S3. Develop comprehensive unit test suites.

• A1. Write integrated reports, using appropriate models, providing detailed analysis of given textual scenarios.

• A2. Implement software applications, using appropriate software engineering techniques, from a given textual scenario.

Assessment Details

Background

Agile System Development/Approach

The notion of Agile System Development is a counter-cultural movement that addresses change from a radically different perspective to those of the traditional software development world which is characterized by the engineering and process improvement advocates (Boehm and Turner, 2003). Agile Development has been introduced to satisfy the notion of change in the Digital/Information Age and will flourish because it helps businesses to deal with relentless change and speed and because it helps create the workforce culture of the future (Highsmith, 2002).

As the Agile Manifesto (Beck et.al., 2001) notes, Agile Software development values:

• Individuals and interactions over processes and tools;
• Working software over comprehensive documentation;
• Customer collaboration over contract negotiation; and
• Responding to change over following a plan

Adopting an Agile Development approach means there is an emphasis on flexibility and rapid response so that new and changing requirements can be anticipated during development (Satzinger, Jackson and Bird, 2016). This approach includes the notion of time-boxed iterative and incremental development (Larman, 2004).

A number of lightweight methodologies have been described that try to honour the values and principles of the Agile Manifesto. One of these is the adaptive, Agile development methodology of Extreme Programming (XP). Amongst its practices are Pair Programming, Test First Programming and Continuous Integration. You need to understand this background as you attempt this assignment.

Good Design
Your lecture slides for week eight state that when you achieve good design, your systems:

• are easily understood;
• are simple to modify and extend; and
• can be reused
When you don't have good design you may have smells in the categories identified by Martin (2003) - Rigidity,

Fragility, Immobility, Viscosity, Needless Complexity, Needless Repetition or Opacity. You may have specific Object Oriented (OO) smells as identified by Fowler (2000) or more generic and updated versions of these identified in his second edition (Fowler 2019). You should think about refactoring those. All systems should follow good design principles before any code is written, during development and after code has been "completed".

There is a strong interrelationship between what has been discovered by others and applying that knowledge to the work you do. Whether it is the more generic principles identified by the Guide to the Software Engineering Body of Knowledge (SWEBOK) (Borque and Fairley, 2014) - Abstraction, Coupling and Cohesion, Decomposition and Modularization, Encapsulation and Information Hiding, Separation of Interface and Implementation, Sufficiency, Completeness and Primitiveness, and Separation of Concerns - the five principles of OO class design1 (SOLID) and the additional package cohesion and package coupling principles identified by Martin (2003), these and more summarized by Beedle (n.d.), the nine OO Principles of Freeman and others (2008) or the Design Patterns2 identified for OO systems by Johnson and others (1995) and advanced since then into all aspects of pattern thinking e.g. Architecture, Cloud, Data and Enterprise (see for example, Alur, Crupi and Malks (2003); Buschmann, Henney and Schmidt (2007); Fowler (n.d., 2003); Hammer (2013); Hohpe and Woolf (2004); Homer et. al. (2014); Microsoft (2009); Portland Pattern Repository (n.d.); Teale et. al. (2003); Trowbridge et. al. (2003)), to become an expert software engineer you need to be able to synthesise and be proficient at appropriately applying this knowledge. You need to be able to have some modeling language e.g. UML for communicating with both IT literate and illiterate stakeholders. You also need to understand other aspects of the tools that you are using, for example paradigms in or computational models of programming languages3. When you are concentrating on a particular perspective e.g. in this case you are concentrating on an OO perspective, you need to be able to see the system at various levels and understand the potential crossovers between for example design patterns and refactoring (see Fowler (2019) and Kerievsky (2005)).You are not expected to know all this for this assignment; you are though expected to be aware of where what you are doing might sit.

So as you are still beginning your journey, what follows is a guided path through some of the previous material. You will apply some aspects of Agile Development and good OO Analysis, Design and Implementation to a portion of the Federation Animal Clinic system. You need to follow the steps to write code, test it, refactor it into the desired patterns in an iterative and incremental manner and to report on your activities.

Federation Animal Clinic System

The Federation Animal Clinic system is being built to provide practice management services for veterinarians and staff at the Federation Animal Clinic. The system will allow appointments to be made by pet owners with staff at the clinic. Specifically, the system will allow staff to create details of animals, owners and staff, to make, view, change and cancel appointments and to charge and deposit funds for services. You have been provided with code (in GitHub) that displays the front screen of the system. Included with the code are some text files that provide the persistent data repository for the system for the functionality that you will be addressing. The image below displays that front screen.

2183_figure.jpg

You have also been provided with the screen for the Appointments sub-system. This screen displays the sub- system functions - Make Appointment, View Appointments, Cancel Appointment and Transfer Appointments. A screen shot of that sub-system screen appears below:

537_figure1.jpg

For this assignment you must initially write the code for the Make Appointment screen. You must then re-design the code to match stipulated design patterns.

You have the following user story for the Make Appointment screen. "As a receptionist I want to be able to make appointments for customer animals so that vets and other staff know what their calendar looks like for the next working week".

After some discussion with the staff member further details were obtained and these are included in the iteration table (later in this document) in the notes column of the first iteration.

In each of the tutorials from now until the end of the semester you will be asked to complete some of the requirements outlined below. Completing the tutorials will help you complete the assignment.

Assessable Tasks/Requirements

You are to complete the steps outlined below and submit a report and associated code solution. You need to use a number of software tools in this assignment. Access and documentation links to these tools are included in your Moodle shell. You are expected to use good design and coding principles and practices learned in lectures. Your design should be free from smells as much as possible. You should implement the required design patterns and practise refactoring. You are expected to follow pair programming practices. You need to use JUnit for your unit, regression and integration testing. You are expected to test thoroughly for exception handling, positive results, negative results, boundary conditions etc.and as a team provide evidence of that testing.

1. Step 1 - Identify who you will be working with and form your Pair.

2. Step 2 - Access the code

a) Complete the following to steps if necessary (you should already be familiar with these from Assignment
1) to setup your GitHub repository and download your starting code:

a. Enter the GitHub classroom to create your individual repository in GitHub;

b. If you haven't used GitHub before you will need to create an account using the link on the sign- in screen. Create a GitHub account by following the instructions in the handout (Registering for and using a GitHub repository and the GitHub Classroom) available in the Study Resources section of your Moodle shell.

c. Follow the separate handout (Using Eclipse IDE to interface with GitHub repository v2) available in the Study Resources section of your Moodle shell. Start at page 7 to page 11 to download and import the provided starter code from the GitHub classroom and load it into a new local repository in Eclipse.

d. Now you have imported the starter code in a project repository in Eclipse.

b) Run the system. You should see the main screen of the Federation Animal Clinic.

3. Step 3 - Begin Group Report

Open a new document in Word (or equivalent), This document will be your group submission. It will contain the pair response to each Refactor/Re-Design step of the assignment i.e. Refactoring/Design Name, Description, Steps taken, Design principles followed, Class Diagram, Test Information

4. Step 4 - Begin Individual Report

Open a new document in Word (or equivalent), This document will be your individual submission. It will contain an individual response to each re-design step of the assignment i.e. What went well, What could have been improved, Review/Description of the work done in Iteration, Measure of individual contribution (%),


Measure of partner contribution (%) (These two measures should tally to 100%).

5. Step 5 - Iterate through the following tasks (until you've completed all tasks identified in the Iteration Tasks table below):

A. Understand requirements for task

Do you really understand what is required? Ask your lecturer for clarification about functional requirements. Consult the Satzinger, Jackson and Bird (2016) text for a general overview of OO analysis and design, UML and methodologies. Consult your lecture notes and sources such as Parsons (2012) and Sharan (2014) for Java; Freeman and others (2008), Hammer (2013), Holzner (2006), Johnson and others (1995), Metsker and Wake (2006), Martin (2003), Shalloway and Trott (2004) for principles and design patterns and Fowler (2000, 2019), Kerievsky (2005) and Suryanarayana, Samarthyam and Sharma (2015) for refactoring and the interrelationships with design patterns.

B. Iterate through (until satisfied):

i. Identify how you would change/refactor

Perhaps the most accessible books for this are Freeman and others (2008), Hammer (2013), Holzner (2006), Fowler (2000, 2019) and Kerievsky (2005).
ii. Identify and if necessary construct tests to perform

You need to be able to have some form of testing class/es using JUnit that allow you to test. Consult your lecture notes and tutorial seven for this. The books by Langr (2015) and Parsons (2012) would also be helpful.
iii. Test

Run the appropriate suite of tests to ensure the tests are valid/system is working and to understand what your baseline is.

iv. Code

Resolve to follow good design principles and practices as well as conventions.

v. Test

Run your suite of tests to ensure the system is still working and you have satisfied requirements.

vi. Integrate

As you complete your work, commit and push your new code from your local Eclipse repository to save it in your own online GitHub repository. It may be necessary to add files to the index before committing.

C. Update your Individual Report

D. Update your Group Report

6. Step 6 - Complete Group Report

7. Step 7 - Submit Group Work

One member needs to take responsibility for submitting the group's work.

8. Step 8 - Complete Individual Report

Tally the individual measures for each iteration, for each partner and provide a value out of 100% for each partner.

9. Step 9 - Submit Individual Report

Iteration Tasks

Note: In the requirements that follow, there is an expectation that you will implement the patterns in a pre- functional Java form i.e. you will not use lambda and functional programming4 extensions introduced from Java 8 onwards.

Iteration

Week

Task

Notes

1

8

Construct Make Appointments screen

You need to provide functionality on the one screen to select an Animal, select a Veterinarian, select a Room, select a Type of Appointment, specify one or more additional resources required for the appointment based on ResourceType (e.g. assistance -

e.g. anaesthetic nurse or handler; materials - e.g., bed, cage), key in the appointment date

and time, provide a button to SAVE the details (test on SAVE for a duplicate and display message or display message for successful save), provide a button to CANCEL the entry (clear fields) and provide a button to QUIT (returning to Appointments sub-system screen). Look at the code for the existing screens to help you with how you might create. Swing rather than JavaFX is expected to be used here. Look at Parsons (2012), Sharan (2014) and the API for further help.

2

9

Implement Singleton pattern for AppointmentBook class access to file

 

 

 

Implement MVC pattern for Make Appointments

You need to have only one access point and one AppointmentBook so that all appointments are synchronized. The AppointmentBook is read from and saved to a file. Look at Satzinger, Jackson and Bird (2016), pp. 431-433 and Holzner (2006), pp. 91-99 (We don't need to worry about multi- threading here).

For the MVC pattern follow the example in Freeman et. al (2008) pp. 528-544 (implementation of MVC via the Strategy, Composite and Observer patterns) and the discussion in Satzinger, Jackson and Bird (2016) pp. 428-429 and try to match to this

situation.

3

10

Implement Façade pattern for Appointments

Use a Façade class to hide the complexity of all the work that goes into managing Appointments i.e. The sub-system screen should use this Façade to Make, View, Cancel and Transfer appointments. Look at

Freeman et. al. (2008), pp. 254-270 or Holzner (2006), pp. 134-144

4

11

Implement Factory and Decorator patterns to deal with types of Appointments and allocation of

ResourceTypes

Change the Make Appointments code so that a simple Factory is used to create the correct type of appointment and use the Decorator pattern to handle the allocation of ResourceTypes to Appointments. Look at Freeman et. al. (2008), pp. 109-117 and 79-

105 or Holzner (2006), pp. 39-59

Attachment:- Paired Software Development.rar

Reference no: EM132371374

Questions Cloud

What is the role of carbon dioxide-carbonic anhydrase : What is the relationship between breathing rate and pH? How does the respiratory system compensate for acidosis and alkalosis.
What will lead to positive change in your school culture : Assignment - Positive Change in Your Building. Instructions: What will lead to positive change in your school's culture
Describe the sides to a known public health issue : Describe the sides to a known public health issue including: Level of influence/impact (county, state, local or international)
Benefits of health and wellbeing programs : BSBWOR501 - Manage Personal Work Priorities and Professional Development - Orange International College - Prepare a report of approximately two pages
Paired software development : Paired Software Development - apply knowledge and skills related to current good design principles and practices. You follow Agile system development approach
Implement required design patterns and practise refactoring : ITECH2309 – Software Engineering - Federation University - Paired Software Development - implement the required design patterns and practise refactoring
Explain why health promotion and prevention are important : IHP 501 Small Group Discussion: Millennium Development Goals (MDG). Explain why health promotion, community health, and prevention are important
Explain why overall Bayes risk must be concave down : Probability Problems - Explain why overall Bayes risk must be concave down as a function of the prior P(?1) as shown in Fig. 2.4
Analysis of the bond market : ECON1239 - Principles of Finance - RMIT University - Prepare a report which sets out an analysis of the bond market in two selected countries using real-world.

Reviews

Write a Review

Software Engineering Questions & Answers

  Question about source code

When negotiating with a seller of a package, one of stipulations you might create is that the vendor supply the source code.

  Uml class diagram for client and invoice classes

Design UML class diagram for client and invoice classes, design the code in Java for your client and invoice classes, and draw the program that consultant will use.

  Create class-responsibility-collaboration cards

Create Class-Responsibility-Collaboration (CRC) cards and a class diagram based on the functional models through the use of graphical tools in Microsoft Word or

  Advantage of oo development

An advantage of OO development is consistency of language and OO development often omits writing a distinct requirements specification document.

  Software architecture from software architect point of view

Prepare a PowerPoint presentation or a 500 word document that explains how this relates to software architecture from a software architect's point of view, and to promote or dispel the need for such a test.

  A if you could pick a single source of cash for your

a. if you could pick a single source of cash for your business what would it be? why?b. how can a business earn large

  Creating coding for excel

Create a code that would sum five cells and then round to either .00, .25, .50, or .75 depending upon what range the sum of the cells falls into.

  Part of the responsibilities of a practising security

part of the responsibilities of a practising security engineer is to stay abreast of developments in the eld and to

  Illustrating the initial code and another class diagram

A class diagram illustrating the initial code and another class diagram illustrating the final refactored code (including all relevant dependencies)

  What might be your key decision rules

You are a manager in a company that has a lot of in-house IS expertise. What might be your key decision rules for when to purchase a system versus when to develop it in-house?

  Flowchart that computes the overdue penalties

Prepare a FLOWCHART that computes the overdue penalties and When working with amounts of money, you do not need to round to two decimal places

  Discuss the difference between given two updates

Discuss the difference(s) between these two updates. Be specific as to the nature of the data being updated in each case.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd