From 2b84598248af098d3e55bd40774f054993116a52 Mon Sep 17 00:00:00 2001 From: Mikhail Andrenkov <M.Andrenkov@gmail.com> Date: Fri, 30 Sep 2016 14:38:21 -0400 Subject: [PATCH] Added Extra Hyperlinks --- Doc/DevelopmentPlan/DevelopmentPlan.pdf | Bin 108745 -> 119813 bytes Doc/DevelopmentPlan/DevelopmentPlan.tex | 14 +++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Doc/DevelopmentPlan/DevelopmentPlan.pdf b/Doc/DevelopmentPlan/DevelopmentPlan.pdf index 7d9194cc0853335cabf1203d11675b2d6f69a217..88e33de8b38d726531d0effc1c392adbff5bbb6a 100644 GIT binary patch delta 15837 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 delta 4617 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 diff --git a/Doc/DevelopmentPlan/DevelopmentPlan.tex b/Doc/DevelopmentPlan/DevelopmentPlan.tex index 251bb7d..1f382d7 100644 --- a/Doc/DevelopmentPlan/DevelopmentPlan.tex +++ b/Doc/DevelopmentPlan/DevelopmentPlan.tex @@ -34,6 +34,7 @@ 09/30/2016 & Mikhail & Edited and Proofread Document\\ 09/30/2016 & Or & Added Coding Style \& Project Schedule\\ 09/30/2016 & Or & Fixed typos\\ + 09/30/2016 & Mikhail & Added More Hyperlinks\\ ... & ... & ...\\ \bottomrule \end{tabularx} @@ -44,24 +45,28 @@ \maketitle \indent -The Rogue Reborn project aims to rewrite the classic video game \textit{Rogue} in a modern programming language using contemporary software development techniques. The purpose of this document is to outline the development plan of the project. Included below are the strategies for team coordination and work partitioning, details of the technology and development process, and an overview of the project schedule including details of the requirements for the proof of concept deadline. +The Rogue Reborn project aims to rewrite the classic video game \textit{Rogue} in a modern programming language using contemporary software development techniques. The purpose of this document is to outline the development plan of the project. Included below are the strategies for \hyperref[communication_label]{team coordination} and \hyperref[roles_label]{work partitioning}, details of the \hyperref[tech_label]{technology} and \hyperref[workflow_label]{development process}, and an overview of the \hyperref[schedule_label]{project schedule} including details of the requirements for the \hyperref[poc_label]{proof of concept} deadline. \section{Team Meeting Plan} +\label{meeting_label} \indent Team meetings will be held on a weekly basis in Thode library at 3:30 PM every Wednesday. These weekly meetings will be chaired by the team leader whose will be responsible for developing and enforcing a rough meeting agenda. Although this agenda will not be posted, it will be briefly outlined for the participants of the meeting. In addition, full meeting minutes will not be recorded; however, the meeting scribe will be responsible for recording the outcomes of the meeting discussions. These transcripts will be posted to the team Git repository. If a team member cannot attend the meeting, a brief summary of the meeting (including a reference to the Git commit) will be posted to the team Slack channel by the meeting scribe. Any changes to the meeting format, location, or time will also be posted to the team Slack channel by the meeting chair. \section{Team Communication Plan} +\label{communication_label} \indent Team communications will be distributed across several social platforms. This way, conversations can be grouped together according to the degree of formality and desired visibility. Specifically, Slack will be used to exchange informal messages for purposes such as conveying meeting times or briefly discussing topics. Team members will be required to check this service at least once per day in order to facilitate quicker response times and encourage more open communication. Next, the GitLab ITS will serve as an official means of tracking bugs, reporting issues, and announcing any other code correction requests. All other communications will be performed in person during the lab sessions as well as the weekly group meeting. Currently, there is no plan to include any other communication streams as this will most likely dilute the conversations to a point where accessibility and traceability is sacrificed. \section{Team Member Roles} +\label{roles_label} \indent As of the initial submission of this document, Mikhail is the team leader. As such, he will be responsible for chairing the meetings, allocating work across the team, and ensuring that all of the team members are up-to-date with respect to the project status and deadlines. The other team members will alternate between fulfilling the role of the meeting scribe. Outside of meetings, various team members will assume the roles of experts in the project technology area. In particular, Mikhail will be the Git and LaTeX expert, Ori will be the testing and Linux environment expert, and Ian will be the C++ and \textit{libtcod} expert (more on this library in the \hyperref[tech_label]{Technology} section). Expert roles do not constitute work allocations; rather, they assign accountability for certain portions of the project and provide a contact for internal questions related to a specific domain. \section{Git Workflow Plan} +\label{workflow_label} \indent To minimize the overhead associated with creating, updating, and managing project files, the Rogue++ team will collaborate using several Git integration flows. In general, all project source files and documents associated with the main (stable) development branch will be hosted in a central GitLab repository. Any developers (or distinguished stakeholders) may clone, view, and modify this code, given that their changes do not compromise any tested functionality. Note that it is still acceptable to commit a change to this branch that is not fully integrated; however, the application must be able to successfully compile and run. In the event that a prototype demonstration is required, a new branch will be created to host any temporary changes that will not be merged back into the main branch. This way, developers are free to adapt existing source code in any manner they choose in order to showcase their progress to a stakeholder without violating the integrity of the stable branch.\\ @@ -69,6 +74,7 @@ To minimize the overhead associated with creating, updating, and managing projec To create a semantic history of the development process, labels will be used extensively throughout the course of the Rogue Reborn project. This will enable stakeholders to oversee the progress of the project more clearly and developers to gauge their own productivity with greater ease. Milestones will also be incorporated as a means of measuring the progress of the application against the goals of the stakeholders. These milestones may also be used internally within the Rogue++ team to coordinate feature implementation or debug deadlines. If done correctly, this system will allow for more efficient communication between the involved parties and improve the visibility of the entire development cycle. \section{Proof of Concept Demonstration Plan} +\label{poc_label} \indent To demonstrate the feasibility of the project, a proof of concept (PoC) will be developed. The PoC will demonstrate the following features: @@ -89,11 +95,12 @@ On a positive note, it is unlikely that a straight-forward implementation of the \label{tech_label} \indent -The technology behind the Rogue Reborn project was selected to facilitate a productive development process and a powerful user experience. At its very core, C++ will serve as the primary programming language for this application. This decision was heavily influenced by the superior performance benefits and community support behind the language, not to mention its prevalence in the professional game developer industry. Another factor that motivated the use of C++ was its compatibility with \textit{libtcod}: a lightweight graphics library that offers a simple interface to draw ASCII-style art and collect user input. For these reasons, the development team believes that developing a C++ project would yield the best experience from both a technical and practical perspective.\\ +The technology behind the Rogue Reborn project was selected to facilitate a productive development process and a powerful user experience. At its very core, C++ will serve as the primary programming language for this application. This decision was heavily influenced by the superior performance benefits and community support behind the language, not to mention its prevalence in the professional game developer industry. Another factor that motivated the use of C++ was its compatibility with \href{http://roguecentral.org/doryen/libtcod/}{\textit{libtcod}}: a lightweight graphics library that offers a simple interface to draw ASCII-style art and collect user input. For these reasons, the development team believes that developing a C++ project would yield the best experience from both a technical and practical perspective.\\ -With respect to the environment of the technology, the Rogue++ team agreed to use Linux as the primary development platform (attempting to achieve cross-platform portability from the start could significantly hinder progress). Otherwise, every team member is free to use a text editor of their choice: imposing a constraint on an IDE could result in unnecessary complications and may interfere with productivity during the early coding stages. To gain confidence in the correctness and versatility of the code, the Boost Test framework will be heavily utilized to perform unit testing across the project. This library was selected on the merits of its superb documentation, simple approach to test creation, and robust assertion support. On a final note, the Rogue Reborn documentation will be generated using two tools. Specifically, all design documentation will be generated using LaTeX, while all source code documentation will be delegated to the Doxygen tool. +With respect to the environment of the technology, the Rogue++ team agreed to use Linux as the primary development platform (attempting to achieve cross-platform portability from the start could significantly hinder progress). Otherwise, every team member is free to use a text editor of their choice: imposing a constraint on an IDE could result in unnecessary complications and may interfere with productivity during the early coding stages. To gain confidence in the correctness and versatility of the code, the \href{http://www.boost.org/doc/libs/1_54_0/libs/test/doc/html/index.html}{Boost Test} framework will be heavily utilized to perform unit testing across the project. This library was selected on the merits of its superb documentation, simple approach to test creation, and robust assertion support. On a final note, the Rogue Reborn documentation will be generated using two tools. Specifically, all design documentation will be generated using LaTeX, while all source code documentation will be delegated to the Doxygen tool. \section{Coding Style} +\label{style_label} \indent In any large-scale project, it is vital for all members to be on the same page. This is especially true for a software project, where every team member must be able to read, understand, and analyze everyone else's code. The Rogue++ project will be utilizing \href{https://google.github.io/styleguide/cppguide.html}{Google's C++ Style Guide} to format and organize the source code. Google offers style guides that span dozens of programming languages and are a professional standard used in every corner of the software industry. Despite its excellence, the team will implement one change to the guide.\\ @@ -101,6 +108,7 @@ In any large-scale project, it is vital for all members to be on the same page. Google's C++ Style Guide calls for inline comments describing classes, functions, methods, and file contents. While this is a noble goal (and is most definitely necessary), this job has been delegated elsewhere. As mentioned before, the Rogue++ team will be using the Doxygen tool for documenting the source code structure. Doxygen will effectively encapsulate the design-documentation sphere. The only real difference this will make is the addition of Doxygen's documentation syntax on top of Google's comment standard. \section{Project Schedule} +\label{schedule_label} \indent Over the course of a one-hour meeting, the Rogue++ team decided on an overarching timeline for the development of the project. The timeline consists of several components, tasks, and deadlines that occasionally overlap. This timeline exists as a way of benchmarking the project's completeness; a guideline, not a rulebook. It will be wise to refer back to this schedule at least once a week (most likely during the weekly meetings), update the project status accordingly, and assess any complications that could arise. The schedule will be created in the form of a Gantt chart (soon to be made available). Listed below are the deadlines that were established in the previous team meeting: -- GitLab