1.2 System Design Basics
Components of a computer system Hardware Software Peripheral Network Human resource
Scenario The library needs a way of keeping track which students have come into the library in the morning, during lunch, and after school What components are needed in the solution’s system? Computer Software / application / website Keyboard / Mouse / Touchpad Network (optional?) Database (optional?) Librarian
What are stakeholders? Stakeholder - Scenario: The library check-in system Stakeholders – people with a vested interest; people who are impacted E.g. librarians, administration, students; teachers
Stakeholders’ Requirements What are different ways to obtain requirements from stakeholders? Ask them Surveys Questionnaires Interviews Watch them / observations
What other ways are there to gather information to solve the problem? Background research Pre-existing documents Look at other solutions
System Design Cycle Analysis Design Implementation Operation Collect and examine data Analyze current system and data flow Design Plan your system, its data flow, data structures, algorithms, and modules Implementation Schedule implementation goals and milestones Testing Operation Installing the system How to use it? (documentation!) Maintenance Finding bugs and patching them How and why is it cyclical? What steps are the end-user involved in? Why? Cyclical because the process would be repeated for the next version of the system End-user should be involved in all steps Earlier feedback is better and saves money
Prototyping A very simple version of the system Preliminary solution ~ a prototype! Prototype used to get feedback before you spend too much time building the actual system Example: storyboarding a movie
Implementation Testing User acceptance testing Testing the system if it handles all of the end-user requirements Example: Go through checklist of requirements and the system has it all Example: Giving it automated test data and matching it to expected results Debugging Fixing your code when you test different types of data (normal, abnormal, extreme) Beta testing End-user testing obtain feedback and crash reports
Different installation processes Direct changeover Phased conversion Pilot running Parallel running What are the advantages/disadvantages of each? Direct changeover + quick, cheap, saves money - risky, no backup if it fails, no transition time Phased conversion + less risky, more time to transition and test out parts - more expensive Pilot running + test out system with a small group first; receive feedback before larger deployment - pilot group must try to use new system Parallel running + old system still runs as a backup; compare results of new system with old system - expensive b/c running both systems at the same time
What are the different ways to maintain/update the system? Automatic Manual Hybrid of the two (automatic check with manual confirmation)
User Documentation What is it? Why is it important? What are different ways to provide user documentation? (e.g. help files) Advantages/Disadvantages of each? Any documentation for the user to learn how to use the system User manual / printed manuals Help files On-line support Tutorials
User Training What are different ways to train your user? Advantages/Disadvantages of each? In-person / Formal classes + live help and feedback - expensive Remote training + training can be received anywhere from a remote instructor - harder to interact with teacher On-line learning + training can be accessed at any time at user’s pace - not able to receive feedback from a human Self-instruction + training can be done at any time at user’s pace
What is usability? Usability – Usability ~ ease of use and learnability of a human-made thing
Examples of things that improved usability Mouse Touchscreens Graphical User Interface System messages with feedback
What are examples of bad usability? Messy / busy / cluttered user interfaces Hard to hit targets Unintuitive menus and design
Usability Guidelines http://www.nngroup.com/articles/ten-usability-heuristics/