jagomart
digital resources
picture1_Programming Pdf 182482 | Tingne


 152x       Filetype PDF       File size 0.05 MB       Source: fileadmin.cs.lth.se


File: Programming Pdf 182482 | Tingne
andrew hunt dave thomas the pragmatic programmer a comparison with extreme programming magnus tingne d02 lund institute of technology sweden d02mti student lth se 20 feb 07 abstract this paper ...

icon picture PDF Filetype PDF | Posted on 31 Jan 2023 | 2 years ago
Partial capture of text on file.
                           
                           
                           
                           
                           
                           
                           
                 Andrew Hunt & Dave Thomas: 
                  The Pragmatic Programmer 
              A comparison with eXtreme Programming 
             
                       Magnus Tingne 
                 D02, Lund Institute of Technology, Sweden 
                     d02mti@student.lth.se 
                           
                        20 feb -07 
             
             
            Abstract This paper is a short comparison between The Pragmatic 
            Programmer by Andrew Hunt & Dave Thomas and the development 
            method eXtreme Programming, eXtreme Programming is the method 
            used in the course where this paper were written.  
                          1
                            1 Introduction 
                                This comparison was performed as a deep-study in the course 
                            “Coachning av programvaruteam (EDA270)”, a voluntary course in 
                            the “Computer Science and Engineering” program on Lund’s Institute 
                            of Technology, Sweden.  
                                It was performed by reading the book while at the same time 
                                                                       1, XP, would advice you to 
                            thinking about how Extreme Programming
                            do the same thing, for example what the view is on Refactoring in 
                            Hunt & Thomas’ book and what the view is in XP. To make sure that 
                            the XP-methodology was relatively fresh in mind some articles from 
                            the course were also read, see the Reference List for details. 
                                The Pragmatic Programmer is centered on short theory parts which 
                            are almost always ended with a Tip, for instance “Tip 1, “Care About 
                            Your Craft””[1]. This comparison will try to use these tips and 
                            compare them to what XP suggests. All tips can be found in Appendix 
                            A. It is important to remember that the book isn’t a complete 
                            development-method like XP but rather a guide to becoming a better 
                            programmer and writing better software. 
                                We will start by going through the main similarities in section 2 by 
                            going through some of XP’s practices and what Hunt & Thomas’s 
                            view is on those. Then I will add some personal notes on the book 
                            annd the tips in section 3. 
                                 
                                 
                            2 Similarities with XP 
                             
                              2.1 Refactoring 
                                         “Tip 4, “Don’t Live with Broken Windows””[1] 
                                According to Hunt & Thomas the main reason why in inner cities 
                            some buildings are beautiful and clean while others are falling apart is 
                            a broken window. If a broken window is left alone for a significant 
                            period of time the tenants in the building stop caring about their house 
                            and the house start falling apart. 
                                This can be applied to code too, if you leave what in XP is called 
                            “a bad smell” in the code for a long period of time other programmers 
                            will stop caring if their code isn’t that good either and the code will 
                            rapidly decline. 
                                                                             
                            1 “Extreme Programming (XP) is a software engineering methodology, the most 
                            prominent of several agile software development methodologies. Like other agile 
                            methodologies, Extreme Programming differs from traditional methodologies 
                            primarily in placing a higher value on adaptability than on predictability.” [6a] 
                                                               2
                                   Hunt & Thomas suggests that bad code should be fixed 
                               immediately if possible, if there isn’t time it should be put on a board, 
                               commented out or just switched for dummy data until it can be 
                               resolved.  
                                   “Tip 47, “Refactor Early, Refactor Often””[1] 
                                   As soon as you find some code that doesn’t feel right, refactor it. If 
                               you refactor immediately you will get around to it but if you wait 
                               maybe there won’t be time for it before the customer wants it to be 
                               shipped. Then the maintenance will be much harder because the code 
                               isn’t as good as it should be. 
                                   Hunt & Thomas has some suggestions on how to do refactoring, 
                               the main points are: 
                                       •   Never refactor and add functionality at the same time. 
                                       •   Have tests that you can run after to be sure you haven’t 
                                           destroyed anything. 
                                       •   If the refactoring is big, do it in small steps. 
                                   All agile methods embrace refactoring because they know that 
                               changes will occur. Bendix & Ekman [3] has refactoring as one of 
                               their main activities in Software Configuration Management. They 
                               also write that it has to be reversible so one can go back if the 
                               refactoring fails. This is also mentioned by Hunt & Thomas as a good 
                               thing and they suggests always using Source Code Control. We will 
                               get back to this in section 2.3 Reversibility. 
                                    
                                                         2 
                                 2.2 Bad smells in code
                                              “Tip 11, “DRY—Don't Repeat Yourself””[1] 
                                   According to Beck & Fowler [6], one of the worst smells you can 
                               have in your code is code duplication. You should never have the same 
                               code in two places. The main reason for this is since we have fast 
                               changing requirements we never know when we need to change the 
                               code. If we have the same code in several places all these has to be 
                               changed, then it’s not a matter of if but more a matter of when 
                               someone will miss to change the code in one of the places. This could 
                               lead to a lot of problems. 
                                   But neither Beck nor Hunt & Thomas stop there. They say that 
                               there should be no duplication at all, in the code or anywhere else. If 
                               for example you have documentation for the code; that should be 
                               generated from the code instead of written separately (see Code and 
                               Tests in [3]). This way when the code changes you won’t have to 
                               change the documentation too. 
                                                                
                                                                               
                               2 “In the community of computer programming, code smell is any symptom that indicates 
                               something may be wrong. It generally indicates that the code should be refactored or the 
                               overall design should be reexamined. The term appears to have been coined by Kent Beck on 
                               WardsWiki. Usage of the term increased after it was featured in Refactoring. Improving the 
                               Design of Existing Code.” [6b] 
                                                                    3
                                  Bad smells in code is closely connected to refactoring since as 
                              soon as you find something that doesn’t seem right, you should 
                              refactor it. 
                                  Comments in the code is often a bad smell according to Beck & 
                              Fowler, if you see a place where the code has a lot of comments it’s 
                              most often because the code isn’t very well implemented. Hunt & 
                              Thomas agrees with this view and says that you should only use 
                              comments in the code to say why and not how. To have a comment 
                              that explains how a thing is implemented is a violation of the DRY-
                              principle. If you change how you implement it you also have to change 
                              the comment. 
                                     “Tip 13, “Eliminate Effects Between Unrelated Things””[1] 
                                  Another bad smell according to Hunt & Thomas is when unrelated 
                              things affect each other. They use an example of flying a helicopter 
                              where moving one lever affects a totally different part. Since we want 
                              our code as simple as possible we don’t want these dependencies. If 
                              we change the code in one place only that part should be affected. 
                                   
                                2.3 Reversibility 
                                             “Tip 14, “There Are No Final Decisions””[1] 
                                  As mentioned earlier it is very important to be able to reverse what 
                              you have done. Most programs have an “Undo” command, but maybe 
                              you don’t find the error that was caused by the change immediately but 
                              instead in a couple of days, what then? 
                                  Another possibility is that you, in the beginning of the project, 
                              decided to use a specific kind of database. But then you get an order 
                              from the customer that you need to use another kind of database. If 
                              you don’t have any reversibility you are in a pickle.  
                                           “Tip 23, “Always Use Source Code Control””[1] 
                                                                                                  3, not 
                                  Hunt & Thomas tells us to always use Source Code Control
                              only when programming. You should even put telephone-lists and 
                              build/release-procedures etc under source code control. This way you 
                              always have a copy of the older versions and can go back if something 
                              goes wrong. Bendix & Ekman agrees with Hunt & Thomas that having 
                              the possibility to recreate an old version of a document is important. In 
                              their article Software Configuration Management in Agile 
                              Development [3] there is a part about Version Control which allows 
                              you to recreate an old version of a document. 
                                                              
                                                                              
                              3 “Revision control (also known as version control, source control or (source) code 
                              management (SCM)) is the management of multiple revisions of the same unit of information. 
                              It is most commonly used in engineering and software development to manage ongoing 
                              development of digital documents like application source code, art resources such as 
                              blueprints or electronic models and other critical information that may be worked on by a team 
                              of people. Changes to these documents are identified by incrementing an associated number or 
                              letter code, termed the "revision number", "revision level", or simply "revision" and associated 
                              historically with the person making the change. A simple form of revision control, for 
                              example, has the initial issue of a drawing assigned the revision number "1". When the first 
                              change is made, the revision number is incremented to "2" and so on.” [6c] 
                                                                  4
The words contained in this file might help you see if this file matches what you are looking for:

...Andrew hunt dave thomas the pragmatic programmer a comparison with extreme programming magnus tingne d lund institute of technology sweden dmti student lth se feb abstract this paper is short between by and development method used in course where were written introduction was performed as deep study coachning av programvaruteam eda voluntary computer science engineering program on s it reading book while at same time xp would advice you to thinking about how do thing for example what view refactoring make sure that methodology relatively fresh mind some articles from also read see reference list details centered theory parts which are almost always ended tip instance care your craft will try use these tips compare them suggests all can be found appendix important remember isn t complete like but rather guide becoming better writing software we start going through main similarities section practices those then i add personal notes annd don live broken windows according reason why inner ...

no reviews yet
Please Login to review.