Agile system development approach by working

Assignment Help Software Engineering
Reference no: EM132376288

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: EM132376288

Questions Cloud

Analyze the statement of retained earnings : Go to the Finance website of Yahoo and choose a company and analyze the Statement of Retained Earnings for that company. Next, discuss any additions.
Find an article on the Internet outline security breach : Find an article on the Internet outline a security breach or cyber attack. Provide a link to the article, what type of attack was used,
Create a scenario in which company conceals financial fraud : ACC403 - Create a scenario in which a company conceals financial fraud from the auditing firm through use of information technology. Next, suggest at least one.
Determine the annual increase in pretax returns : Marcos Company annual sales are $730 million. Suppose Marcos can reduce the time required to process customer payments by 3 days
Agile system development approach by working : Apply software engineering principles to design and implement software applications - Write integrated reports, using appropriate models, providing detailed
Practices for incident response in the cloud : more the best practices for incident response in the cloud.
How much will robert have to invest every year : How much will Robert have to invest every year to achieve his savings goal?
Sovereignty problems-arise with data stored in the cloud : More sovereignty problems that might arise with data stored in the cloud.
Withdrawal at the end of the year of her last withdrawal : Your aunt has $500,000 invested at 5.5%, and she now wants to retire. She wants to withdraw $45,000 at the beginning of each year, beginning immediately.

Reviews

Write a Review

Software Engineering Questions & Answers

  Explain the syntax of programming languages

BNF is used extensively in the computing field to describe the syntax of programming languages. Give an example of where and how BNF might be used to solve real-world problems

  Create a new class called fraction

create a new class called Fraction. NetBeans will supply a main method; delete this method, as you will be writing an API, not a complete program.

  Create flowchart to calculate grade of student using formula

Calculate for grade of student given formula grade = 10% Assign + 20% set_work + 30% Quiz + 40% Exam. Grades inputted are in percentage having 75% as tha passing and 100% as the perfect score.

  Identify sequences with at least two life-lines per sequence

Identify 3 sequences with at least two life-lines per sequence (i.e., box with a dashed line descending from the center of the box).

  Create a domain model class diagram for rmo csms marketing

Using Microsoft Visio or an open source alternative such as Dia, create a domain model class diagram for the RMO CSMS marketing subsystem.

  Describe the seven step sdlc and a different sdlc model

Describe the 7 Step SDLC - 2 pages, (b) Describe a different SDLC Model (4 step or 12 step) - 2 pages, (c) Compare and contrast the 7 Step Model and the second model you selected (4 step or 12 step) - 1 page.

  Draw aoa network diagram representing project

Draw a AOA network diagram representing the project. Put the node numbers in circles and draw arrows from node to node, labeling each arrow with the activity letter.

  Question 1a define the term software architectureb a

question 1a define the term software architecture?b a service is a software component of distinctive functional meaning

  How else could the attribute skill be modeled

What is the degree of the Include relationship? How else could attribute Skill be modeled? Is it possible to attach any attributes to the Includes relationship?

  Explain the significance of detailed project planning

explain the significance of detailed project planning and control, good communication and documentation and the use of appropriate tools in order to provide a quality product;

  Draw the Use Case Diagram for the ATM system

BN209 Software Engineering - Supplementary Assignment, Melbourne Institute of Technology, Australia. Draw the Use Case Diagram for the ATM system

  Develop and draw a sequence diagram showing the interaction

Develop and draw a sequence diagram showing the interaction between customers and the online flight-booking business

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