| Cautionary note: (i) I haven't proof-read these yet, they're just my initial stream-of-conciousness drafts of solutions, and (ii) some of them are longer/more detailed than I'd be expecting in your answers. |
Sample solution A remote is a repository other than the current repo's default pull source or push destination, used when there is another relevant repository we would like to pull content from or push content to. |
Sample solution Branches are often used to introduce new code without altering the code currently in place, e.g. to introduce experimental new features, fixes, or functionality without modifying the existing code base. |
Sample solution A merge conflict arises when the same file has been altered in different ways in two parallel branches of a repository, and an attempt is made to merge those two branches together. This necessitates identifying to git what the "correct" resulting version of the conflicted file should be. |
Sample solution In the case of a pull or push, we have a conflicted file across two parallel repositories rather than across two parallel branches. The resolution is much the same as for regular merge conflicts: edit each conflicted file to contain the expected "correct" content to reflect the different alterations in each repo. |
Sample solution The git leader typically manages the initial setup of the team repo, granting the needed invites/permissions/access to the other team members, and ensuring that safe and effective processes are developed and followed to coordinate the development of content in the team members' individual repositories and to merge that into the central team repo. |
Sample solution One of the biggest challenges in this regard is that everyone has a different perception of 'easy to learn' for any given product, heavily influenced by their familiarity with the general knowledge domain of the product, their past experience with similar products, and their general comfort level with exploring new tools or technologies. A suitable wording might instead list the ways in which learning is supported, e.g. "The product must include a tutorial for each of the following use cases (...some list...), and must include tooltips for each interactible field/control of the interface." |
Sample solution (Here using internationalization as the example, but very similar answers could be given for either of the other two choices.) Suppose we were developing a program that was initially planned for use here in Nanaimo, with (Canadian) English as the presumed language. If we weren't actively designing with internationalization in mind, it might be perfectly natural to write all our output statements "hard-coded" directly into the various functions/methods in our program, and to assume all currency amounts were in dollars/cents, all measurements were in metric, and all times were in BC's new year-round time zone (PCT). In order to later support other locations, languages, and measuresments, we would need to redesign and rewrite the logic for every such function. If we designed with internationalization in mind then we could have written the original logic to reference configurable settings, which would be far easier to add to in an incremental fashion. |
| System description: resource utilization modeling tool
A local client wants a custom software product developed over the next 16 months to model the consumption of resources by his crews at sites around various remote Vancouver Island locations. The crews frequently switch between sites, with periodic visits back to their headquarters in Nanaimo. The client wants the completed tool to be able to report on current storage levels of each resource at each site the crews visit, the rates at which the resources are being consumed, and to forecast when new resources need to be ordered and shipped to ensure the crews do not run out of key resources. Each crew's resource needs are somewhat different, and resource needs also vary from site to site. To gather information on the system needs, your team can meet with the leads of each of the different crews during times when they are in Nanaimo, but should also plan on at least one visit to each remote site while there is a crew there. The client and crew leads are keen on having such a system in place, but they are all very busy and have limited time available to provide you with details about their needs and operations. The client is willing to pay current market rates for you and a team of up to four other people for the 16 months to gather requirements, design, and develop the product. (Any longer term revisions and/or maintenance to be negotiated separately.) |
Sample solution (A case could probably be made for any of the various SDLCs, depending on which aspects of the scenario you deemed most crucial and how you chose to address them.) Resource management tools are not uncommon, so my initial expectation would be that my team could develop or customize an effective tool relatively 'easily' once we know what the precise needs/expecations are. My greater concerns would revolve around the challenge of finding out exactly what the needs/expectations would be, particularly given that there are multiple sites and multiple crews (and we're told each has unique needs), and that the crews (or leads) have limited time available to meet/discuss issues with our team. I would probably want to ensure that our requirements gathering included having one or two people from our team visit each site at least once while a team was there, and met with each team at least once, and with as many client meetings as could be readily arranged. After some time to develop and refine our view of the actual needs, I would want our team to have at least one follow-up meeting with each team lead, preferably with some of those taking place at the locations with the most challenging needs. (Which specific locations would be identified as part of the requirements gathering steps.) With sign-off from the client, we could then commence the initial implementation, ideally leaving time for a round of on-site testing followed by a revision phase before final delivery. This suggests something of a spiral model, but one where the first cycle is somewhat longer than the second to reflect the extra information gathering needed in that first round, e.g.: |
| System Description: GameBraker
GameBraker is a software tool focused on the ways games crash and the people who crash them (intentionally or not). Registered users can add games to the system for tracking, report new crashing techniques for games that are tracked, confirm crashes reported by other users, or confirm that new game patches or versions have fixed crash issues. (Unregistered users can browse the tracked games and crash reports, but cannot add content.) Users register by selecting a unique username (the system automatically flags attempts to use offensive or already-selected usernames), providing an email address, and following the setup/confirmation steps given in an email the system sends to that address. The user can then complete a profile to include (optional) information about their preferred platforms, games and game styles, age, region, etc. Users can add new games for tracking by submitted the name of the game and the platform and game version they are using, along with an email address or URL for that game's producers (preferably an email/URL associated with bug reporting for the game). The staff at GameBraker Inc then verify the information provided and have the game added to the system. After testing or experiencing a game crash (in a tracked game), users either browse existing reports and confirm/deny the crash is still present (deny actually meaning they did not experience a crash with the same circumstances as the other user reported) or they can add a new crash report. Either approach begins by selecting the game, platform, and version in GameBraker's reporting system, then either selecting an existing crash report for that game for confirmation or creating and filling in a crash report. If a new report is being generated then the user is asked to provide detailed information on the form (date/time, detailed descriptions of the steps leading up the crash, nature of the crash, etc). |
Sample solution (Any of the diagramming techniques could be chosen, I chose an ERD since so much of the description above was focused on the different forms of information handled by the system. I also put more detail into descriptions of the different entities than I would expect in your actual midterm answers.) ... coming shortly ... |