Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen –

Similar presentations


Presentation on theme: "Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen –"— Presentation transcript:

1 Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen – hic@cc.gatech.eduhic@cc.gatech.edu

2 Outline  Introduction  Distribution of systems  Packaging and transfer of systems  Summary

3 Introduction  Many systems are not very portable to new environments  The challenges are multiple  What is a good way to distribute code?  What are good ways to package code for sharing?  What about all the extra dependencies?  What the tools and mechanisms available to address this?

4 Code distribution  Local  RCS – Revision Control Systems  SVN – Subversion  Global  Sourceforge – the open source repository  Codeplex – The Microsoft site for Code Sharing  Basecamp is also starting to see traffic (Ruby on rails type of site)

5 RCS / SVN  Tracking revision management of code  RCS – the “old” way of doing revision management  Stores revision info in files (and repository)  Poor handling of revision conflicts (file locking)  SVN  Uses DB to store revision information  Without DB difficult to track revisions  Not as easy to tag files  Excellent conflict management for check-in  Has a better network based interface with web interfaces  Both have releases and revisions.

6 Internet repositories  Provides easy organization of projects  Homepage with overview information  Code page repositories  Discussion Forum  Issue Tracker  Major revision management is easy  Easy for use with distributed teams

7 Internet repositories

8  Includes typically mechanisms for  SVN repository across a community  Discussion group for community engagement  Issue tracker  Explicit list with issues and status of addressing these  Documentation  Some have automated mechanisms for document generation  Typically using a variation of doxygen

9 Doxygen  Automatic mechanism for embedding of documentation in code.  “Simple” comments allow automated generation of key documentation  This is not a replacement for design documents but a nice what to provide detailed documentation of the actual code  Quite effective for many languages  C++, C#, Java, …

10 Doxygen Process

11 Doxygen  Direct embedding of comments  /** *... text... */  Enable generation of documentation  Has “tags” that can be used for augment documentation  /*! \class Test \brief A test class. A more detailed class description. */  Easy to use across systems

12 Consider migration issues  Moving software between versions.  RDS enable easy migration between versions  DssProjectMigration enables upgrading and downgrading between versions. Also has functions for modifying files to match different versions of Visual Studio Project files.  Relatively easy to migrate between versions  Does 90% of the job

13 Packaging of files for compatibility  Files are typically packed in archives using your favorite archive manager.  Tar (Tape archive) -> tar files or compressed tar tgz  Zip -> Zip archives incl winzip/zip/unzip  Jar -> Java Archives similar to tar but with a java basis  In RDS there is also a dedicated archive program for DSS application – DssDeploy. It was designed to simplify portability across machines

14 Some of the issues  Applications are installed at different locations  C:\users\hic\MSRDS-R2\ or /usr/local/src  Libraries are also installed at different location  Dynamic link libraries will cause headaches  They are term DLL’s in Windows and.so files on Linux/Mac  The loadpath has to be organized to make sure you link against the correct libraries.  Especially on multi-architecture systems such as mixed 32/64 bit this can be a challenge  A careful directory hierarchy is a good start

15 Handling some of the issues  Different systems have different solutions  Java – ANT and Loadpath  Linux / C++ typically configure scripts  Windows / Configure and DssDeploy  Use of environment variables is an old tradition to organize systems  PATH, LOADPATH, LD_LIBRARY_PATH, …. MSR_ROOT  Through use of environment variables it is easier to provide migration

16 Configure / Autoconf  Derived from the GNU toolchain  Configure and configure.in specifies required “features” of a host system  Autoconf is used to derive make files for use with make to compile an application  There are a variety of derived systems designed for automatic generation of build files  The basic idea  Specify required features for the application  Use tools to automatically find and configure compile scripts  Build the application using generated scripts.  Effective even for complex applications

17 DssDeploy  Allow distribution of packages to other computers.  Two models for distribution  Distributed of binaries for execution in a client with RDS installed  Distribution of source and key DLL files for reuse on another client  Several models for distribution  Name files on the command line  Generation of a text file with files names  Ex use Dir /b/o:n/s > dir.txt to generate a raw file  Edit the file to include those to be included.  Add /d: at start of all lines

18 DssDeploy  Example from the PromRDS book (Chapter 2)  # Chapter 2 Deploy Options File  # All Chapter files should follow the same basic format  # Include the deploy options file for later repackaging  /d:”..\Package\DeployChapter2Options.txt”  # Chapter Readme.htm and associated files  /d:”..\Chapter2\Readme.htm”  /d:”..\Chapter2\images\*”  /d:”..\Chapter2\styles\*.css”  # Add the Batch files to run the applications in this chapter  #/d:”..\BatchFiles\xxxx.cmd”  # Add the Config files for the applications (if any)  # and the Manifests  …

19 DssDeploy  Simple script to distribute files from PromRDS (BuildChapterPackage.cmd)  @echo off  echo Build a single chapter for ProMRDS  if “%1” == “” goto usage  if not exist DeployChapter%1Options.txt goto noopts ..\..\bin\dssdeploy /p /e+ /cv+ /s- /n:”ProMRDS Chapter %1 Package”  /r:”..\Chapter%1\Readme.htm” @DeployChapter%1Options.txt ProMRDSChapter%1.exe  copy ProMRDSChapter%1.exe c:\temp  copy /Y ProMRDSChapter%1.exe ProMRDSChapter%1.exe.safe  goto end  :usage  echo Usage: BuildChapterPackage num  echo where num is the Chapter number  :noopts  echo DeployChapternumOptions.txt file must already exist  :end

20 DssDeploy  The corresponding exe file can be run on a new computer with RDS installed  Run file  Will unpack files into directory hierarchy  Will run DssProjectMigration  Display readme.htm in the web browser (good for delivery of extra installation information)  For source files you have to check the configuration options and the path for project files

21 Visual Studio Considerations  There is a need to edit a number of project properties to make files compile  Open the solutions file  Right click on the application icon and select properties  In the properties box  What version of.NET are you using. Typically 3.5  Under built make sure you have the correct output path  Under build events make sure the post build path is correct?  Under debug is the correct program path specified?  Under reference paths do you have the right base directory?  On the next slide is a simple example of the expected screen picture

22 Properties Box

23 Moving projects  Best solution is to rebuild on each machine  Make sure you have dependencies covered  Use DssDeploy to do 90% of the job  Edit paths in the project properties file to ensure compile  The editing of the files should be relative easy to do  For now the preferred solution is still use of Visual Studio 2008 for easy migration across projects with RDS R3

24 Acknowledgement  This series of lectures has been developed with generous support from the Microsoft Corporation as part of the project “Software Engineering in Robotics” Contract # 113873. The support is gratefully acknowledged.


Download ppt "Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen –"

Similar presentations


Ads by Google