{"action":"created","comment":{"url":"https://api.github.com/repos/olinjs/olinjs/pulls/comments/24792476","id":24792476,"diff_hunk":"@@ -1 +1,129 @@\n-#Class 9\n+#Class 9 - Application Design and Diagramming\n+\n+As we begin to develop larger and more complex applications, we'll want to start being methodical about how we design and plan them. \n+Today we will talk about strategies for planning and documenting large applications to make developing and debugging as simple as possible.\n+\n+##Planning\n+\n+###Specifications\n+Writing a specification - or spec - for your application before you write any code can help not only you and your whole team understand the context for your application, but also serve as a road map for development.\n+As our applications grow in size and complexity, having a document to refer to can keep you on track with developing features and managing complexity.\n+\n+As always, we defer to Wikipedia for an example of what a spec should contain such that it conforms to the *IEEE Standard for software specifications*.\n+Yes that is actually a thing.\n+\n+- Introduction\n+ - Purpose\n+ - Definitions\n+ - System overview\n+ - References\n+- Overall description\n+ - Product perspective\n+   - System Interfaces\n+   - User Interfaces\n+   - Hardware interfaces\n+   - Software interfaces\n+   - Communication Interfaces\n+   - Memory Constraints\n+   - Operations\n+   - Site Adaptation Requirements\n+ - Product functions\n+ - User characteristics\n+ - Constraints, assumptions and dependencies\n+- Specific requirements\n+ - External interface requirements\n+ - Functional requirements\n+ - Performance requirements\n+ - Design constraints\n+   - Standards Compliance\n+ - Logical database requirement\n+ - Software System attributes\n+   - Reliability\n+   - Availability\n+   - Security\n+   - Maintainability\n+   - Portability\n+ - Other requirements\n+\n+There is no hard and fast rule about how long a spec should be, but including all of that is just plain unnecessary for anything we'll be making in this class.\n+Instead, let's distill some of the key ideas from above that our specs should touch on.\n+\n+***Disclaimer:*** Your teachers are by no means experts in writing specifications.\n+The suggestions offered below are just that.\n+The correct format will vary by project, so try to find what works best for you.\n+\n+- **Overview:** The story of your application, justification for why it needs to exist, and a broad overview of what it will accomplish.","path":"classes/class09/README.md","position":56,"original_position":56,"commit_id":"8b913eb3901c64c28f03f88f929a11b624a8d18c","original_commit_id":"8b913eb3901c64c28f03f88f929a11b624a8d18c","user":{"login":"benkahle","id":3596325,"avatar_url":"https://avatars.githubusercontent.com/u/3596325?v=3","gravatar_id":"","url":"https://api.github.com/users/benkahle","html_url":"https://github.com/benkahle","followers_url":"https://api.github.com/users/benkahle/followers","following_url":"https://api.github.com/users/benkahle/following{/other_user}","gists_url":"https://api.github.com/users/benkahle/gists{/gist_id}","starred_url":"https://api.github.com/users/benkahle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benkahle/subscriptions","organizations_url":"https://api.github.com/users/benkahle/orgs","repos_url":"https://api.github.com/users/benkahle/repos","events_url":"https://api.github.com/users/benkahle/events{/privacy}","received_events_url":"https://api.github.com/users/benkahle/received_events","type":"User","site_admin":false},"body":"Were you planning to add examples of these, they are still pretty vague for most people I think.","created_at":"2015-02-17T04:52:41Z","updated_at":"2015-02-17T04:52:41Z","html_url":"https://github.com/olinjs/olinjs/pull/80#discussion_r24792476","pull_request_url":"https://api.github.com/repos/olinjs/olinjs/pulls/80","_links":{"self":{"href":"https://api.github.com/repos/olinjs/olinjs/pulls/comments/24792476"},"html":{"href":"https://github.com/olinjs/olinjs/pull/80#discussion_r24792476"},"pull_request":{"href":"https://api.github.com/repos/olinjs/olinjs/pulls/80"}}},"pull_request":{"url":"https://api.github.com/repos/olinjs/olinjs/pulls/80","id":29417284,"html_url":"https://github.com/olinjs/olinjs/pull/80","diff_url":"https://github.com/olinjs/olinjs/pull/80.diff","patch_url":"https://github.com/olinjs/olinjs/pull/80.patch","issue_url":"https://api.github.com/repos/olinjs/olinjs/issues/80","number":80,"state":"open","locked":false,"title":"ADD Class 9","user":{"login":"EvanSimpson","id":1757661,"avatar_url":"https://avatars.githubusercontent.com/u/1757661?v=3","gravatar_id":"","url":"https://api.github.com/users/EvanSimpson","html_url":"https://github.com/EvanSimpson","followers_url":"https://api.github.com/users/EvanSimpson/followers","following_url":"https://api.github.com/users/EvanSimpson/following{/other_user}","gists_url":"https://api.github.com/users/EvanSimpson/gists{/gist_id}","starred_url":"https://api.github.com/users/EvanSimpson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EvanSimpson/subscriptions","organizations_url":"https://api.github.com/users/EvanSimpson/orgs","repos_url":"https://api.github.com/users/EvanSimpson/repos","events_url":"https://api.github.com/users/EvanSimpson/events{/privacy}","received_events_url":"https://api.github.com/users/EvanSimpson/received_events","type":"User","site_admin":false},"body":"Application Design and Diagramming","created_at":"2015-02-17T04:22:07Z","updated_at":"2015-02-17T04:52:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"72d40a568b4f70a6e677e7e83b1a4bebff151c42","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/olinjs/olinjs/pulls/80/commits","review_comments_url":"https://api.github.com/repos/olinjs/olinjs/pulls/80/comments","review_comment_url":"https://api.github.com/repos/olinjs/olinjs/pulls/comments/{number}","comments_url":"https://api.github.com/repos/olinjs/olinjs/issues/80/comments","statuses_url":"https://api.github.com/repos/olinjs/olinjs/statuses/8b913eb3901c64c28f03f88f929a11b624a8d18c","head":{"label":"olinjs:class9","ref":"class9","sha":"8b913eb3901c64c28f03f88f929a11b624a8d18c","user":{"login":"olinjs","id":3213751,"avatar_url":"https://avatars.githubusercontent.com/u/3213751?v=3","gravatar_id":"","url":"https://api.github.com/users/olinjs","html_url":"https://github.com/olinjs","followers_url":"https://api.github.com/users/olinjs/followers","following_url":"https://api.github.com/users/olinjs/following{/other_user}","gists_url":"https://api.github.com/users/olinjs/gists{/gist_id}","starred_url":"https://api.github.com/users/olinjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olinjs/subscriptions","organizations_url":"https://api.github.com/users/olinjs/orgs","repos_url":"https://api.github.com/users/olinjs/repos","events_url":"https://api.github.com/users/olinjs/events{/privacy}","received_events_url":"https://api.github.com/users/olinjs/received_events","type":"Organization","site_admin":false},"repo":{"id":28649083,"name":"olinjs","full_name":"olinjs/olinjs","owner":{"login":"olinjs","id":3213751,"avatar_url":"https://avatars.githubusercontent.com/u/3213751?v=3","gravatar_id":"","url":"https://api.github.com/users/olinjs","html_url":"https://github.com/olinjs","followers_url":"https://api.github.com/users/olinjs/followers","following_url":"https://api.github.com/users/olinjs/following{/other_user}","gists_url":"https://api.github.com/users/olinjs/gists{/gist_id}","starred_url":"https://api.github.com/users/olinjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olinjs/subscriptions","organizations_url":"https://api.github.com/users/olinjs/orgs","repos_url":"https://api.github.com/users/olinjs/repos","events_url":"https://api.github.com/users/olinjs/events{/privacy}","received_events_url":"https://api.github.com/users/olinjs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/olinjs/olinjs","description":"The second offering of Olin.js in the spring of 2015","fork":false,"url":"https://api.github.com/repos/olinjs/olinjs","forks_url":"https://api.github.com/repos/olinjs/olinjs/forks","keys_url":"https://api.github.com/repos/olinjs/olinjs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/olinjs/olinjs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/olinjs/olinjs/teams","hooks_url":"https://api.github.com/repos/olinjs/olinjs/hooks","issue_events_url":"https://api.github.com/repos/olinjs/olinjs/issues/events{/number}","events_url":"https://api.github.com/repos/olinjs/olinjs/events","assignees_url":"https://api.github.com/repos/olinjs/olinjs/assignees{/user}","branches_url":"https://api.github.com/repos/olinjs/olinjs/branches{/branch}","tags_url":"https://api.github.com/repos/olinjs/olinjs/tags","blobs_url":"https://api.github.com/repos/olinjs/olinjs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/olinjs/olinjs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/olinjs/olinjs/git/refs{/sha}","trees_url":"https://api.github.com/repos/olinjs/olinjs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/olinjs/olinjs/statuses/{sha}","languages_url":"https://api.github.com/repos/olinjs/olinjs/languages","stargazers_url":"https://api.github.com/repos/olinjs/olinjs/stargazers","contributors_url":"https://api.github.com/repos/olinjs/olinjs/contributors","subscribers_url":"https://api.github.com/repos/olinjs/olinjs/subscribers","subscription_url":"https://api.github.com/repos/olinjs/olinjs/subscription","commits_url":"https://api.github.com/repos/olinjs/olinjs/commits{/sha}","git_commits_url":"https://api.github.com/repos/olinjs/olinjs/git/commits{/sha}","comments_url":"https://api.github.com/repos/olinjs/olinjs/comments{/number}","issue_comment_url":"https://api.github.com/repos/olinjs/olinjs/issues/comments/{number}","contents_url":"https://api.github.com/repos/olinjs/olinjs/contents/{+path}","compare_url":"https://api.github.com/repos/olinjs/olinjs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/olinjs/olinjs/merges","archive_url":"https://api.github.com/repos/olinjs/olinjs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/olinjs/olinjs/downloads","issues_url":"https://api.github.com/repos/olinjs/olinjs/issues{/number}","pulls_url":"https://api.github.com/repos/olinjs/olinjs/pulls{/number}","milestones_url":"https://api.github.com/repos/olinjs/olinjs/milestones{/number}","notifications_url":"https://api.github.com/repos/olinjs/olinjs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/olinjs/olinjs/labels{/name}","releases_url":"https://api.github.com/repos/olinjs/olinjs/releases{/id}","created_at":"2014-12-30T23:29:53Z","updated_at":"2015-02-13T20:02:34Z","pushed_at":"2015-02-17T04:21:31Z","git_url":"git://github.com/olinjs/olinjs.git","ssh_url":"git@github.com:olinjs/olinjs.git","clone_url":"https://github.com/olinjs/olinjs.git","svn_url":"https://github.com/olinjs/olinjs","homepage":null,"size":7209,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":39,"mirror_url":null,"open_issues_count":2,"forks":39,"open_issues":2,"watchers":4,"default_branch":"master"}},"base":{"label":"olinjs:master","ref":"master","sha":"b7b81e3d794e1db821a91ebed7d4b48fdffa10f3","user":{"login":"olinjs","id":3213751,"avatar_url":"https://avatars.githubusercontent.com/u/3213751?v=3","gravatar_id":"","url":"https://api.github.com/users/olinjs","html_url":"https://github.com/olinjs","followers_url":"https://api.github.com/users/olinjs/followers","following_url":"https://api.github.com/users/olinjs/following{/other_user}","gists_url":"https://api.github.com/users/olinjs/gists{/gist_id}","starred_url":"https://api.github.com/users/olinjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olinjs/subscriptions","organizations_url":"https://api.github.com/users/olinjs/orgs","repos_url":"https://api.github.com/users/olinjs/repos","events_url":"https://api.github.com/users/olinjs/events{/privacy}","received_events_url":"https://api.github.com/users/olinjs/received_events","type":"Organization","site_admin":false},"repo":{"id":28649083,"name":"olinjs","full_name":"olinjs/olinjs","owner":{"login":"olinjs","id":3213751,"avatar_url":"https://avatars.githubusercontent.com/u/3213751?v=3","gravatar_id":"","url":"https://api.github.com/users/olinjs","html_url":"https://github.com/olinjs","followers_url":"https://api.github.com/users/olinjs/followers","following_url":"https://api.github.com/users/olinjs/following{/other_user}","gists_url":"https://api.github.com/users/olinjs/gists{/gist_id}","starred_url":"https://api.github.com/users/olinjs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/olinjs/subscriptions","organizations_url":"https://api.github.com/users/olinjs/orgs","repos_url":"https://api.github.com/users/olinjs/repos","events_url":"https://api.github.com/users/olinjs/events{/privacy}","received_events_url":"https://api.github.com/users/olinjs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/olinjs/olinjs","description":"The second offering of Olin.js in the spring of 2015","fork":false,"url":"https://api.github.com/repos/olinjs/olinjs","forks_url":"https://api.github.com/repos/olinjs/olinjs/forks","keys_url":"https://api.github.com/repos/olinjs/olinjs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/olinjs/olinjs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/olinjs/olinjs/teams","hooks_url":"https://api.github.com/repos/olinjs/olinjs/hooks","issue_events_url":"https://api.github.com/repos/olinjs/olinjs/issues/events{/number}","events_url":"https://api.github.com/repos/olinjs/olinjs/events","assignees_url":"https://api.github.com/repos/olinjs/olinjs/assignees{/user}","branches_url":"https://api.github.com/repos/olinjs/olinjs/branches{/branch}","tags_url":"https://api.github.com/repos/olinjs/olinjs/tags","blobs_url":"https://api.github.com/repos/olinjs/olinjs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/olinjs/olinjs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/olinjs/olinjs/git/refs{/sha}","trees_url":"https://api.github.com/repos/olinjs/olinjs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/olinjs/olinjs/statuses/{sha}","languages_url":"https://api.github.com/repos/olinjs/olinjs/languages","stargazers_url":"https://api.github.com/repos/olinjs/olinjs/stargazers","contributors_url":"https://api.github.com/repos/olinjs/olinjs/contributors","subscribers_url":"https://api.github.com/repos/olinjs/olinjs/subscribers","subscription_url":"https://api.github.com/repos/olinjs/olinjs/subscription","commits_url":"https://api.github.com/repos/olinjs/olinjs/commits{/sha}","git_commits_url":"https://api.github.com/repos/olinjs/olinjs/git/commits{/sha}","comments_url":"https://api.github.com/repos/olinjs/olinjs/comments{/number}","issue_comment_url":"https://api.github.com/repos/olinjs/olinjs/issues/comments/{number}","contents_url":"https://api.github.com/repos/olinjs/olinjs/contents/{+path}","compare_url":"https://api.github.com/repos/olinjs/olinjs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/olinjs/olinjs/merges","archive_url":"https://api.github.com/repos/olinjs/olinjs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/olinjs/olinjs/downloads","issues_url":"https://api.github.com/repos/olinjs/olinjs/issues{/number}","pulls_url":"https://api.github.com/repos/olinjs/olinjs/pulls{/number}","milestones_url":"https://api.github.com/repos/olinjs/olinjs/milestones{/number}","notifications_url":"https://api.github.com/repos/olinjs/olinjs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/olinjs/olinjs/labels{/name}","releases_url":"https://api.github.com/repos/olinjs/olinjs/releases{/id}","created_at":"2014-12-30T23:29:53Z","updated_at":"2015-02-13T20:02:34Z","pushed_at":"2015-02-17T04:21:31Z","git_url":"git://github.com/olinjs/olinjs.git","ssh_url":"git@github.com:olinjs/olinjs.git","clone_url":"https://github.com/olinjs/olinjs.git","svn_url":"https://github.com/olinjs/olinjs","homepage":null,"size":7209,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":39,"mirror_url":null,"open_issues_count":2,"forks":39,"open_issues":2,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/olinjs/olinjs/pulls/80"},"html":{"href":"https://github.com/olinjs/olinjs/pull/80"},"issue":{"href":"https://api.github.com/repos/olinjs/olinjs/issues/80"},"comments":{"href":"https://api.github.com/repos/olinjs/olinjs/issues/80/comments"},"review_comments":{"href":"https://api.github.com/repos/olinjs/olinjs/pulls/80/comments"},"review_comment":{"href":"https://api.github.com/repos/olinjs/olinjs/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/olinjs/olinjs/pulls/80/commits"},"statuses":{"href":"https://api.github.com/repos/olinjs/olinjs/statuses/8b913eb3901c64c28f03f88f929a11b624a8d18c"}}}}