Extreme Programming Unit Testing

Total Page:16

File Type:pdf, Size:1020Kb

Extreme Programming Unit Testing Programming Tools Lecture Plan for Group Projects ● Unit testing ● Version control ● Building Richard Smith ● Debugging [email protected] – Logging ● Documenting – Code – Reports 1 2 Biased General advice ● Use a Unix based operating system – Solaris in the labs – Mac OS X if you are buying a laptop – Install Linux if you have a PC at home Unit testing ● Learn how to do everything using the command line, then use an IDE! – Xemacs – difficult to learn, but integrates well with command line and has modes for everything – Eclipse – easier to learn, specialised for Java ● Use Java or C++ or 'script' (Python, Ruby, Perl) as appropriate 3 4 Background: Extreme Unit Testing Programming ● Pair programming ● Write tests before code. ● Small releases ● Code not done until tests all run. ● Metaphor ● Re-run tests after any major changes ● Simple design ● Can be confident that nothing has ● Testing broken. ● Refactoring ● Hence not afraid to refactor. www.extremeprogramming.org 5 6 Tools for Testing Installing CPPUnit ● Some functional tests can be manual. ● We use GNU compiler on Unix-like OS (Linux, FreeBSD) ● Possible to automate most tests. ● wget http://aleron.dl.sourceforge.net/sourceforge/cppunit/cppuni ● Tools exist to make this easy and t-1.10.2.tar.gz provide GUI. ● tar xvfz cppunit-1.10.2.tar.gz ● cd cppunit-1.10.2 ● Java – JUnit – www.junit.org ● ./configure; make ● C++ – CPPunit – cppunit.sf.net ● su -c 'make install' ● su -c 'ldconfig' ● Installation of GUI library is a bit more complicated :-( 7 8 Or you can use mine! C++ Example ● bash ● Class diagram ● export LD_LIBRARY_PATH=/cs/research/nets/home/marine/ucacrts /g2/local/lib ● export PATH=/cs/research/nets/home/marine/ucacrts/g2/local/b in:$PATH 9 10 C++ Example C++ Example Cat.h Animal. #ifndef CAT_H h#ifndef ANIMAL_H #define CAT_H ● Source files (arrows show includes) #define ANIMAL_H #include "Animal.h" class Animal{ ● Additional includes class Cat: public Animal{ public: are not necessary, public: virtual int getNoOfLegs(); but are allowed, virtual int getNoOfLegs(); }; because of }; #endif #IFNDEF guards #endif Animal.cpp Cat.cpp #include "Animal.h" #include "Cat.h" int Animal::getNoOfLegs(){ int Cat::getNoOfLegs(){ return 0; return 5; } } 11 12 C++ Example C++ Example TestCat.h #ifndef TESTCAT_H TestCat.cpp #define TESTCAT_H #include "TestCat.h" #include <cppunit/extensions/HelperMacros.h> #include "Cat.h" CPPUNIT_TEST_SUITE_REGISTRATION( TestCat ); class TestCat: public CPPUNIT_NS::TestFixture{ void TestCat::testLegs(){ CPPUNIT_TEST_SUITE(TestCat); Cat cat; CPPUNIT_TEST(testLegs); CPPUNIT_ASSERT_EQUAL(4, cat.getNoOfLegs()); CPPUNIT_TEST_SUITE_END(); } public: void setUp(); void TestCat::setUp(){ protected: } void testLegs(); }; #endif 13 14 C++ Example CPPUnit Output Options runtest.cp #pinclude <cppunit/TextTestRunner.h> ● TestRunner with CompilerOutputter – #include "TestCat.h" prints results suitable for use with IDE int main( int argc, char* argv[] ) { ● with XMLOutputter – results as XML CppUnit::TextTestRunner runner; runner.addTest(TestCat::suite()); document for processing by another bool result = runner.run("TestCat::testLegs", true, true, true); return result ? 0 : 1; application } ● TextTestRunner – human readable $> g++ -O2 -o runtest Animal.cpp Cat.cpp TestCat.cpp output runtest.cpp -ldl -lcppunit ● QtTestRunner – output in GUI ● (MfcTestRunner, WxTestRunner) 15 16 TextTestRunner Output Success $> ./runtest .F $> ./runtest . !!!FAILURES!!! Test Results: OK (1 tests) Run: 1 Failures: 1 Errors: 0 <RETURN> to continue 1) test: TestCat::testLegs (F) line: 7 TestCat.cpp equality assertion failed - Expected: 4 - Actual : 5 17 18 Installing CPPUnit QT QT GUI Example ● Install tmake from runtestgui.cpp #include <qapplication.h> ftp.trolltech.com/freebies/tmake #define QTTESTRUNNER_API __declspec(dllimport) #include <cppunit/ui/qt/TestRunner.h> ● After installing cppunit: #include "TestCat.h" ● cd src/qttestrunner int main( int argc, char* argv[] ) { ● TMAKEPATH=/usr/lib/tmake/linux-g++ tmake QApplication app( argc, argv ); qttestrunner.pro -o makefile CppUnit::QtTestRunner runner; runner.addTest( TestCat::suite() ); ● make runner.run(true); ● su -c 'cp -d ../../lib/* /usr/local/lib' return 0; } ● su -c 'ldconfig' 19 20 QT GUI QT GUI Results $> g++ -O2 -o runtestgui Animal.cpp Cat.cpp TestCat.cpp runtestgui.cpp -L/usr/qt/3/lib -I/ usr/qt/3/include -lqt-mt -ldl -lcppunit -lqttestrunner 21 22 Java Example Java Example Animal.java ● Source files (no #includes!) class Animal{ public int getNoOfLegs(){ return 0; } } Cat.java class Cat extends Animal{ public int getNoOfLegs(){ return 5; } } 23 24 Java Example JUnit Output Options TestCat.java ● We don't need to write a tester import junit.framework.*; program – provided program will load public class TestCat extends TestCase{ our class at run-time. ● junit.textui.TestRunner – text output public void testLegs(){ Cat cat = new Cat(); ● junit.awtui.TestRunner – GUI output Assert.assertEquals(4, cat.getNoOfLegs()); } ● junit.swingui.TestRunner – Nicer GUI output protected void setUp(){} } ● Further options, such as XML output, provided by Ant. 25 26 JUnit Example JUnit Results $> java junit.textui.TestRunner TestCat ● javac TestCat.java .F Time: 0.006 ● Invoking JUnit is much easier than There was 1 failure: 1) testLegs(TestCat)junit.framework.AssertionFailedError: CPPUnit. expected:<4> but was:<5> at TestCat.testLegs(TestCat.java:7) ● TestRunner programs are provided at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) which load your bytecode via reflection, at sun.reflect.NativeMethodAccessorImpl.invoke no need to compile your own runners. (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke ● java junit.textui.TestRunner TestCat (DelegatingMethodAccessorImpl.java:25) ● java junit.awtui.TestRunner TestCat FAILURES!!! Tests run: 1, Failures: 1, Errors: 0 ● java junit.swingui.TestRunner TestCat 27 28 JUnit GUI JUnit GUI Results 29 30 Questions? Building 31 32 Building Make ● Large projects consist of many source ● GNU Make is the most popular tool to files which must be compiled in the solve this problem. correct order. ● You write 'Makefile' which describes all ● This can take hours. If only a few files the dependencies between the source have been edited, we don't need to files. recompile the whole lot. ● You run Make which then runs compiler ● But how do we know which ones to for you. recompile? ● Only files that have changed (and their dependants) are recompiled. 33 34 Make: additional benefits Makefile rules ● Makefile stores info (e.g. flags) making it ● <target>: <dependencies> easy for others to compile your program. <action> ● If you want to change all flags, e.g. to add ● Note the second line must be indented debug info, only one change needed. with a tab (not spaces) ● Make can invoke any command, not just ● compiler. target – name of object file (usually) ● ● Common uses: installation, removing object dependencies – list of other targets files, generating docs, packaging releases ● action – command to update target 35 36 C++ Dependency Tree Make Behaviour ● A target is up-to-date if – a file of the name exists – none of the files listed as dependencies were modified since it was last updated – all its dependencies are up-to-date ● If it is not up-to-date, first its dependencies are updated (recursively), then it is updated, by executing action. ● Make begins by bringing up-to-date the target named on the command line. If none is supplied, Make uses the first target in the Makefile. 37 38 Makefile Implicit rules ● Make is (slightly) intelligent – it can infer obvious runtest: Animal.o Cat.o TestCat.o runtest.o actions. g++ runtest.o TestCat.o Cat.o Animal.o -o runtest -ldl -lcppunit runtestgui: Animal.o Cat.o TestCat.o runtestgui.o ● blah.o: blah.c g++ runtestgui.cpp TestCat.o Cat.o Animal.o -o runtestgui -ldl \ -lcppunit -L/usr/qt/3/lib -lqt-mt -lqttestrunner implies blah.o: blah.c Animal.o: Animal.cpp Animal.h gcc -c -o blah.o blah.c g++ Animal.cpp -c -o Animal.o Cat.o: Cat.cpp Cat.h Animal.h ● If you do not specify any rule for a dependency, g++ Cat.cpp -c -o Cat.o Make will search its list of implicit rules and TestCat.o: TestCat.cpp TestCat.h Cat.h g++ TestCat.cpp -c -o TestCat.o attempt to find one that will produce the needed runtest.o: TestCat.h runtest.cpp file. g++ runtest.cpp -c -o runtest.o runtestgui.o: TestCat.h ● Thus you can use Make with no Makefile at all! g++ runtestgui.cpp -c -o runtestgui.o -I/usr/qt/3/include $> make test 39 gcc -o test test.c 40 Environment Variables Pseudo-targets ● Inherited from shell environment ● Pseudo-targets are not files, and hence can never be up-to-date. Specifying a pseudo-target ● Define: MY_VAR = some text on the command line will always force make to ● update the listed dependencies and execute the Use: $(MY_VAR) action. ● Implicit rules make use of many ● Common pseudo-targets variables, e.g. – default (must be first target) to specify which – CFLAGS – options for C compiler components are built when no arguments are given – LDFLAGS – options for linker – clean to delete all object files 41 42 Improved Makefile OBJECTS = Animal.o Cat.o TestCat.o Other uses for Make LDFLAGS = -ldl -lcppunit -L/usr/qt/3/lib -lqt-mt -lqttestrunner CPPFLAGS = -I/usr/qt/3/include ● Packaging distribution default: runtest runtestgui ● Running program runtest: $(OBJECTS) runtest.o runtestgui: $(OBJECTS) runtestgui.o ● Running tests automatically Animal.o: Animal.cpp Animal.h ● Cat.o: Cat.cpp Cat.h Animal.h Version control operations TestCat.o: TestCat.cpp TestCat.h Cat.h ● runtest.o: TestCat.h runtest.cpp Running Make again in sub-directories runtestgui.o: TestCat.h runtest.cpp ● Saving you from re-typing long clean: -rm -f $(OBJECTS) runtest.o runtest runtestgui.o runtestgui commands .PHONY: clean 43 44 Java Dependency Tree Makefile generic rules ● Make knows how to compile many languages by default, but it is easy to add new ones. ● %.class : %.java javac $< ● %.pdf : %.ps ps2pdf $< $@ 45 46 Java Makefile Make & Java %.class : %.java javac $< -d /my/classes -sourcepath /my/sources ● Make doesn't support Java by default CLASSPATH=/usr/share/junit/lib/junit.jar:.
Recommended publications
  • Ethereal Developer's Guide Draft 0.0.2 (15684) for Ethereal 0.10.11
    Ethereal Developer's Guide Draft 0.0.2 (15684) for Ethereal 0.10.11 Ulf Lamping, Ethereal Developer's Guide: Draft 0.0.2 (15684) for Ethere- al 0.10.11 by Ulf Lamping Copyright © 2004-2005 Ulf Lamping Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation. All logos and trademarks in this document are property of their respective owner. Table of Contents Preface .............................................................................................................................. vii 1. Foreword ............................................................................................................... vii 2. Who should read this document? ............................................................................... viii 3. Acknowledgements ................................................................................................... ix 4. About this document .................................................................................................. x 5. Where to get the latest copy of this document? ............................................................... xi 6. Providing feedback about this document ...................................................................... xii I. Ethereal Build Environment ................................................................................................14 1. Introduction .............................................................................................................15
    [Show full text]
  • Steve Burnett Education Employment
    Steve Burnett Raleigh NC [email protected] More details and attached recommendations at http://www.linkedin.com/in/steveburnett Education 1992 M.S. Technical Communication, North Carolina State University 1992 Emergency Medical Technician, Wake Technical Community College 1989 B.A. History, B.A. Economics, NCSU Employment Information Developer III, Hewlett-Packard (formerly Opsware) (November 2007 – present) (HP acquired Opsware effective November 2007.) Creating install, user, and administrator guides for HP SAR (Service Automation Reporter, formerly Opsware OMDB) and HP Live Network (formerly TON) on Linux, Solaris, VMware, and Windows platforms. Sole documentation support for OMDB (1.0, had contributing author for the 1.0.2 release), SAR (7.0, 7.50), and HP Live Network (1.0 to 1.30). Provided Web QA for the HP Live Network Portal. Tools: FrameMaker 7, WebWorks, ClearCase, subversion, RapidSVN, Eclipse, Bugzilla, HP Quality Center, Collabnet, BIRT Report Designer, WebEx, MS SharePoint. Senior Technical Writer, Opsware (January – November 2007) Created install, user, and administrator guides for Opsware OMDB (Operational Management Database) and TON (The Opsware Network) on Linux, Solaris, and Windows platforms. Worked with Technical Support on CMS selection. Tools: FrameMaker 7, WebWorks, ClearCase, subversion, Bugzilla, Quality Center, Collabnet, BIRT Report Designer, WebEx. Technical Writer, SAS Institute (contract, Apex Systems) (November 2005 – January 2007) SAS Technical Support: Internal and external documentation. Tools: SAS, SIRIUS, SOS. SAS R&D: Internal and external documentation. Tools: SAS, WebLogic, Xythos, SQL. Systems Administrator, SAS Institute (contract, Apex Systems) (March – September 2005) SAS Solutions: Provided Linux, Windows, Solaris, and HP-UX server system administration, technical support, and internal training for an ASP (application service provider) team.
    [Show full text]
  • How to Cheat at Configuring Open Source Security Tools
    436_XSS_FM.qxd 4/20/07 1:18 PM Page ii 441_HTC_OS_FM.qxd 4/12/07 1:32 PM Page i Visit us at www.syngress.com Syngress is committed to publishing high-quality books for IT Professionals and deliv- ering those books in media and formats that fit the demands of our customers. We are also committed to extending the utility of the book you purchase via additional mate- rials available from our Web site. SOLUTIONS WEB SITE To register your book, visit www.syngress.com/solutions. Once registered, you can access our [email protected] Web pages. There you may find an assortment of value- added features such as free e-books related to the topic of this book, URLs of related Web sites, FAQs from the book, corrections, and any updates from the author(s). ULTIMATE CDs Our Ultimate CD product line offers our readers budget-conscious compilations of some of our best-selling backlist titles in Adobe PDF form. These CDs are the perfect way to extend your reference library on key topics pertaining to your area of expertise, including Cisco Engineering, Microsoft Windows System Administration, CyberCrime Investigation, Open Source Security, and Firewall Configuration, to name a few. DOWNLOADABLE E-BOOKS For readers who can’t wait for hard copy, we offer most of our titles in downloadable Adobe PDF form. These e-books are often available weeks before hard copies, and are priced affordably. SYNGRESS OUTLET Our outlet store at syngress.com features overstocked, out-of-print, or slightly hurt books at significant savings. SITE LICENSING Syngress has a well-established program for site licensing our e-books onto servers in corporations, educational institutions, and large organizations.
    [Show full text]
  • Version Control with Subversion for Subversion 1.1 (Book Compiled from Revision 1337)
    Version Control with Subversion For Subversion 1.1 (book compiled from Revision 1337) Ben Collins-Sussman Brian W. Fitzpatrick C. Michael Pilato Version Control with Subversion: For Subversion 1.1: (book com- piled from Revision 1337) by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato Published (TBA) Copyright © 2002, 2003, 2004, 2005 Ben Collins-SussmanBrian W. FitzpatrickC. Michael Pilato This work is licensed under the Creative Commons Attribution License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Table of Contents Foreword......................................................................................................................................11 Preface.........................................................................................................................................13 Audience ..............................................................................................................................13 How to Read this Book ........................................................................................................... 13 Conventions Used in This Book ................................................................................................ 14 TypographicConventions ................................................................................................14 Icons ...........................................................................................................................14
    [Show full text]
  • Version Control with Subversion Draft Revision 8263
    Version Control with Subversion Draft Revision 8263 Ben Collins-Sussman Brian W. Fitzpatrick C. Michael Pilato Version Control with Subversion: Draft Revision 8263 by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato Published (TBA) Table of Contents Preface.........................................................................................................................................11 Audience ..............................................................................................................................11 How to Read this Book ........................................................................................................... 11 Conventions Used in This Book ................................................................................................ 12 ThisBookisFree ...................................................................................................................12 Acknowledgments ..................................................................................................................12 1.Introduction ...............................................................................................................................1 What is Subversion? ...............................................................................................................1 Subversion'sHistory ...............................................................................................................1 Subversion'sFeatures ..............................................................................................................1
    [Show full text]
  • Version Control with Subversion Revision 10061
    Version Control with Subversion Revision 10061 by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato Version Control with Subversion: Revision 10061 by Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato Published (TBA) Copyright © 2002, 2003, 2004 Ben Collins-SussmanBrian W. FitzpatrickC. Michael Pilato This work is licensed under the Creative Commons Attribution License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Table of Contents Foreword...................................................................................................................................... Preface......................................................................................................................................... Audience ..............................................................................................................................13 How to Read this Book ........................................................................................................... 13 Conventions Used in This Book ................................................................................................ 14 TypographicConventions ................................................................................................14 Icons ...........................................................................................................................14 Organization of This
    [Show full text]
  • Wireshark Developer's Guide 26808 for Wireshark 1.0.0
    Wireshark Developer's Guide 26808 for Wireshark 1.0.0 Ulf Lamping, Wireshark Developer's Guide: 26808 for Wireshark 1.0.0 by Ulf Lamping Copyright © 2004-2008 Ulf Lamping Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation. All logos and trademarks in this document are property of their respective owner. Table of Contents Preface ............................................................................................................. viii 1. Foreword .............................................................................................. viii 2. Who should read this document? ................................................................. ix 3. Acknowledgements .................................................................................... x 4. About this document ................................................................................. xi 5. Where to get the latest copy of this document? .............................................. xii 6. Providing feedback about this document ..................................................... xiii I. Wireshark Build Environment ............................................................................... 1 1. Introduction .............................................................................................. 2 1.1. Introduction ................................................................................... 2 1.2. What
    [Show full text]
  • Lecture 4 Getting Started with ITK! Goals for This Lecture
    Lecture 4 Getting Started with ITK! Methods in MediCal Image Analysis - Spring 2020 16-725 (CMU RI) : BioE 2630 (Pitt) Dr. John Galeotti Based in part on Damion Shelton’s slides from 2006 This work by John Galeotti and Damion Shelton, © 2004-2020, was made possible in part by NIH NLM ContraCt# HHSN276201000580P, and is licensed under a Creative Commons Attribution 3.0 Unported LiCense. To view a Copy of this license, visit http://creativecommons.org/liCenses/by/3.0/ or send a letter to Creative Commons, 171 2nd Street, Suite 300, San 1 FranCisCo, California, 94105, USA. Permissions beyond the sCope of this liCense may be available by emailing [email protected]. The most recent version of these slides may be accessed online via http://itk.galeotti.net/ 1 Goals for this leCture §Compile, Compile, Compile § Learn how to use SVN & CMake § Build ITK § Compile several programs that use ITK §Find documentation online §Learn the quirks (if any) of the system you choose to use 2 2 1 Getting help §Email your instruCtor §Join the insight-users mailing list; instructions are at http://www.itk.org 3 3 Assignments §Collaboration is encouraged; unless told otherwise, feel free to disCuss assignments with other students §But… please submit your own code - don’t Copy and paste stuff from friends; see syllabus for details §More so than other Classes, you will be learning teChniques that translate direCtly to the real world - don’t Cheat yourself 4 4 2 Grading of assignments §Grading Criteria: § Does it aCComplish the speCified task? § Is it well commented? Follow the “6 month rule” - if you leave for 6 months, you should be able to piCk up where you left off.
    [Show full text]
  • Pragmatic Guide to Subversion
    Download from Wow! eBook <www.wowebook.com> What Readers Are Saying About Pragmatic Guide to Subversion Mike has been around the block with Subversion and knows the toolset intimately. Just as importantly, he’s seen firsthand how it’s used on real projects. Those two aspects come together in this book with the fundamen- tals of source control with Subversion, guided by real-world, pragmatic (of course!) experience. As a Subversion user and occasional noob, this is the book I want to guide me day to day and dig me out of those irksome holes. Jim W e b b e r Author, REST in Practice I really like the organization of the book. I found Pragmatic Guide to Sub- version to be v e r y easy to read, and it really gets the information across in an engaging way. This book is clear, concise, and comprehensive. It’s an indispensable reference for anyone working with Subversion. Ian Bourke Independent software developer, UK A good digest of Subversion’s capabilities. The author’s writing style is terse yet conversational, and the book progressed nicely from basic topics to those more advanced. Overall, I think the book is an e x c e l l e n t follow-up to Pragmatic V e r s i o n Control Using Subversion. Graham Nash Retlang, Message-based concurrency in .NET This is a book worth having since the “full” Pragmatic Subversion book is too big for e v e r y developer on a team to read. I was a fan of Mike’s original Subversion book, and he’s carried on the style into this pocket reference.
    [Show full text]
  • Version Control Tutorial Using Tortoisesvn and Tortoisegit
    Version Control Tutorial using TortoiseSVN and TortoiseGit Christopher J. Roy, Professor Virginia Tech, [email protected] This tutorial can be found at: https://www.aoe.vt.edu/content/dam/aoe_vt_edu/people/faculty/cjroy/Software- Resources/tortoise-svn-git-tutorial.pdf Software engineering is critical for accurate and reliable simulation codes in scientific computing. However, most scientists and engineers receive little or no formal training in software engineering. Configuration management is an important component of software engineering which deals with the control and management of software products. The key aspects include using version (or revision) control for source code and other software artifacts, recording and tracking issues with the software, and ensuring backups are made. This tutorial will focus on the first of these: software version control. While most software engineering practices are critical only for large software development efforts, every software project, regardless of how large or small, should use a version control system for the source code. Version Control Version control tracks changes to source code or any other files. A good version control system can tell you what was changed, who changed it, and when it was changed. 1 It allows a software developer to undo any changes to the code, going back to any prior version, release, or date. This can be particularly helpful when a researcher is trying to reproduce results from an earlier paper or report and merely requires documentation of the version number. Version control also provides a mechanism for incorporating changes from multiple developers, an essential feature for large software projects or any projects with geographically remote developers.
    [Show full text]
  • Version Control of LATEX Documents with Svn-Multi
    The PracTEX Journal, 2007, No. 3 Article revision 2007/08/07 Version Control of LATEX Documents with svn-multi Martin Scharrer Email [email protected] Website http://www.scharrer-online.de/latex/ Abstract This paper describes how to use the software Subversion to version control your LATEX files while also placing the current revision information in your document using the package svn-multi (v1.3 or later). It covers all steps needed to setup and use Subversion, and to manage multi-file documents. Usage examples are provided to show the basic and advanced features to allow the reader to get the most out of the package. 1 Introduction to Version Control Most people working with source code, whether it is a software programming language, markup languages like HTML/XML or in our case LATEX, face the problem on how to organise their code when it spans over an increasing number of files. Backups should be created in order to roll back changes and to rescue lost data. Nontrivial changes should be logged and important revisions should be marked so they can be found at a later stage. Also when multiple people work on the same source code simultaneously their changes must be synchronized to ensure that their changes are not overwritten unintentionally. This is the point where a Version Control software should be used. Version Control (VC), which is also called Revision or Source Control, manages your files, directories, and the changes made to them. For this all created revisions are stored in a repository which can be envisaged as a special kind of database.
    [Show full text]
  • Secure Content Distribution Using Untrusted Servers Kevin Fu
    Secure content distribution using untrusted servers Kevin Fu MIT Computer Science and Artificial Intelligence Lab in collaboration with M. Frans Kaashoek (MIT), Mahesh Kallahalla (DoCoMo Labs), Seny Kamara (JHU), Yoshi Kohno (UCSD), David Mazières (NYU), Raj Rajagopalan (HP Labs), Ron Rivest (MIT), Ram Swaminathan (HP Labs) For Peter Szolovits slide #1 January-April 2005 How do we distribute content? For Peter Szolovits slide #2 January-April 2005 We pay services For Peter Szolovits slide #3 January-April 2005 We coerce friends For Peter Szolovits slide #4 January-April 2005 We coerce friends For Peter Szolovits slide #4 January-April 2005 We enlist volunteers For Peter Szolovits slide #5 January-April 2005 Fast content distribution, so what’s left? • Clients want ◦ Authenticated content ◦ Example: software updates, virus scanners • Publishers want ◦ Access control ◦ Example: online newspapers But what if • Servers are untrusted • Malicious parties control the network For Peter Szolovits slide #6 January-April 2005 Taxonomy of content Content Many-writer Single-writer General purpose file systems Many-reader Single-reader Content distribution Personal storage Public Private For Peter Szolovits slide #7 January-April 2005 Framework • Publishers write➜ content, manage keys • Clients read/verify➜ content, trust publisher • Untrusted servers replicate➜ content • File system protects➜ data and metadata For Peter Szolovits slide #8 January-April 2005 Contributions • Authenticated content distribution SFSRO➜ ◦ Self-certifying File System Read-Only
    [Show full text]