CSCI 265: Fall 2023 Final Exam

System description for questions 1 and 2
A client wants a tool that provides 'live' player ranking updates for some new sport you've never heard of before. (We'll assume the business case for this is their problem!)

They already have a tool that captures a collection of player stats in about fifty different categories, dumping the updated values into text files roughly once a minute while games are in progress.

They have complex formulae that can compute several forms of player rating based on the stats in these files, and to support their online community they want the tool (that you'll be creating) to update these rankings once per minute during games and post them to their website.

There are between 30 and 40 teams active in any given season, each with 40 to 50 players on their rosters, and players can be hired/fired/traded during the season.

On any given night there may be anywhere from 2 to 12 games played, with 16 players per team per game (each game involves two teams).

The client wants the system operational for testing in time for an exhibition tournament 8 months from now, and wants the system fully operational in time for the start of the next full season, which is 10 months from now.

Question 1: software development life cycles [10]

For the system described above, propose a software development life cycle and timeline to meet the project objectives, how many people your team will need, and what skill sets your team will need, and justify the choices you have made.


Question 2: design [10]

(i) Provide a preliminary logical design for your solution, decomposing your product into key components and clearly identifying the core roles and responsibilities of each component.

(ii) Sketch a dataflow diagram illustrating the decomposition used in your answer to part (i).

(iii) Justify your design: why is this a good choice of design, and why do you think it is superior to other possible designs?


Question 3: test automation [10]

Suppose an investment group wanted to support and expand upon your team project for CSCI 265 this term, but required that the resulting product incorporate fully automated test suites for unit testing and for final user acceptance testing.

Outline the testing techniques you would use, the staff and tools you would need, and a proposed timeline, and discuss/justify these choices. Be sure you tailor this specifically to apply to the project your team undertook this term.


Question 4: version control [10]

The version control process described below is intended for use by a CSCI 265 team of six people. Critique the process, identifying potential problems and suggesting fixes for them.

Proposed version control process

  • The team will use a github project for their shared repository, each team member is responsible for setting up their own github account.
  • There will be two team admins, each with full control over the github project (they will sit down together to create the project repo initially).
  • There will be a 'next' branch off main, a 'staging' branch off main, and a 'dev' branch off of the 'next' branch. Each team member will create their own branches off 'dev'.
  • The main branch will be for the client-facing version, the 'next' branch is for the one in preparation for the current phase, staging is used for testing, and the dev branch is for work-in-progress.
  • The two admins can update main, next, and staging: other team members can only update their own branches and dev.
  • When someone thinks their work is ready to push to dev, they do the following:
    • pull the current version of dev into their own branch and resolve any issues
    • post in the team discord that they're pushing content to dev
    • push their branch to dev
  • When the team agrees that the current dev is correct for the next phase, one of the two admins does the following:
    • pull main into next (just in case) and resolve any issues
    • pull next into dev (just in case) and resolve any issues
    • merge dev into next
    • merge next into staging
    Testing now commences in the staging branch.
  • When all the tests in staging pass, one of the two admins merges next into main.


Question 5: code inspections [10]

Suppose a team working on a new phone app has decided to carry out an inspection on their logical design before moving on to physical design.

They never carried out a formal inspection of their detailed product requirements, so decide to do both together now, using the same team to go through the two documents more-or-less in parallel.

(i) Discuss the pros and cons of choosing to do the two inspections together (as opposed to completing a requirements document inspection process and resolving its issues before moving on to the design inspection).

(ii) Assuming there are four skilled developers carrying out the inspection, outline specific inspection roles, priorities, perspectives for each of them aside from moderator/scribe/reader/author, accounting for the unique aspects of inspecting both documents in parallel. Justify your choices.


Question 6: AI in software development [10]

(i) Discuss the different ways AI could be used to improve and expand upon your CSCI 265 team project for this term, making the discussion and any examples clearly specific to your project (not generalities about how AI and software can be combined).

(ii) For each of the approaches you suggested in part (i), identify the ethical issues associated with them, why those issues are particularly relevant to that approach for your project, and provide ways to mitigate the issues.