{"action":"closed","issue":{"url":"https://api.github.com/repos/SOEN341-W16/ConUScheduler/issues/24","repository_url":"https://api.github.com/repos/SOEN341-W16/ConUScheduler","labels_url":"https://api.github.com/repos/SOEN341-W16/ConUScheduler/issues/24/labels{/name}","comments_url":"https://api.github.com/repos/SOEN341-W16/ConUScheduler/issues/24/comments","events_url":"https://api.github.com/repos/SOEN341-W16/ConUScheduler/issues/24/events","html_url":"https://github.com/SOEN341-W16/ConUScheduler/issues/24","id":127053683,"number":24,"title":"Section 3.1 Functional Requirements","user":{"login":"claudds","id":15068038,"avatar_url":"https://avatars.githubusercontent.com/u/15068038?v=3","gravatar_id":"","url":"https://api.github.com/users/claudds","html_url":"https://github.com/claudds","followers_url":"https://api.github.com/users/claudds/followers","following_url":"https://api.github.com/users/claudds/following{/other_user}","gists_url":"https://api.github.com/users/claudds/gists{/gist_id}","starred_url":"https://api.github.com/users/claudds/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/claudds/subscriptions","organizations_url":"https://api.github.com/users/claudds/orgs","repos_url":"https://api.github.com/users/claudds/repos","events_url":"https://api.github.com/users/claudds/events{/privacy}","received_events_url":"https://api.github.com/users/claudds/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/SOEN341-W16/ConUScheduler/labels/help%20wanted","name":"help wanted","color":"159818"}],"state":"closed","locked":false,"assignee":{"login":"dtopaloglou","id":5993176,"avatar_url":"https://avatars.githubusercontent.com/u/5993176?v=3","gravatar_id":"","url":"https://api.github.com/users/dtopaloglou","html_url":"https://github.com/dtopaloglou","followers_url":"https://api.github.com/users/dtopaloglou/followers","following_url":"https://api.github.com/users/dtopaloglou/following{/other_user}","gists_url":"https://api.github.com/users/dtopaloglou/gists{/gist_id}","starred_url":"https://api.github.com/users/dtopaloglou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dtopaloglou/subscriptions","organizations_url":"https://api.github.com/users/dtopaloglou/orgs","repos_url":"https://api.github.com/users/dtopaloglou/repos","events_url":"https://api.github.com/users/dtopaloglou/events{/privacy}","received_events_url":"https://api.github.com/users/dtopaloglou/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/SOEN341-W16/ConUScheduler/milestones/3","html_url":"https://github.com/SOEN341-W16/ConUScheduler/milestones/Deliverable%201%20-%20General","labels_url":"https://api.github.com/repos/SOEN341-W16/ConUScheduler/milestones/3/labels","id":1506212,"number":3,"title":"Deliverable 1 - General","description":"Deliverable 1 will be the basic outline for the entire project. This document will outline the entire project process, from the initial stages of model, listing requirements and specifications, etc. to scheduling and assigning tasks to group members. \r\n\r\nAs a first step, the software process model should be decided (this may be done in meeting #2 this Friday, January 17).\r\n\r\nAll other parts of Deliverable 1 will be assigned after the second group meeting this Friday.\r\n\r\n- [ ] Complete Introduction \r\n- [ ] Decide on Software Process Model \r\n-  [x] Determine specifications and requirements as a whole group\r\n- [ ] Assign Writing Tasks for each part of Deliverable 1\r\n\r\nDELIVERABLE 1 DESCRIPTION \r\n\r\n1.\tPresentation\r\n\r\nProfessionalism of the document in terms of look and feel including, but not limited to layout colour and binding.\r\n\r\n2.\tProject Description\r\n\r\nThe instructions provided in blue are there to provide you indications describing the expected content of the respective sections. They are all to be deleted and replaced with appropriate content.\r\nThe introduction of the document provides an overview of the entire document, briefly introducing what are its goals, and what information is to be found in it.\r\nGoals and Constraints [A brief description of the purpose and objectives of this project and a brief description of what deliverables the project is expected to deliver. length: 1/2 - 1 page\r\n\r\n3.\tGoals and Constraints\r\n\r\nThis section aims at describing all the goals of the project in terms of features and qualities to be implemented, as well as constraints imposed on the solution. \r\nNote that this section is to present all expected features, which can then later be eventually scoped down in section 5, given the resource limitations exposed in section 4. \r\nDiscrimination factors such as relative importance and difficulty are to be provided in order to proceed with the scoping.. \r\n\r\n3.1\tFunctional Requirements\r\n\r\nThis section should describe the requirements that the software shall have. It should define the fundamental actions that must take place in the software in accepting and processing the inputs and in processing and generating the outputs. \r\nThe overall functional requirements shall be presented graphically as a use case model.  \r\nEach individual requirement shall be presented as a use case.  Also, each requirement should be rated in terms of difficulty and importance in order to provide useful discrimination factors for the project scoping presented in section 5.  \r\n\r\n3.2\tDomain Model\r\n\r\nThis is a diagram consisting of domain level objects and their attributes and associations. Include an explanation of the model commenting on each component and its relationship to the other components.\r\n\r\n3.3\tConstraints and Qualities\r\n\r\nThis section describes applicable quality standards and non-functional requirements that the system shall meet, like: performance, usability, reliability, interoperability, scalability, security, etc.\r\nInclude any design constraints, external constraints or other dependencies, hardware or platform requirements.\r\nConstraints and qualities should be described in concrete terms.  Where possible, metrics should be applied.\r\n\r\n\r\n4.\tResource Evaluation\r\n\r\nThis section contains the resource evaluation for the project, expressed both in order to evaluate if resources are sufficient, scoping down if not, and also in order to allocate the resources in the subsequent project plan presented in section 6\r\n\r\n4.1\tHuman Resources\r\n\r\nPresent here all your team members in terms of their capacities (strengths, knowledge, experience), as well as an evaluation of the time they can consecrate to the project over the semester,  and possible lack of availability during certain periods, which is important information to consider for concrete planning.\r\n\r\n4.2\t Technical Resources \r\n\r\nPresent here the computer resources available for the project. That includes computers, software resources (tools, libraries, etc.) available on these computers\r\n\r\n5.\tScoping\r\nWith regard to the cost/time necessary to meet all the goal presented in section 3, and given the resources  available presented in section 4, give here the scope of the solution that you will implement in the project.\r\nList all features/goals/qualities that will be left out because of lack of time/resources.\r\n\r\n6.\tSolution Sketch\r\n\r\nThis section gives an early overview of the solution you propose for the project. \r\nThis section should include the rationale of your decisions. A rationale exhibits a valid justification for a given decision made in the course of planning your solution. It should explain the reasons why a decision was made. It should justify whether or not this decision is “wise” by comparing it with some others.\r\n\r\n6.1\tArchitecture\r\n\r\nExplain the high-level system architecture that you plan for the project, giving explanations as to why you chose such an approach, e.g. a design rationale. Include a high-level architecture diagram (e,g, a high-level UML class diagram). For each module presented in the architecture, also give its rationale, as well as list their individual responsibilities.\r\n\r\n6.2\tTechnologies in Use\r\n\r\nList all the technologies that you plan to use in the project (e.g. programming languages, tools like compiler or IDE, libraries, etc. Give a brief rationale for the use of each technology, i.e. explanations describing why they are appropriate in the context of this project.\r\n\r\n7.\tPlan\r\n\r\nThis section contains the schedule for the project, as directed by all the information presented in the preceding sections.\r\n\r\n7.1\tActivities\r\n\r\nDescribe what are the main activities involved in your project. An activity is something that must be undertaken in order to produce an artifact that is useful in reaching the goals of the project. Each activity shall have a clear purpose, and shall yield at least one artifact as an output.\r\n\r\n7.2\tArtifacts\r\n\r\nDescribe what artifacts you are going to produce in this project. Do not limit yourself to “deliverable 1, deliverable 2 and deliverable 3”, but rather split them into lower level units, e.g. “class diagram”, “list of requirements”, “test cases”, etc. Explanations describing the role of each artifact in the production process. \r\n\r\n7.3\tProject Estimates\r\n\r\nProvide a realistic estimated cost and schedule for the project, as well as the basis for those estimates, and the points and circumstances in the project when re-estimation might occur. \r\nEvaluate the cost of production of each artifact, as described in the previous section, and then adding up the numbers.\r\n\r\n7.4\tActivities Assignments\r\n\r\nAssign the different activities to your team members, according to their capacities and schedule limitations, as presented in section 4.1.\r\n\r\n7.5\tSchedule\r\n\r\nDiagrams or tables showing target dates for completion of iterations and phases, release points, demos, and other milestones, e.g. a Gantt chart. \r\n\r\n7.6\tRisk\r\n\r\nList and comment all the elements of the project that present a risk. Explain why they represent a risk.\r\n\r\n8.\tPrototyping\r\n\r\nDescribe any work undertaken in development of a prototype.  A prototype should be developed during this phase both to prove the technologies used are appropriate to the task and to assess the competence of the team to work with the selected technologies.\r\n","creator":{"login":"claudds","id":15068038,"avatar_url":"https://avatars.githubusercontent.com/u/15068038?v=3","gravatar_id":"","url":"https://api.github.com/users/claudds","html_url":"https://github.com/claudds","followers_url":"https://api.github.com/users/claudds/followers","following_url":"https://api.github.com/users/claudds/following{/other_user}","gists_url":"https://api.github.com/users/claudds/gists{/gist_id}","starred_url":"https://api.github.com/users/claudds/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/claudds/subscriptions","organizations_url":"https://api.github.com/users/claudds/orgs","repos_url":"https://api.github.com/users/claudds/repos","events_url":"https://api.github.com/users/claudds/events{/privacy}","received_events_url":"https://api.github.com/users/claudds/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":22,"state":"open","created_at":"2016-01-14T03:32:23Z","updated_at":"2016-02-09T01:51:15Z","due_on":"2016-02-11T05:00:00Z","closed_at":null},"comments":13,"created_at":"2016-01-16T21:08:22Z","updated_at":"2016-02-09T01:51:15Z","closed_at":"2016-02-09T01:51:15Z","body":"This section should describe the requirements we've decided our system should include and define the actions that must take place in the software. Basically, this is where our use cases will be outlined and the use case diagram will be included. \r\n\r\nNote that we should include ALL features that we would want to include in the project, even some of the features we'd later scope out (and have already decided to scope out). This is just to show that we've progressed already with some of the planning. \r\n\r\nExample of functional requirements:\r\n\r\n- Login            \r\n- Logout       \r\n- Create course sequence (personalize course sequence by adding/removing courses)\r\n- Browse list of courses (by name)\r\n- View chosen courses (view sequence)\r\n- Generate Schedule for next 4 years (with preferences)\r\n- View saved schedules (all previously saved generated schedules)\r\n- View academic record (completed courses)\r\n- Remove course from generated schedule (generated)\r\n- Add course to generated schedule (generated)\r\n- Save generated schedule\r\n- View generated schedule (weekly calendar view)\r\n\r\nRelative importance and difficulty should be provided in here too. This was one of the sections delegated to @SOEN341-W16/coding \r\n\r\n\r\n### Description <h3>\r\n\r\n*This section should describe the requirements that the software shall have. It should define the fundamental actions that must take place in the software in accepting and processing the inputs and in processing and generating the outputs. \r\nThe overall functional requirements shall be presented graphically as a __use case model__.*\r\n\r\n*Each individual requirement shall be presented as a use case. Also, each requirement should be rated in terms of difficulty and importance in order to provide useful discrimination factors for the project scoping presented in section 5.*\r\n\r\n----\r\n### Use Case <h3>\r\n![use case](https://cloud.githubusercontent.com/assets/5993176/12461458/04a3b466-bf87-11e5-8059-1e8c00b5fd9b.png)\r\n----\r\n### Use Case Model <h3>\r\n![use case model](https://cloud.githubusercontent.com/assets/5993176/12461522/5aa47120-bf87-11e5-861a-58d51a62c467.png)\r\n"}}