diff --git a/.gitignore b/.gitignore index 4e5d6e8..ca1b1f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.pdf +*.swp bld diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..6bf8894 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,21 @@ +sudo: false +language: haskell + +cache: +- apt + +addons: + apt: + packages: + - imagemagick + - texlive-full + +install: + - cabal install cabal-install + - cabal update + - cabal install pandoc --reorder-goals + - cabal install pandoc-citeproc --reorder-goals + +script: + - pandoc --version + - make full diff --git a/src/paper.md b/src/paper.md index 710a271..e960f1f 100644 --- a/src/paper.md +++ b/src/paper.md @@ -1,25 +1,26 @@ ---- +------ title: "Debugging" subtitle: "What you should know as developer" author: Ben Spoor -date: March 2, 2016 -lang: en-US +date: March 2, 2016 +lang: english reference-section-title: References bibliography: src/reference.bib keywords: debugging geometry: margin=2cm ---- +------ + ![Altran](bld/altran_logo.pdf "Altan logo"){ width=30% } -# Introduction -According to Google Scholar [@google2016], there are more then 10,000 articles that mention 'Debugging' in their title. +# Introduction +According to Google Scholar [@google2016], there are more than 10,000 articles that mention 'Debugging' in their title. With such an amount of research on this topic, it is a pity it is still not adequatly addressed in programming texts [@mccauley2008debugging]. Research by Cambridge university shows developers spend around 50% of their time finding and fixing bugs [@britton2013reversible]. This paper presents the debugging basis to become more effective at it. -## You're probably non-structured debugger +## You're probably non-structured debugger If you are a novice, there is a good chance you are using non-structered methods to debug programs. [SOURCE] Education currently lacks proper instruction of debugging. [SOURCE] You might not even be a novice. [SOURCE] @@ -30,7 +31,7 @@ But debugging can also be as quick as 1 minute, when trying to find the source o A majority of good debuggers are also good programmers, but not vice-versa. [SOURCE] ## What is debugging? -There is trouble shooting and problem solving, problems cause trouble. +There is trouble shooting and problem solving, problems cause trouble. You can reduce the trouble, but to prevent trouble, solve the problem. Debugging is thus problem solving. @@ -67,7 +68,7 @@ One of the biggest challenges is getting the complete state clear of the program If you can reproduce a problem consisttenly, you know when you fixed it as well. #### Collect clues -Collecting clues gives you a first description of the problem. +Collecting clues gives you a first description of the problem. #### Isolate the problem @@ -83,27 +84,27 @@ One of the most challenging parts of solving is problem, is solving the right pr ### Don't make assumptions A common mistake made is misrepresenting a problem [Psychology of problem solving]. -For instance, I have two buckets; one half filled with ice tea and the other half filled with lemonade. +For instance, I have two buckets; one half filled with ice tea and the other half filled with lemonade. Both the lemonade and the ice tea have equal densities. If I pour the lemonade in the bucket with ice tea. The problem to be solved is that within 5 minutes the two drinks should be seperated again and be placed back in both buckets. -The most common assumption people make is that both are liquids. +The most common assumption people make is that both are liquids. This was never stated anywhere. Just pick up the block of frozen ice tea and place -it back in the other bucket. -The lesson here is to never make an assumption and double check every fact. +it back in the other bucket. +The lesson here is to never make an assumption and double check every fact. ### Proof yourself wrong One of the most powerfull techniques to cover a lot of ground is to always try to proof yourself wrong. When you have an hypothesis of a problem, test or check if you can proof your hypothesis wrong. -It only takes 1 proof to kill an hypothesis, but an infinite amount to proof it right. +It only takes 1 proof to kill an hypothesis, but an infinite amount to proof it right. This is the basis of the scientific method [@popper1959] -For example, all bugs always happen after a certain function is called. +For example, all bugs always happen after a certain function is called. Try to reproduce the problem without calling that function. ### Don't throw out refute hypothesis When a hypothesis proves to be wrong, also keep track of this. -The effort is not lost, a set of refuted hypothesis can lead to a correct one. [@araki1991]. +The effort is not lost, a set of refuted hypothesis can lead to a correct one. [@araki1991]. ### Strategies Strategies here, are techniques to isolate the problem to its smallest reproducible form. @@ -149,13 +150,13 @@ The process is repeated until a single component remains. ### Functional The functional method is the most difficult. Information about the system and its components forms the basis of hypothesis selection (Johnson, 1991). -Various types of functional search exist as well. Basing a hypothesis on known +Various types of functional search exist as well. Basing a hypothesis on known system behavior and expected outcomes is the basic type of functional search. Problem solvers can also construct a "runnable" mental model of the system in which the fault conditions are simulated (deKleer & Brown, 1981) #### Swaptronics This is the strategy of choice of novices [source]. -(Randomly) swap out parts untill something makes it work. +(Randomly) swap out parts untill something makes it work. This has a very unstructered nature. effective?? [SOURCE] #### Wolf fencing - How to catch a wolf in Alaska @@ -166,7 +167,7 @@ Assert that when the information, or something, transitions from one chunk to an At one of the transistions the information will be different than it should or is expected. Take the chunk, repeat, untill you found the problem. -How do you catch a single wolf in Alaska? +How do you catch a single wolf in Alaska? You build a fence, and listen and divide Alaska in two. You listen on which side you hear the howling, and split up that half. If you continue this long enough, you will catch the wolf. @@ -178,7 +179,7 @@ Your fix should should not fix the symptom, but the root cause. ## Test the solution -# Business Benefits +# Business Benefits This discusses the return on investments, usability, and adherence to standards. Customer quotes are always very helpful. It demonstrates that you are an authority in your field and can back it up with these endorsements. Don't take references for granted - not all your competitors will be able to supply such endorsements. @@ -187,7 +188,7 @@ Don't take references for granted - not all your competitors will be able to sup ## Effects of debugging knowledge -# Summary +# Summary Close the paper with a concise summary of your main points. As many readers will skip the entire document and read this section only, summarize the main selling points about your solution here.