Troubleshooting Skills

advertisement
Troubleshooting Skill 1.
What is troubleshooting Troubleshooting is a process which ranges from the identification of problem symptoms to determining and implementing the action required to fix that problem” (Schaafstal, Schraagen, & Berlo, 2000). Troubleshooting skill can be contextualized in various domains like electrical circuits, computer programs (where it is called debugging) and mechanical systems but in this article we are restricting to Computer Networks as the primary domain and computer programming as the secondary domain. 1.1 Importance of troubleshooting skill IT professionals, doctors and mechanics are required to troubleshoot or diagnose complex situations in their everyday life. Especially for IT professionals, with the evolution of technology, the environment/systems that have to be troubleshot changes. The users of the technology might be expected to adapt soon to the new environments. Therefore it is necessary to teach troubleshooting as a pan domain skill. Existing teaching practices for IT professionals are focussed more on betterment of correct practices (for example: best practices of programming) and less on correcting errors. Teaching them a systematic way of correcting errors is required. In order to do this, we need to understand abstract, domain independent tasks and the cognitive mechanisms that constitute troubleshooting. These tasks and mechanisms are explained in the next section. 1.2 Sub-­‐Skills Troubleshooting is a complex skill which constitutes the following sub-­‐skills. 1.
2.
3.
4.
Problem space representation – would lead to functional understanding Hypotheses generation and linking – would lead to and based on functional understanding Experimenting and Comparison – enables switching between tree and forest Reflection – metacognitive aid These sub-­‐skills are obtained from many authors and synthesized in the following form so that it is meaningful in a broad way and also in computer networks. 2.
Broad Learning objectives for Troubleshooting skill If you have to teach troubleshooting as a skill, the following broad learning objectives will be useful. These learning objectives define the type of tasks that a student should ideally perform in order to achieve each sub-­‐skill. 1. Problem space representation – Students would be able to a. Identify the relevant component s b. Identify the functions of each components and relationship between them 2. Hypotheses generation and linking –Students would be able to a. Generate hypothesis & link hypothesis to corresponding component/link b. Prioritize hypotheses 3. Experimenting and Comparison – Students would be able to a. Decide what is to be measured b. Predict the outcome of the experiment according to chosen hypothesis c. Design an experiment i.
Deciding how to do observations ii.
Conduct the experiment & get outcomes d. Compare predicted and obtained outcome e. Decide next action (Fault found or test a new hypothesis) 4. Reflection – Students would be able to a. Compare an expert solution with your solution Next we will see how these sub-­‐skills are manifested in different domains but still the nature of tasks that the students should perform would remain same. We conjecture that this will help in teching troubleshooting skill. 3.
Contextualizing troubleshooting for a domain -­‐ Computer Networks 1. Problem space representation a. Identify the relevant component s – i. Identify the network devices and links that should be operational b. Identify the functions of each components and relationship between them – i. Identify the function of each of the network devices at different levels Ex: Level 1: A router’s function is to forward packets Level 2: A router forwards packets based on routing algorithms like OSPF Level 3: A router has to be configured with some parameters – subnet mask, DNS server etc ii. Identify the links/connections between the devices 2. Hypotheses generation a. Generate testable hypotheses i.
Generate testable hypotheses corresponding to the network error b. Prioritize hypotheses i.
Select the optimal hypothesis according to the problem where optimal hypothesis might be the one which is simple to test or which eliminates many other hypotheses etc. 3. Experimenting and Comparison a. Decide what is to be measured i.
Decide whether the link is up or not, a device is configured correct or not etc. b. Predict the outcome of the experiment according to chosen hypothesis i.
Predict the status of the link or configuration of a network device etc c. Design an experiment iii.
Decide how to do observations a.
Decide whether you need to do some manual tests or to run some software iv.
Conduct the experiment & get outcomes a.
Manually perform tests and get outcome or get outcomes via the software d. Compare predicted and obtained outcome i.
Check if the predicted and obtained outputs match or not e. Decide next action (Fault found or test a new hypothesis) 4. Reflection – metacognitive aid a. Compare an expert solution with your solution 4. Contextualizing troubleshooting for a domain – Object oriented Programming 1. Problem space representation a. Identify the relevant component s i. Identify the classes which gets called during the execution of the program b. Identify the functions of each components and relationship between them – i. Identify the relevant functions in each classes, the order in which they have to be called, access specifiers of the functions 2. Hypotheses generation a. Generate testable hypotheses i. Generate testable hypotheses corresponding to the error and program b. Prioritize hypotheses i. Select the optimal hypothesis according to the problem where optimal hypothesis might be the one which is simple to test or which eliminates many other hypotheses etc. 3. Experimenting and Comparison a. Decide what is to be measured i. Decide whether it is the value of a variable or return value of a function etc. b. Predict the outcome of the experiment according to chosen hypothesis i. Predict the value of the variable or the return value of the function c. Design an experiment v.
Decide how to do observations a.
Decide whether to check a log or to execute the program again or to run few more test cases etc. vi.
Conduct the experiment & get outcomes a.
Check the log or execute the program again or run few more test cases and get the data needed. d. Compare predicted and obtained outcome i. Check if the predicted and obtained outputs match or not e. Decide next action 4. Reflection – metacognitive aid a. Compare an expert solution with your solution 5. Guidelines for choosing a topic to teach troubleshooting We mentioned that troubleshooting is a pan-­‐domain skill. So it can be taught using many domains. However, here are few guidelines to choose an appropriate topic to teach troubleshooting: •
•
•
•
The topic should be about some kind of working/faulty system. The systems should have sub-­‐systems or components and the components should have attributable behaviour The components should have predictable input and outputs It should be possible/meaningful to do experiments with components 
Download