Software Architecture, Process and Management Tools for Software Projects
|
|
- Nathan Byrd
- 5 years ago
- Views:
Transcription
1 Software Architecture, Process and Management Tools for Software Projects Allan Clark School of Informatics University of Edinburgh Semester Two
2 Previous Lecture s Estimation Exercise Recall from the previous lecture I asked you all to estimate how long it would take to complete a given task I asked how long you estimate a developer would take, stating that the developer needn t be yourself I meant a suitable developer, in other words if you didn t think you personally could complete the task because you lack certain skills you could think of a more appropriate developer But I didn t say this
3 Previous Lecture s Estimation Exercise To remind you all of the task in question: Write a Java to HTML translator It needn t do any error detection/correction But nor need it translate invalid JAVA You cannot use an existing one, but you can use libraries for parsing text or even parsing Java itself.
4 Turan If you have very low estimate, one way of testing/showing your estimate is to have a go at some code Linus Torvalds: Talk is cheap, show me the code
5 Turan If you have very low estimate, one way of testing/showing your estimate is to have a go at some code Linus Torvalds: Talk is cheap, show me the code However, Turan obviously thought this was a bit easy so he decided to do this using only his right hand He didn t say whether he was right-handed or not He also chose to do this in a single-file Obviously that gave him a huge advantage and surely more than made up for using a single hand Although I do not yet have the data to back up this claim
6 Turan 6:15 pm Started working on the project. I decided to implement it in JavaScript so that it would be easy to see HTML results. 6:18 pm I already have a simple UI, textarea for Java source input, button To HTML and output area. Time to get these components working! I thought it will make sense to start with getting Java keywords (public, final, catch, while) highlighted. I googled java keywords, got their list from Oracle web site. First idea was to tokenize everything using space character as a separator. Then go through the tokens and if any of them match just surround them with. 6:31 pm After few fails, keywords are being successfully processed now.
7 Turan 6:45 pm Next step: Strings. As we know that Java code will always be valid, it could be easily implemented with regex. 6:50 pm Done! got keywords and strings highlighted. Next: detect annotations, classes, constants (mostly using Java code style convention). 7:20 pm Great! Everything seems working! Testing Time! 7:31 pm Comments.. are really tricky.. /* foo / int i; / bar */ 7:31-8:20 pm Some RegEx magic and comments are also working! 8:20-8:45 pm More testing minor fixes
8 Turan These time comments available at: You can try out his code here: A single HTML file with Javascript and CSS injected NTS (not too shabby) As an aside, both those urls (and most others) are valid Java 1 public static void main(string[] args) 2 { 3 System.out.println ("An inserted url"); System.out.println ("compiles Ok!"); 6 } Line comments on a line of their own were failing for me
9 Some Java Code 1 public boolean[] sieveoferatosthenes(int max){ 2 3 boolean[] primecandidates = new boolean[max]; //defaults to false 4 for(int i=2; i<max; i++ ){primecandidates[i]=true;} 5 6 for(int i=2; i<math.sqrt(max);i++){ 7 if(primecandidates[i] == true){ 8 //all multiples of i*i, except i, are not primecandidates 9 for(int j = i + i; j<max; j=j+i){ 10 primecandidates[j]=false; 11 } 12 } } 15 return primecandidates; 16 }
10 Some Java Code 1 public boolean[] sieveoferatosthenes(int max){ 2 3 boolean[] primecandidates = new boolean[max]; //defaults to false 4 for(int i=2; i<max; i++ ){primecandidates[i]=true;} 5 6 for(int i=2; i<math.sqrt(max);i++){ 7 if(primecandidates[i] == true){ 8 //all multiples of i*i, except i, are not primecandidates 9 for(int j = i + i; j<max; j=j+i){ 10 primecandidates[j]=false; 11 } 12 } } 15 return primecandidates; 16 }
11 1 Some Similar Java Code 2 public boolean[]sieveoferatosthenes(int max){boolean[] primecandidates 3 = new boolean[max]; /*defaults to false*/ for(int i=2; i<max; i++ 4 ){primecandidates[i]=true;} for(int i=2; i<math.sqrt(max);i++){ 5 if(primecandidates[i] == true){ /*all multiples of i*i, except i, 6 are not primecandidates*/ for(int j = i + i; j<max; j=j+i){ 7 primecandidates[j]=false;}}} return primecandidates;}
12 1 Perfectly Valid Formatted Output 2 public boolean[]sieveoferatosthenes(int max){boolean[] primecandidates 3 = new boolean[max]; /*defaults to false*/ for(int i=2; i<max; i++ 4 ){primecandidates[i]=true;} for(int i=2; i<math.sqrt(max);i++){ 5 if(primecandidates[i] == true){ /*all multiples of i*i, except i, 6 are not primecandidates*/ for(int j = i + i; j<max; j=j+i){ 7 primecandidates[j]=false;}}} return primecandidates;}
13 Alternative Perfectly Valid Formatted Output 1 public boolean[] sieveoferatosthenes(int max){ 2 3 boolean[] primecandidates = new boolean[max]; //defaults to false 4 for(int i=2; i<max; i++ ){primecandidates[i]=true;} 5 6 for(int i=2; i<math.sqrt(max);i++){ 7 if(primecandidates[i] == true){ 8 //all multiples of i*i, except i, are not primecandidates 9 for(int j = i + i; j<max; j=j+i){ 10 primecandidates[j]=false; 11 } 12 } } 15 return primecandidates; 16 }
14 Did the experiment work? Mostly yes: I had feared that the lowest estimate would be 3 days and the highest 5 days This would not have made my point at all In the end, I didn t have much to fear the highest and lowest estimates were: 8 hours 1 year Even if we take 1 year to mean it is still an estimate that is 48 5 = 240 times the lowest estimate Neither of these are bad estimates
15 Did the experiment work? Estimates vary wildly These are not necessarily caused by either estimator being poor at estimating how long a given task will take (though most of us are indeed poor at that) It is not necessarily caused by a difference in the competence/suitability/required knowledge of the two estimators (though this can be a large factor) Often it is caused by the two estimators simply thinking of two different sets of requirements One may be thinking of production quality code One may be thinking of a rough first attempt that allows other parts of the project dependent upon it to start Almost any estimate could be made correct by decreasing/increasing the scope/quality/function/performance
16 Today s Topic Let s get back on talk about tools for software projects Recall the rabbit hutch Remind me again how many of you think you could build this or something similar?
17 Do you own one of these?
18 Do you own one of these? and one of these?
19 Automating Drudgery Most of the techniques we ll talk about can benefit from automated tools, and some would be totally impractical without them e.g. the continual code changes involved in Extreme Programming Discussing all relevant tools is outside of the scope of this course. We will look at a few extremely useful categories, focusing on baseline open-source packages that everyone should be using unless their organisation has something better. We primarily consider useful individual tools, not integrated project management suites, because they are more widely applicable. That isn t to say project management suites aren t useful. Here though we wish to highlight the individual components that are useful on their own merit (outside of any integrated project management suite)
20 Tool Types Version control (e.g. Git) Build control (e.g. make) Debuggers (e.g. gdb) Unit/regression testing (e.g. JUnit) Bug/issue tracking (e.g. Trac) Documentation generation (e.g. JavaDoc) Project management (e.g. MS Project) Integrated suites (e.g. RUP) Others
21 1st Step: Version Control Before starting any project (programming or otherwise!) with edits occuring over more than a couple of weeks, you should set up a version control system If you do not, you deserve every one of the many troubles that will be coming your way Version control or conguration management systems like Git, Mercurial, or Subversion track and manage changes during development and maintenance of any long-lived set of files. They tell you who changed what, when.
22 Basic Version Control Features Have separate repository holding all versions of all files Changes in local copies do not affect the repository until a commit (a.k.a. checkin) Commits merge your changes with the repository files Locking or merge mechanisms prevent or resolve collisions between users Can provide complete history of all changes, reproducing state at any time and tracking who changed what when
23 /* * 12/ 26/ 93 ( seiwald ) - allow NOTIME targets to be expanded * 01/ 04/ 94 ( seiwald ) - print all targets, bounded, when tra * 12/ 20/ 94 ( seiwald ) - NOTIME renamed NOTFILE. * 12/ 17/ 02 ( seiwald ) - new copysettings () to protect target * 01/ 03/ 03 ( seiwald ) - T_ FATE_ NEWER once again gets set wit * 01/ 14/ 03 ( seiwald ) - fix includes fix with new internal i * 04/ 04/ 03 ( seiwald ) - fix INTERNAL node binding to avoid T */
24 Managing Software Releases Any decent company will have version control already Release to the public: modified snapshot of repository Typical sequence for a release: 1. Feature freeze (only bugfixes allowed now) 2. Release candidate (could ship if bug-free) 3. Candidate sent to testing team 4. Bugs are found, patched ; new release candidate Typically there are different code branches maintained at least production and development but often feature branches as well
25 3 Generations of Version Control 1972 Single file system Locking ensures only one person at a time edits any file Nearly unusable for multiple developers Examples: RCS, SCCS, VSS ($$) 1985 Realisation: file merging works! No need for locking Just merge later Allows multiple distributed developers or just separate copies Examples: CVS, Subversion 2002 Realisation: repository merging works! Distributed Version Constrol System no need for one central repository repositories and not just files can be merged as needed Useful even for single developers to handle independent sets of changes separately Examples: Git, Mercurial, bzr, Bitkeeper ($$)
26 Which Version Control Tool To Use? Surely everyone is already using VC for your own projects, even when not required? If not, set one up today and try using it for a few weeks The de-facto standard has changed from RCS to CVS to Subversion and now to... Post-Subversion there was market fragmentation with many 3rd-generation DVCS tools, but Git and Mercurial seem to be coming out on top. github is, in some quarters, becoming a substitute for a CV Mercurial has an excellent tutorial: Others like bzr, Codeville, SVK, darcs, arch/tla, ArX, fossil and monotone seem to have less market share, but perhaps its too early to tell.
27 Integrated Version Control Businesses often use commercial version control tools such as: IBM Rational ClearCase Microsoft VSS Borland StarTeam Except for possibly Bitkeeper, the revision control portions of these systems tend to be quite outdated and much harder to use than necessary What large commercial tools do often offer is a workow that is tightly integrated into a larger process model, of which version control is only a part. Various programs also help put a pretty face on version control, such as TortoiseCVS and TortoiseSVN (integrating version control into Windows) Emacs and Eclipse (integrating version control into editing and development)
28 Git Blame $ git blame sbsi_ numeric_ devel / Template / main_ Model. c 352 c44 ( ntsorman : 03: ) # ifndef NO_ 352 c44 ( ntsorman : 03: ) # include 352 c44 ( ntsorman : 03: ) # endif 352 c44 ( ntsorman : 03: ) ( allanderek : 24: ) # include < Ma 352 c44 ( ntsorman : 03: )
29 Build Control Build control tools like make automate the process of generating an executable or compiled version of a program or other file or document from source files: UNIX> make cc -c file1.c cc -c file2.c cc -o a.out file1.o file2.o UNIX> Does everyone know how to use make/gmake or ant? Does everyone actually use them or tools like them for your own projects even when not required to do so?
30 Build Control is not Scripting Proper build control programs like make are not the same as scripting tools like Apple s Automator They don t simply replay a series of actions but instead encode a complex web of dependencies so that only the next appropriate actions are taken (based on datestamps). That is, if your build process has 4,356 steps, and it is failing on step 3,963, make will start the build process at step 3,963 each time it runs, rather than doing the first 3,962 tasks over again from the beginning. This is the main advantage of something like make over simpler scripting or build control tools.
31 Other Build Control Tools Java s ant is more portable in some sense, though it is not as widely used apart from Java projects Python/Ruby/etc have a variety of build tools For more complicated projects needing to compile across many UNIX-like systems, consider autoconf/automake These are becoming outdated I have a bit of a problem with infrequently used DSLs Integrated development environments (IDEs) like Visual Studio and Eclipse usually replace makefiles with project files but those are not as easily shareable to other systems Note that build control is not just for compiling, it s for at least: making releases generating documentation running tests automating any other complex task! Goal: don t do anything by hand more than 3 times
32 Debuggers/Profilers Debuggers allow you to: Step through code line by line Set break points Allow state to be examined or changed They are essential for C/C++, but extremely useful even for interpreted languages Many IDEs include integrated debuggers, but there are separate command-line debuggers: gdb, jdb, pdb, etc. and many graphical ones: ddd, Insight, etc Profilers tell you where the time and memory are spent in your application If you optimise without a profiler there is a 99.9% chance you are wasting your time
33 Unit/Regression Testing Unit/regression testing frameworks make testing easy to do habitually, which makes everyones life easier and is required by Extreme Programming, as well see JUnit was developed for Extreme Programming on Java, based on a Smalltalk original It has been ported to many other languages: pyunit (Python), CppUnit (C++), NUnit (.NET), etc. There are also addons such as: Coverlipse to check Java code coverage QuickCheck to generate test cases in Haskell doctest to run tests embedded in doc strings
34 Unit Tests 1... deep amoungst complex matrix operations... 2 for (int i = 0; i < something.height; i++){ 3 for (int j = 0; j < something.width; i++){ 4... complex code... 5 x = blah[j] + bleg[i]; 6 j = some_function(i); 7 z = blerger[i] + blerger[j]; 8... more complex code; 9 } 10 }
35 Bug/Issue Tracking Any software package with a decent-sized userbase will generate a lot of bug reports, complaints, and feature requests Bug/issue tracking software keeps track of all of those for you without it many fall through the cracks or end up dominating all your time and concentration. There is no standard, but Trac, GNATS, and BugZilla/ IssueTracker are widely used free tools also: Mantis, TestTrack Pro (Seapine $$) If your code is hosted at a site with an integrated configuration management package like SourceForge, github or google code it will come with bug/issue tracking.
36 Bugs vs Features Question: How do I distinguish between a bug report and a feature request?
37 Bugs vs Features Question: How do I distinguish between a bug report and a feature request? Answer: Don t In either case, the software isn t doing what your user(s) want(s) it to do: Either you think it is worthwhile and feasible to fix that state of affairs or you don t Everything is an issue, important factors are: Severity Urgency Priority Effort to fix Consequences of fixing (e.g. using more memory)
38 Document Generation No one actually writes documentation consistently, so it always gets out of sync with code similarly for comments Documentation generation software like JavaDoc (Java), NDoc (.NET), PHPDoc (PHP), and Doxygen (C++, C, Java, etc.) automatically generates documentation from your source code and comments Most of it is guaranteed to be up to date, and if developers know their comments are going to be used as-is for the reference manual then they won t consider it wasted effort to update their comments when the code changes
39 Generated Documentation Traps Even though generated documentation is often quite impressive looking, it is crucial for a human to go over it eventually to make sure it is also readable Often the result is nearly unusable because it is repetitive, lacks context, and is missing crucial transitions between sections It takes several passes between the source code comments and the generated output to make it all work ok Note that only reference manuals can be generated: user manuals must be written from scratch with the user in mind, and should never simply mirror the structure of the code.
40 Project Management Keeping track of all the sub-tasks in a large project, such as: who they are assigned to in what order they have to be done how long each will take is a pain (at best) Project management software like Microsoft Project ($$) helps with this Main feature: automatic Gannt charts and PERT charts Basecamp ($$) is a bit more ambitious: adding distributed time tracking Also many free programs, such as: Planner, GanttProject, KPlato, etc
41 Integrated Suites For open-source projects, integrated suites like GitHub and Google Code Hosting are freely available that do all the above and add (at least): Document release management Binary le release management Web hosting Discussion forums/ lists Proprietary workflow/process management tools like the IBM Rational Unied Process suite and Cruise Control (builds, runs tests, publishes results) are even more ambitious Integrated packages are great if you need most of their features; separate tools can be used at any time. Fogcreek offers several products such as kiln which are something of a half-way house between fully integrated and separate tools (in this case source code control and code review)
42 The Joel Test Is a substitute for a 6 month long approach for determining how good your software team is 12 yes/no questions No, difficult measurements: lines of code, average lines per bug etc
43 The Joel Test 1. Do you use source code control? 2. Can you make a build in one step? 3. Do you make daily builds? 4. Do you have a bug database? 5. Do you fix bugs before writing new code? 6. Do you have an up-to-date schedule? 7. Do you have a spec? 8. Do programmers have quiet working conditions? 9. Do you use the best tools money can buy? 10. Do you have testers? 11. Do new candidates write code during their interview? 12. Do you do hallway usability testing?
44 : The Joel Test Do you use source code control? If not, stop what you are doing, because whatever it is, you re doing it wrong Without source code control, multiple developers will not be able to work together Even if you could, SCC is so simple to set up Even for single developers being able to see previous versions is wonderful for bug-finding (amongst other things)
45 : The Joel Test Can you make a build in one step? Is there one step, that can build every kind of executable, all the documentation, all the various versions and platform-dependent releases Anything that takes more than one step can be messed up
46 : The Joel Test Do you make daily builds? Sometimes someone breaks the build A common mistake is to add a new source file and forget to add it to the source code control Everything works/compiles on the single person s machine but that file is missing from the repository and hence any references break the build for others A daily/hourly build catches these mistakes sooner rather than later Some teams have punishments for breaking the build, such as that the offender must babysit the buildbot or becomes the coffee-mule
47 : The Joel Test Do you have a bug database? If not, you will ship low quality code Even if you are single developer You are also likely to work on low-priority items
48 : The Joel Test Do you fix bugs before writing new code? Remember the feature matrix? The longer you wait before fixing a bug, the costlier it is to fix in both time and money
49 : The Joel Test Do you have an up-to-date schedule? I know writing a schedule is hard but sometimes other things depend on your code It keeps a tab on featuritis and helps decide what does and what does not go in
50 : The Joel Test Do you have a spec? Nobody disagrees with the statement: It s a good idea to have a spec I warned you about coding requiring good communication, writing a spec is good communication
51 : The Joel Test Do programmers have quiet working conditions? Speaks for itself Interesting read on the worst time to interrupt a programmer: programmer-interrupted/ A programmer takes between minutes to start editing code after resuming work from an interruption. When interrupted during an edit of a method, only 10% of times did a programmer resume work in less than a minute
52 : The Joel Test Do you use the best tools money can buy? Programmers are expensive, software isn t that expensive This doesn t mean to say that the best is necessarily expensive
53 : The Joel Test Do you have testers? A tester is cheaper than a programmer, don t pay a programmer to test Similar to asking a surgeon to take over a nurse s shift for a week but still pay the them the surgeon s salary
54 : The Joel Test Do new candidates write code during their interview? A couple of blog-posts about this went viral around 6 years ago Write a program that prints the numbers from 1 to 100. But for multiples of three print Fizz instead of the number and for the multiples of five print Buzz. For numbers which are multiples of both three and five print FizzBuzz. Numbers vary, but essentially a majority of those applying for programming jobs cannot do this
55 : The Joel Test Do you do hallway usability testing? Not overly relevant for us, but: Hallway usability testing: Grab the next person that walks past your office/desk Ask them to use the code you just wrote 5-6 people will tell you 95% of what there is to learn about usability problems in your code
56 The Joel Test Related to Tool Usage? 1. Do you use source code control? 2. Can you make a build in one step? 3. Do you make daily builds? 4. Do you have a bug database? 5. Do you fix bugs before writing new code? 6. Do you have an up-to-date schedule? 7. Do you have a spec? 8. Do programmers have quiet working conditions? 9. Do you use the best tools money can buy? 10. Do you have testers? 11. Do new candidates write code during their interview? 12. Do you do hallway usability testing?
57 The Joel Test As an aside, any of these questions are good questions to ask of any company you are interviewing Note, the interview can be as much you examining them as they examining you
58 Summary Every sane person should be using version control and build control tools Unit/regression testing is good and much easier with the right framework Bug/issue tracking can stop you from going mad Documentation generation is great, but does not eliminate hand cleanup At least use these tools until you find something better For a big list of project management tools for Linux, see The individual tools are not that important, but it is important that you use something for each of these tasks and that you know they exist
59 Related Reading Required Reading Eric S. Raymond. Understanding Version-Control Systems, 2007 update Of course, dates and details of specific tools are not examinable Martin Fowler. Continuous Integration, 2006 update Suggested Reading Sebastien Auvray. Distributed Version Control Systems: A Not-So-Quick Guide Through, 2008 Linas Vepstas. Call Center, Bug Tracking and Project Management Tools for Linux, 2002 update Ben Collins-Sussman et al. Version Control with Subversion, Chapter 1, Fundamental Concepts.
60 Any Questions Any Questions? Next time there might be a slightly longer quiz so please bring something to write on, even if that is just your phone, but it will probably be easier with a pen and paper.
Tools for SW Projects
Tools for SW Projects Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar SAPM Spring 2012: Tools 1 Automating Drudgery Most of the techniques we ll talk about can benefit from
More informationTools for SW Projects
Tools for SW Projects Massimo Felici and Conrad Hughes mfelici@inf.ed.ac.uk conrad.hughes@ed.ac.uk http://www.inf.ed.ac.uk/teaching/courses/sapm/ Slides: Dr James A. Bednar SAPM Spring 2009: Tools 1 Automating
More informationThe Joel Test: 12 Steps to Better Code.
The Joel Test: 12 Steps to Better Code http://www.joelonsoftware.com/articles/fog0000000043.html The Joel Test In general, a score of
More informationChapter 3. Revision Control
Chapter 3 Revision Control We begin our journey into software engineering before we write a single line of code. Revision control systems (RCSes) such as Subversion or CVS are astoundingly useful for single-developer
More informationThe Joel Test 12 Steps to Better Code
The Joel Test 12 Steps to Better Code Readings The Joel Test (by Joel Spolsky) http://www.joelonsoftware.com/articles/fog0000000 043.html The Joel Test In general, a score of
More informationUsing GitHub to Share with SparkFun a
Using GitHub to Share with SparkFun a learn.sparkfun.com tutorial Available online at: http://sfe.io/t52 Contents Introduction Gitting Started Forking a Repository Committing, Pushing and Pulling Syncing
More informationConstruction: version control and system building
Construction: version control and system building Paul Jackson School of Informatics University of Edinburgh The problem of systems changing Systems are constantly changing through development and use
More informationCase study on PhoneGap / Apache Cordova
Chapter 1 Case study on PhoneGap / Apache Cordova 1.1 Introduction to PhoneGap / Apache Cordova PhoneGap is a free and open source framework that allows you to create mobile applications in a cross platform
More informationTask-Oriented Solutions to Over 175 Common Problems. Covers. Eclipse 3.0. Eclipse CookbookTM. Steve Holzner
Task-Oriented Solutions to Over 175 Common Problems Covers Eclipse 3.0 Eclipse CookbookTM Steve Holzner Chapter CHAPTER 6 6 Using Eclipse in Teams 6.0 Introduction Professional developers frequently work
More informationConstruction: version control and system building
Construction: version control and system building Paul Jackson School of Informatics University of Edinburgh The problem of systems changing Systems are constantly changing through development and use
More informationVersion Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 17, 2018
Version Control Click to edit Master EECS text 2311 styles - Software Development Project Second level Third level Fourth level Fifth level January 17, 2018 1 But first, Screen Readers The software you
More informationTDDC88 Lab 4 Software Configuration Management
TDDC88 Lab 4 Software Configuration Management Introduction "Version control is to programmers what the safety net is to a trapeze artist. Knowing the net is there to catch them if they fall, aerialists
More informationWhat is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)
1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?
More informationCSE 374 Programming Concepts & Tools. Hal Perkins Winter 2012 Lecture 16 Version control and svn
CSE 374 Programming Concepts & Tools Hal Perkins Winter 2012 Lecture 16 Version control and svn Where we are Learning tools and concepts relevant to multi-file, multi-person, multi-platform, multi-month
More informationSECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE
SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE cse331-staff@cs.washington.edu slides borrowed and adapted from Alex Mariakis and CSE 390a OUTLINE Introductions Code Reasoning Version control IDEs
More informationSECTION 2: HW3 Setup.
SECTION 2: HW3 Setup cse331-staff@cs.washington.edu slides borrowed and adapted from Alex Mariakis,CSE 390a,Justin Bare, Deric Pang, Erin Peach, Vinod Rathnam LINKS TO DETAILED SETUP AND USAGE INSTRUCTIONS
More informationCPSC 491. Lecture 19 & 20: Source Code Version Control. VCS = Version Control Software SCM = Source Code Management
CPSC 491 Lecture 19 & 20: Source Code Version Control VCS = Version Control Software SCM = Source Code Management Exercise: Source Code (Version) Control 1. Pretend like you don t have a version control
More informationCS2112 Fall Assignment 4 Parsing and Fault Injection. Due: March 18, 2014 Overview draft due: March 14, 2014
CS2112 Fall 2014 Assignment 4 Parsing and Fault Injection Due: March 18, 2014 Overview draft due: March 14, 2014 Compilers and bug-finding systems operate on source code to produce compiled code and lists
More informationSoftware Tools Subversion
Software Tools Subversion Part II Lecture 4 1 Today s Outline Subversion (SVN) TortoiseSVN Client SVN Tips 2 Subversion (SVN) 3 Subversion (SVN) Centralized open-source VCS; started in 2000 Developed as
More informationThese are notes for the third lecture; if statements and loops.
These are notes for the third lecture; if statements and loops. 1 Yeah, this is going to be the second slide in a lot of lectures. 2 - Dominant language for desktop application development - Most modern
More informationSECTION 2: Loop Reasoning & HW3 Setup
SECTION 2: Loop Reasoning & HW3 Setup cse331-staff@cs.washington.edu Review: Reasoning about loops What is a loop invariant? An assertion that always holds at the top of a loop Why do we need invariants?
More informationExcel Basics: Working with Spreadsheets
Excel Basics: Working with Spreadsheets E 890 / 1 Unravel the Mysteries of Cells, Rows, Ranges, Formulas and More Spreadsheets are all about numbers: they help us keep track of figures and make calculations.
More informationCrash Course in Modernization. A whitepaper from mrc
Crash Course in Modernization A whitepaper from mrc Introduction Modernization is a confusing subject for one main reason: It isn t the same across the board. Different vendors sell different forms of
More informationLaboratorio di Programmazione. Prof. Marco Bertini
Laboratorio di Programmazione Prof. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Code versioning: techniques and tools Software versions All software has multiple versions: Each
More informationSECTION 2: Loop Reasoning & HW3 Setup
SECTION 2: Loop Reasoning & HW3 Setup cse331-staff@cs.washington.edu slides borrowed and adapted from CSE 331 Winter 2018, CSE 391, and many more Review: Reasoning about loops What is a loop invariant?
More informationImplement an ADT while using Subversion
1 Objectives Learn to use Subversion Implement an ADT while using Subversion In this lab, you learn about the version control tool called Subversion and you will implement a Java class given an interface.
More informationSoftware Systems Design. Version control systems and documentation
Software Systems Design Version control systems and documentation Who are we? Krzysztof Kąkol Software Developer Jarosław Świniarski Software Developer Presentation based on materials prepared by Andrzej
More informationDealing with Bugs. Kenneth M. Anderson University of Colorado, Boulder CSCI 5828 Lecture 27 04/21/2009
Dealing with Bugs Kenneth M. Anderson University of Colorado, Boulder CSCI 5828 Lecture 27 04/21/2009 University of Colorado, 2009 1 Goals 2 Review material from Chapter 11 of Pilone & Miles Dealing with
More informationProgramming with Haiku
Programming with Haiku Lesson 4 Written by DarkWyrm All material 2010 DarkWyrm Source Control: What is It? In my early days as a developer on the Haiku project I had troubles on occasion because I had
More informationParticipation Status Report STUDIO ELEMENTS I KATE SOHNG
2015 Participation Status Report STUDIO ELEMENTS I KATE SOHNG Table of Contents I. Wataru... 1 A. JQuery discussion... 1 B. Other JavaScript libraries... 1 C. CakePHP framework... 2 D. Webpage feedback...
More information2/9/2013 LAB OUTLINE INTRODUCTION TO VCS WHY VERSION CONTROL SYSTEM(VCS)? II SENG 371 SOFTWARE EVOLUTION VERSION CONTROL SYSTEMS
SENG 371 SOFTWARE EVOLUTION LAB OUTLINE Introduction to Version Control Systems VERSION CONTROL SYSTEMS Subversion Git and Github 1 Prepared by Pratik Jain 2 INTRODUCTION TO VCS A version control system
More informationClickbank Domination Presents. A case study by Devin Zander. A look into how absolutely easy internet marketing is. Money Mindset Page 1
Presents A case study by Devin Zander A look into how absolutely easy internet marketing is. Money Mindset Page 1 Hey guys! Quick into I m Devin Zander and today I ve got something everybody loves! Me
More informationSource Control. Comp-206 : Introduction to Software Systems Lecture 21. Alexandre Denault Computer Science McGill University Fall 2006
Source Control Comp-206 : Introduction to Software Systems Lecture 21 Alexandre Denault Computer Science McGill University Fall 2006 Source Revision / Control Source Control is about the management of
More informationSection 2: Developer tools and you. Alex Mariakakis (staff-wide)
Section 2: Developer tools and you Alex Mariakakis cse331-staff@cs.washington.edu (staff-wide) What is an SSH client? Uses the secure shell protocol (SSH) to connect to a remote computer o Enables you
More informationLab session 1 Git & Github
Lab session 1 Git & Github Administration Course personnel: Lecturer - Refael Dakar, currentintec@gmail.com TA - Avi Hayoun, hayounav@cs.bgu.ac.il Office hours - Tuesdays, 14:00-16:00 @ 109/37 (might change)
More informationWeek - 01 Lecture - 04 Downloading and installing Python
Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 04 Downloading and
More informationChapter01.fm Page 1 Monday, August 23, :52 PM. Part I of Change. The Mechanics. of Change
Chapter01.fm Page 1 Monday, August 23, 2004 1:52 PM Part I The Mechanics of Change The Mechanics of Change Chapter01.fm Page 2 Monday, August 23, 2004 1:52 PM Chapter01.fm Page 3 Monday, August 23, 2004
More informationSubversion FOUR. 4.1 What is Version Control? 4.2 What is Subversion? Types of Version Control SESSION
SESSION FOUR 4.1 What is Version Control? Subversion Version control or revision control is the management of the evolution of information. Typically it is used in engineering or software development where
More informationMr G s Java Jive. #11: Formatting Numbers
Mr G s Java Jive #11: Formatting Numbers Now that we ve started using double values, we re bound to run into the question of just how many decimal places we want to show. This where we get to deal with
More informationIntro. Scheme Basics. scm> 5 5. scm>
Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if
More informationCSE 333 Lecture 1 - Systems programming
CSE 333 Lecture 1 - Systems programming Hal Perkins Department of Computer Science & Engineering University of Washington Welcome! Today s goals: - introductions - big picture - course syllabus - setting
More information15 Minute Traffic Formula. Contents HOW TO GET MORE TRAFFIC IN 15 MINUTES WITH SEO... 3
Contents HOW TO GET MORE TRAFFIC IN 15 MINUTES WITH SEO... 3 HOW TO TURN YOUR OLD, RUSTY BLOG POSTS INTO A PASSIVE TRAFFIC SYSTEM... 4 HOW I USED THE GOOGLE KEYWORD PLANNER TO GET 11,908 NEW READERS TO
More informationTOP DEVELOPERS MINDSET. All About the 5 Things You Don t Know.
MINDSET TOP DEVELOPERS All About the 5 Things You Don t Know 1 INTRODUCTION Coding and programming are becoming more and more popular as technology advances and computer-based devices become more widespread.
More informationCptS 360 (System Programming) Unit 3: Development Tools
CptS 360 (System Programming) Unit 3: Development Tools Bob Lewis School of Engineering and Applied Sciences Washington State University Spring, 2018 Motivation Using UNIX-style development tools lets
More informationRead & Download (PDF Kindle) Data Structures And Other Objects Using Java (4th Edition)
Read & Download (PDF Kindle) Data Structures And Other Objects Using Java (4th Edition) Data Structures and Other Objects Using Java is a gradual, "just-in-time" introduction to Data Structures for a CS2
More informationData Structures And Other Objects Using Java Download Free (EPUB, PDF)
Data Structures And Other Objects Using Java Download Free (EPUB, PDF) This is the ebook of the printed book and may not include any media, website access codes, or print supplements that may come packaged
More informationPost Experiment Interview Questions
Post Experiment Interview Questions Questions about the Maximum Problem 1. What is this problem statement asking? 2. What is meant by positive integers? 3. What does it mean by the user entering valid
More informationVersion Control for Fun and Profit
Version Control for Fun and Profit Chris Brady Heather Ratcliffe The Angry Penguin, used under creative commons licence from Swantje Hess and Jannis Pohlmann. Warwick RSE 30/11/2017 Version control 30/11/2017
More informationVIDEO 1: WHY SHOULD YOU USE TEMPLATES TO SEND YOUR S?
VIDEO 1: WHY SHOULD YOU USE TEMPLATES TO SEND YOUR EMAILS? Hey, it s Kyle from HubSpot Academy. Let s talk about about email templates. Why should you use templates to send your emails? You probably don
More informationWithin Kodi you can add additional programs called addons. Each of these addons provides access to lots of different types of video content.
There are a lot of misconceptions in the Kodi world about what buffering is, what causes it, why it happens and how to help avoid it. So I wanted to write an article addressing some of the causes of buffering
More informationAnnotation Hammer Venkat Subramaniam (Also published at
Annotation Hammer Venkat Subramaniam venkats@agiledeveloper.com (Also published at http://www.infoq.com) Abstract Annotations in Java 5 provide a very powerful metadata mechanism. Yet, like anything else,
More informationThe name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.
Mr G s Java Jive #2: Yo! Our First Program With this handout you ll write your first program, which we ll call Yo. Programs, Classes, and Objects, Oh My! People regularly refer to Java as a language that
More informationQUICK EXCEL TUTORIAL. The Very Basics
QUICK EXCEL TUTORIAL The Very Basics You Are Here. Titles & Column Headers Merging Cells Text Alignment When we work on spread sheets we often need to have a title and/or header clearly visible. Merge
More informationInf1-OP. Inf1-OP Exam Review. Timothy Hospedales, adapting earlier version by Perdita Stevens and Ewan Klein. March 20, School of Informatics
Inf1-OP Inf1-OP Exam Review Timothy Hospedales, adapting earlier version by Perdita Stevens and Ewan Klein School of Informatics March 20, 2017 Overview Overview of examinable material: Lectures Week 1
More informationIntroduction to Programming
CHAPTER 1 Introduction to Programming Begin at the beginning, and go on till you come to the end: then stop. This method of telling a story is as good today as it was when the King of Hearts prescribed
More informationDESIGNING RESPONSIVE DASHBOARDS. Best Practices for Building Responsive Analytic Applications
DESIGNING RESPONSIVE DASHBOARDS Best Practices for Building Responsive Analytic Applications CONTENTS Responsive Design and Embedded Analytics...1 6 Principles and Best Practices... 2 Tools of the Trade...
More informationWeb Hosting. Important features to consider
Web Hosting Important features to consider Amount of Storage When choosing your web hosting, one of your primary concerns will obviously be How much data can I store? For most small and medium web sites,
More informationLaboratory 1: Eclipse and Karel the Robot
Math 121: Introduction to Computing Handout #2 Laboratory 1: Eclipse and Karel the Robot Your first laboratory task is to use the Eclipse IDE framework ( integrated development environment, and the d also
More informationExercises: Instructions and Advice
Instructions Exercises: Instructions and Advice The exercises in this course are primarily practical programming tasks that are designed to help the student master the intellectual content of the subjects
More informationStrategy. 1. You must do an internal needs analysis before looking at software or creating an ITT
Strategy 1. You must do an internal needs analysis before looking at software or creating an ITT It is very easy to jump straight in and look at database software before considering what your requirements
More informationHere are a couple of warnings to my students who may be here to get a copy of what happened on a day that you missed.
Preface Here are my online notes for my Algebra course that I teach here at Lamar University, although I have to admit that it s been years since I last taught this course. At this point in my career I
More informationMoving from a Paper to Paperless validation effort and how to get the most efficient mix of Manual vs. Automated testing.
Moving from a Paper to Paperless validation effort and how to get the most efficient mix of Manual vs. Automated testing. Overview The desire to use tools to increase validation productivity with the consequent
More informationASYNCHRONOUS PROGRAMMING IN C# 5 WITHOUT USE OF MULTIPLE THREADS
ASYNCHRONOUS PROGRAMMING IN C# 5 WITHOUT USE OF MULTIPLE THREADS Aleš Keprt Department of Informatics, Moravian College Olomouc ales.keprt@mvso.cz ABSTRACT: Asynchrony is a situation when multiple things
More information» How do I Integrate Excel information and objects in Word documents? How Do I... Page 2 of 10 How do I Integrate Excel information and objects in Word documents? Date: July 16th, 2007 Blogger: Scott Lowe
More informationSource Code Control & Bug Tracking
http://home.hit.no/~hansha/?page=software_development O. Widder. (2013). geek&poke. Available: http://geek-and-poke.com Source Code Control & Bug Tracking Hans-Petter Halvorsen O. Widder. (2013). geek&poke.
More informationLecture 19 CSE August You taught me Language, and my profit on t is I know how to curse. William Shakspere, The Tempest, I, ii.
Lecture 19 CSE 110 5 August 1992 You taught me Language, and my profit on t is I know how to curse. William Shakspere, The Tempest, I, ii. 1 Left-Over Language Features Today was the day we saw the last
More informationTable of Laplace Transforms
Table of Laplace Transforms 1 1 2 3 4, p > -1 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Heaviside Function 27 28. Dirac Delta Function 29 30. 31 32. 1 33 34. 35 36. 37 Laplace Transforms
More informationGIT VERSION CONTROL TUTORIAL. William Wu 2014 October 7
GIT VERSION CONTROL TUTORIAL William Wu w@qed.ai 2014 October 7 ABOUT ME Scientific Computing Specialist background: math, cs, ee interests: machine learning, DSP, imaging, data viz, cloud work: various
More informationSOFTWARE CONFIGURATION MANAGEMENT
SOFTWARE CONFIGURATION MANAGEMENT Cape Town SPIN - Albert Visagie - 19 March 2008 Goals Where were we? And get back there reliably. Where are we? How did we get here? Which bugs were fixed in this version?
More informationCategorizing Migrations
What to Migrate? Categorizing Migrations A version control repository contains two distinct types of data. The first type of data is the actual content of the directories and files themselves which are
More informationFROM 4D WRITE TO 4D WRITE PRO INTRODUCTION. Presented by: Achim W. Peschke
4 D S U M M I T 2 0 1 8 FROM 4D WRITE TO 4D WRITE PRO Presented by: Achim W. Peschke INTRODUCTION In this session we will talk to you about the new 4D Write Pro. I think in between everyone knows what
More informationStarting to Program in C++ (Basics & I/O)
Copyright by Bruce A. Draper. 2017, All Rights Reserved. Starting to Program in C++ (Basics & I/O) On Tuesday of this week, we started learning C++ by example. We gave you both the Complex class code and
More informationBiocomputing II Coursework guidance
Biocomputing II Coursework guidance I refer to the database layer as DB, the middle (business logic) layer as BL and the front end graphical interface with CGI scripts as (FE). Standardized file headers
More informationDivisibility Rules and Their Explanations
Divisibility Rules and Their Explanations Increase Your Number Sense These divisibility rules apply to determining the divisibility of a positive integer (1, 2, 3, ) by another positive integer or 0 (although
More informationCS18000: Programming I
CS18000: Programming I Testing Basics 19 April 2010 Prof. Chris Clifton Testing Programs Your programs are getting large and more complex How do you make sure they work? 1. Reason about the program Think
More informationCS354 gdb Tutorial Written by Chris Feilbach
CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that
More informationThe NetBeans IDE is a big file --- a minimum of around 30 MB. After you have downloaded the file, simply execute the file to install the software.
Introduction to Netbeans This document is a brief introduction to writing and compiling a program using the NetBeans Integrated Development Environment (IDE). An IDE is a program that automates and makes
More informationAPPENDIX B. Fortran Hints
APPENDIX B Fortran Hints This appix contains hints on how to find errors in your programs, and how to avoid some common Fortran errors in the first place. The basics on how to invoke the Fortran compiler
More informationVersion control CSE 403
Version control CSE 403 Goals of a version control system Keep a history of your work Explain the purpose of each change Checkpoint specific versions (known good state) Recover specific state (fix bugs,
More informationProgramming assignment A
Programming assignment A ASCII Minesweeper Official release on Feb 14 th at 1pm (Document may change before then without notice) Due 5pm Feb 25 th Minesweeper is computer game that was first written in
More informationReviewing gcc, make, gdb, and Linux Editors 1
Reviewing gcc, make, gdb, and Linux Editors 1 Colin Gordon csgordon@cs.washington.edu University of Washington CSE333 Section 1, 3/31/11 1 Lots of material borrowed from 351/303 slides Colin Gordon (University
More informationClose Your File Template
In every sale there is always a scenario where I can t get someone to respond. No matter what I do. I can t get an answer from them. When people stop responding I use the Permission To. This is one of
More informationCS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 2: SEP. 8TH INSTRUCTOR: JIAYIN WANG
CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 2: SEP. 8TH INSTRUCTOR: JIAYIN WANG 1 Notice Class Website http://www.cs.umb.edu/~jane/cs114/ Reading Assignment Chapter 1: Introduction to Java Programming
More informationAnalysis of the Test Driven Development by Example
Computer Science and Applications 1 (2013) 5-13 Aleksandar Bulajic and Radoslav Stojic The Faculty of Information Technology, Metropolitan University, Belgrade, 11000, Serbia Received: June 18, 2013 /
More informationGet JAVA. I will just tell you what I did (on January 10, 2017). I went to:
Get JAVA To compile programs you need the JDK (Java Development Kit). To RUN programs you need the JRE (Java Runtime Environment). This download will get BOTH of them, so that you will be able to both
More informationChapter 1 Introduction
Chapter 1 Introduction Why I Am Writing This: Why I am I writing a set of tutorials on compilers and how to build them? Well, the idea goes back several years ago when Rapid-Q, one of the best free BASIC
More informationExcel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller
Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller Table of Contents Introduction!... 1 Part 1: Entering Data!... 2 1.a: Typing!... 2 1.b: Editing
More informationStack Machines. Towards Scalable Stack Based Parallelism. 1 of 53. Tutorial Organizer: Dr Chris Crispin-Bailey
1 of 53 Stack Machines Towards Scalable Stack Based Parallelism Tutorial Organizer: Department of Computer Science University of York 2 of 53 Today s Speakers Dr Mark Shannon Dr Huibin Shi 3 of 53 Stack
More informationPortions adapted from A Visual Guide to Version Control. Introduction to CVS
Portions adapted from A Visual Guide to Version Control Introduction to CVS Outline Introduction to Source Code Management & CVS CVS Terminology & Setup Basic commands Checkout, Add, Commit, Diff, Update,
More informationCSE 374 Programming Concepts & Tools
CSE 374 Programming Concepts & Tools Hal Perkins Fall 2017 Lecture 11 gdb and Debugging 1 Administrivia HW4 out now, due next Thursday, Oct. 26, 11 pm: C code and libraries. Some tools: gdb (debugger)
More information9 th CA 2E/CA Plex Worldwide Developer Conference 1
1 Introduction/Welcome Message Organizations that are making major changes to or replatforming an application need to dedicate considerable resources ot the QA effort. In this session we will show best
More informationTHOMAS LATOZA SWE 621 FALL 2018 DESIGN ECOSYSTEMS
THOMAS LATOZA SWE 621 FALL 2018 DESIGN ECOSYSTEMS LOGISTICS HW5 due today Project presentation on 12/6 Review for final on 12/6 2 EXAMPLE: NPM https://twitter.com/garybernhardt/status/1067111872225136640
More informationBrief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as
Brief overview of the topic and myself the 7 VCS used so far (different one each time), still many unused Acts as a time-machine, and almost as contentious as the text editor This talk tries to address
More informationSoftware Design Models, Tools & Processes. Lecture 6: Transition Phase Cecilia Mascolo
Software Design Models, Tools & Processes Lecture 6: Transition Phase Cecilia Mascolo UML Component diagram Component documentation Your own classes should be documented the same way library classes are.
More informationThe Power of Unit Testing and it s impact on your business. Ashish Kumar Vice President, Engineering
The Power of Unit Testing and it s impact on your business Ashish Kumar Vice President, Engineering Agitar Software, 2006 1 The Power of Unit Testing Why Unit Test? The Practical Reality Where do we go
More information(Refer Slide Time 3:31)
Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 5 Logic Simplification In the last lecture we talked about logic functions
More informationEvaluation Guide for ASP.NET Web CMS and Experience Platforms
Evaluation Guide for ASP.NET Web CMS and Experience Platforms CONTENTS Introduction....................... 1 4 Key Differences...2 Architecture:...2 Development Model...3 Content:...4 Database:...4 Bonus:
More information02161: Software Engineering I
02161: Software Engineering I Week 9: Version Control, Software Development Process, and Project Introduction Hubert Baumeister Informatics and Mathematical Modelling Technical University of Denmark Spring
More informationUKNova s Getting Connectable Guide
UKNova s Getting Connectable Guide Version 1.2 2010/03/22 1. WHAT IS "BEING CONNECTABLE" AND WHY DO I NEED IT? Being connectable means being able to give back to others it is the fundamental principle
More informationCSCI0330 Intro Computer Systems Doeppner. Lab 02 - Tools Lab. Due: Sunday, September 23, 2018 at 6:00 PM. 1 Introduction 0.
CSCI0330 Intro Computer Systems Doeppner Lab 02 - Tools Lab Due: Sunday, September 23, 2018 at 6:00 PM 1 Introduction 0 2 Assignment 0 3 gdb 1 3.1 Setting a Breakpoint 2 3.2 Setting a Watchpoint on Local
More information