Sprint 4: Further Development

Scrum Master: Michael Hancock

Testing: Charles Hackett

Programming : Alice Hodkin & Barnaby Smith

Design: Prince Ofori

SPRINT Aim:

  • Optimise and improve the current code developed from the refactored
  • Remove and spurious errors within the code
  • Test connection to Stock market server

Scurm Master / Tester – Michael Hancock

This sprint I volunteered myself for the role of scrum master, however also undertook some testing work to make up for my unavoidable absence during the previous sprint. Quite simply for my role as a sprint master I directed the stand-up meeting and organised what different roles team members could take. This was easy since most people already knew which tasks they wished to do (mainly because they hadn’t done them yet). However multiple people wanted to do the same thing so I did have to delegate somewhat. As further part of my role as scrum master I also organised meeting times, and updated Scrum Desk.

During testing I was passed the software Alice Hodkin & Barnaby Smith had just written. While Charles Hackett directed the tests and filled in the test cases, I implemented the tests at runtime and checked system performance. The only corrections I suggested personally to the developers was further exception handling for when the server does not return a valid message.

Design – Prince Ofori

Reviewed the recent updates to the groups UML design to take into account the recent redesign carried out by Ben and Alice. Additionally reviewed the previous designs of the artefact to maintain consistency of design throughout the production of the artefact and reflect and changes made. The role of the design within this sprint was diminished as the previous design teams had implemented comprehensive designs to support the development of the application. Within

Testing- Charles Hackett

Used previous test cases to test if the system works using black box testing, this is where the system is perceived as a black box and a test is successful based on if the received output is the same as the expected output which is based on the input of the user. As can be seen the only two successful test cases where the Helo command which is used for the server to acknowledge a connection and the regi command which returns a key which is then used to buy and sell shares. Unfortunately the other test cases where not successful and the further functionality does not work as desired.

Testing sprint 3

 

Alice Hodkin – Programming

PairProgrammingLog_sprint4

For this sprint, Barnaby and I programmed together. We attempted to implement some of the client’s more advanced requirements, however we were unable to work out exactly how to do so. What we did do though was review the current code and make minor improvements to make it clearer to understand.

 

Barnaby Smith – Programming

ProgLog

In this sprint, Alice and I worked together on programming. After a attempts to implement more advanced features that the client requested, we decided to move on to making minor improvements in the code, to make it clearer and easier to understand.

Sprint 3: Development of Threads

Scrum Master: Charles Hackett

Programming: Prince Ofori & Ben Adlington

UML: Alice Hodkin

Michael Hancock and Barnaby Smith unavailable this sprint.

Sprint Aims:

  • Implement threads for sending and receiving of data

Prince Ofori – Programming

Prince Ofori Pair Programming Log

At the beginning of this sprint the scrum master reviewed the progress made within previous sprints in relation to the artefact. As one of the primary developers of the previous sprint was unavailable questions could not be posed to him as there were some errors within the program that I and my pair programming partner could not understand. This issue highlighted a problem within the SCRUM methodology as team members may become unavailable at the start of a sprint leaving a clear gap in knowledge for the duration of the sprint.

This sprint highlighted the need of a redesign of the artefact as the code was not implemented in a way which could easily be passed from sprint to sprint. Additionally the importance of pair programming in the dispersal of information across the team , additionally the support of a skilled programmer improved the overall speed we tackled issues within the sprint as opposed to the structured and somewhat restrictive nature of other methodologies where roles are defined throughout the development of the artefact.

Ben Adlington – Programming

During this week I was assigned to doing some pair programming work focused on introducing threads for reading and writing data from the server. The pair programming log below shows the time spent programming with and without my partner. The threading was implemented using “Implements Runnable” onto the required classes. This then allows for an overloaded function to be added to the class, this function (run) is used as a thread and is called throughout the program. Within our application this allows data to be read back from the server whilst other code is being executed. Overall there were minimal bugs or errors found whilst coding, mostly missing try catch statements around crucial parts of the code which were later added.

Capture2

Alice Hodkin – UML

useCases_sprint3 domain_sprint3

For this sprint, I was in charge of producing the UML diagrams. Whilst UML diagrams had already been made in previous sprints, the requirements of the client had changed slightly since then. Before any of the new requirements of the client could be programmed, they needed to be planned out, by creating UML diagrams.

The diagrams that I created were a use case diagram and a domain model. The use case diagram provided a clear representation of how the user should be able to interact with the newly specified artefact. the main development between this use case diagram and previous versions is the addition of the login stage, which will only allow registered users to access the server, which presents an additional stage for the user to complete before they can complete the tasks that they want to do.

The domain model was also developed to include a login class. Including this class was important in showing how it related to both the user and server, as well as clearly demonstrating that the programmed login class should not directly interact with the shares themselves in any way. Both these UML diagrams should aid the programmers in the next sprint, as the classes that they need to program have already been clearly laid out for them.

Charles Hackett- Scrum Master

For this sprint I was designated as the scrum leader so i had to delegate roles to the other members of the group and give them tasks to complete for this sprint. Using Scrumdesk I created tasks that needed to be completed and then allocated them to members of the group using the web application, I gave the tasks a level of effort that will be required in order to complete the tasks(a number out of 5) and also how important the task was(must, should or could). This can be seen in the image bellow.

Sprint 3 Scrumdesk

Sprint 2: Development of Socket

Scrum Master: Alice Hodkin

UML:  Ben Adlington

Paired Programming: Michael Hancock , Charles Hackett

Test Cases: Prince Ofori, Barnaby Smith

Sprint Aims:

  • Come up with additional test cases if necessary
  • Complete use case diagram and start domain model
  • Program the back end so that the socket can connect to the server
  • Program the back end so that the code and the GUI can be tested

 

Testing – Barnaby Smith, Prince Ofori

Sprint 2 Test Cases

Test Cases developed by Barnaby Smith and Prince Ofori

These are the test cases for sprint for sprint 2. They are all black box for test driven development. They may need altering at a later date due to any possible changes that may occur.

Prince Ofori: Expanded

This sprint the role of tester was assigned to me by the scrum master, the primary task I and Barnaby were set was to define functional test cases that would inform the design of the application. Due to the nature of SCRUM the testing team of which I was part began writing the test cases whilst the development team were writing the code. This synchronicity is unusual in iterative development methodologies, SCRUM however allows the implementation of test driven development (TDD). The process of developing these test cases was not exceptionally time consuming and they were passed along to the development team to review their code whilst in the process of development allowing developers to develop code that passes the test and can be easily in future SPRINTS or releases.

The role of TDD in the development of the application cannot be understated. The short development cycle (1 week long SPRINTs) resulted in varying sub-teams within the group working at the same time, communicating between groups to inform and improve the development of the application was key to the increased productivity of this sprint as compared to the first sprint.

Barnaby Smith: Expanded

Ben Adlington – UML

Capture

Above is the UML that I have created for sprint 2. It contains a basic design for each of the classes for the application that we will be creating. These designs may need to be altered at a later time if more features are implemented due to the requirements changing.

Alice Hodkin – Scrum Master

scrum_sprint2

Above shows the completed tasks of sprint 2, which were assigned using Scrumdesk, with some help from Prince. These tasks provided a clear graphical representation of what each team member needed to achieve during this sprint. When tasks were completed, they could be moved across the board. During this sprint, all of the tasks allocated were completed within the designated time, meaning that in the next sprint, new tasks that need completing can be assigned.

Charles Hackett- Programming-  Charles Hackett Pair Programming

SPRINT 2  Charles Hackett Programming Log

SPRINT 2 Charles Hackett Programming Log

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

In this sprint I pair programmed with Michael Hancock and we began developing the system in Java and created the socket which is used to communicate with the server, we used the ServerSocket and PrintWriter and BufferedReader Java Api’s to code the initial implementation of the system and this allowed us to successfully implement the ‘Helo’ command which is used to acknowledge a successful connection. During these programming sessions we encountered a couple of errors that can be seen in the pair programming log, the first of these was just a few small syntax errors as we where using Notepad and we missed a couple of things before it was compiled, the second error was also a syntax error where we did not use the right syntax in the While Loop as we tried using ‘Null’ instead of empty speech marks. We spent 4 hours coding and the time driving was 50%.

Michael Hancock- Programming

In this second sprint I had the role of developer with an emphasis on pair programming with Charles Hacket. We began work on the back end of the system. This included implementing class designs and the domain model myself and Charles had designed last sprint. Up to this point only work on the systems front end had been done. We both spent about 50% of the time ‘driving’, the rest of the time discussing implementation and trying to spot mistakes. Personally I found this quite a frustrating process since I felt like the person whom was driving, never really needed the help of another person. Rather their interruptions stopped the flow of development. It would have been easier/quicker if we have developed on our own on separate parts of the class design.

Another problem was that we both have fundamentally different programming styles, and at no point had any design pattern or convention for naming variables/functions/classes had been established. This made reading each other’s code a more difficult experience. Aside from this we did discover a few bugs when reviewing the code after. Including a threading issue and incorrect use of java’s .equals(“”) function. The resulting pair programming log can be seen below.

SPRINT 2  Michael Hancock Programming Log

SPRINT 2 Michael Hancock Programming Log

 

Sprint 1: Requirements Gathering

Scrum Master: Prince Ofori

GUI: Ben Adlington, Barnaby Smith

Design: Michael Hancock (Domain Model) , Charles Hackett (Use Case Diagram)

Testing: Alice Hodkin

Requirements:

  • System must have a GUI, the more aesthetically pleasing the better
  • System must be able to connect to the stock market system, the server code will be provided
  • The system must be automated to buy shares for the highest possible profit
  • Stock must change a predefined times
  • Show currently owned
  • List Profit/Loss
  • All systems start with £10,000
  • Request current stock portfolio
  • List details for share value
  • User Feedback

Prince Ofori – Scrum Conclusion

Sprint 1 Scrumdesk overview

Sprint 1 Scrumdesk overview

 

The image above depicts the completed tasks of Sprint 1, as scrum master I allocated tasks and roles to the members of the team and managed the documentation of the to support the progression of the project. Using Scrumdesk tasks were created with an estimated completion time and effort level to define the importance of those tasks to the success of the scrum. The time which each team member spent on their given task within this sprint is also represented graphically in the side bar of the user interface.The role as scrum master also required gathering the requirements from the client and relay this information to the team. The importance of these features and the role that they held to the  implementation of this software artefact, moreover it identified an appreciable difference between other software development methodologies that the group had utilised in the past.

Scrum unlike sequential methodologies such as the Waterfall enables an amount of flexibility that the former does not due to the iterative nature of the methodology.  Within the first sprint all members of the team played an active role within the preliminary steps of development, in contrast to Waterfall and Spiral, both which are rigid in the steps in which the team members can interact in the development of the design Scrum improves on the communication and interaction with all members of the team across varying stages of the Software Development Life Cycle.

Ben and Barnaby – GUI

design 1design 3

In sprint 1 Ben and I were set the task of designing the GUI, we used paint to create a simple layout of what we would like the GUI to look like, this was before we had received exact requirements from the domain model and so was designed as an estimation of what the GUI could look like. After receiving the requirements from the domain model we then used the NetBeans IDE to create a more accurate GUI. This uses lists to display the available and owned stocks to the user and a simple buy and sell interface. It also clearly displays the profit value of the stocks that you own. Other more advanced features are held in the task menu, such as automation, connection and disconnection to the server.

 

Alice Hodkin – Testing

Scrum Test Cases 1testCases_sprint1

In SCRUM, test cases can be written before any programming or GUI design has begun. These may need editing in later sprints to reflect changes in the needs and requirements of the system. To create these test cases, I made a table that will provide a base to use for basic black box testing, adding tests based upon the results of the client meeting.

Once the GUI was produced, I added extra test cases to test the feature specific to the GUI design.

Charles Hackett- Use Case Diagram

For this sprint I was delegated to do an UML Use Case diagram, a Use case diagram is a simple way of explaining how users will interact with a system, as can be seen in the image bellow the shareholder will be able to view previous transactions, view the gross profit, and view the shares list of the current shares that they own, the system will also have an automate ability which will automatically buy and sell shares for the user in order to make profit.

Use case Diagram

Michael Hancock – UML Domain Model

For the first sprint, I was assigned the role of design by the Scrum master. Here I was to propose and visualise the UML domain model. This was an important role especially in week one, since this design would be use to put together the initial components of the systems during development. For our first sprint we dedicated two weeks, this task took me all of that time since I was unfamiliar with UML and had to re-learn how to use it.

Using the initial meeting with our client, I was able to sketch out a basic outline for the system. I worked closely alongside Charles Hacket whom was developing the UML case diagram, we discussed potential system layouts and designs; particularly how the elements of that system would interact. I found this particular sprint quiet challenging since I am less than adept at UML, however it was helpful to have two people working on design so we could discuss the system together. I also spent time discussing the system design with both of this scum’s developers, since they would be developing the design I provide. The final output domain model is shown.stock