SlideShare a Scribd company logo
1 of 10
Download to read offline
Open Source Tools and
the Software Engineering
         Process
              Stephen L Arnold
          Gentoo Linux Developer
 sci, dev-tools, comm-fax, ppc, embedded
  Lunch time Tech Talk, January 22, 2009

 stephen.arnold@acm.org   nerdboy@gentoo.org
What Tools?


• Emulators and interface tools
• Configuration / document management
• Text processing – from sed to python
• Documentation and XML tools
• Reverse engineering and design analysis
• Static and dynamic code analysis/profiling
• Compilers, libraries, development environments
• Modeling, workflow, and process support
Basic Analysis Process
• Review/pre-process and configure source
  • Plan branch/tag strategy in advance
  • Checkouts start with head/trunk

• Run metrics and documentation tools
  • Review stats and metrics for required language tools
    and potential problem areas
  • Use doxygen to extract design information

• Define a project
  • Use your favorite editor, IDE, or Eclipse

• Run static analysis tools (add stubs and
  instrument code as needed)
• Determine build/runtime dependencies
Software CM Tools
• Many open source tools available: CVS, SVN,
  Monotone, and more
• Excellent integration with other tools
   • Editors, IDEs, etc
   • Web interfaces, project management
   • Other SCM tools

• Use the tool capabilities to perform:
   • Process support
   • Basic anaylses
   • Peer review
   • Status reporting
Source Code Processing
Stand-alone text-mode tools for statistics, metrics,
and documentation
   • Easy to run and automate
   • Can produce voluminous output

• Statistics and metrics
   • SLOCCount – line counts for multiple languages,
     project statistics
   • CCCC – Statistics and several software metrics

• Documentation and design extraction
   • Doxygen – Source code (API) documentation, software
     design and structure diagrams (many output formats)
   • Robodoc, JavaDoc, other
Projects and Artifacts
• Editor or IDE?    Use what works best...
   • emacs/Xemacs, vi(m), kate, other
   • Eclipse, Anjuta, Jdeveloper, Source Navigator, other

• Analyze developer project files
   • Know what they build against

• Define your own project
   • Source, header files
   • Toolchain and build system
   • Required libraries

• Document the architecture and interfaces
   • Compare to design artifacts
   • Annotate source code
Static Analysis Tools
Variety of tools to choose from depending on
source language:
• Command-line tools, GUI tools, Eclipse plugins
  • Lint-style tools for Fortran, C, C++, etc
     • ftnchek, splint, cppcheck
  • Can incorporate in Makefiles, build hosts

• GUI tools
  • Stand-alone, eg, Grasp, or plugins for existing
    development platforms
• Eclipse (and other) plugins
  • Analysis – PMD, Findbugs, Jlint, CppChecker
  • Modeling – GMF, TOPCASED
  • Metrics, Visualization, Testing, Profiling, more...
Example Java Analysis
Example: Eclipse with Java code
• Configure, count, and document code
  • SVN w/ apache, viewvc, trac, mod_auth_*
  • Doxygen, SLOCCount, CCCC

• Create project
  • Eclipse Ganymede release with full JDT
  • Sun JDK 1.6, PMD, and FindBugs
     • Import sources, add libraries
     • Analyze build errors and any project artifacts
     • Add any additional libs/packages, repeat
  • Configure and run analysis tools
     • Analyze results and adjust as needed
     • Add annotations, modify analysis rules, create reports
Resources
• Statistics and metrics
   • SLOCCount - http://www.dwheeler.com/sloccount/
   • CCCC - http://cccc.sourceforge.net/

• Documentation and design extraction
   • Doxygen - http://www.stack.nl/~dimitri/doxygen/
   • JavaDoc - http://java.sun.com/j2se/javadoc/

• Eclipse - http://www.eclipse.org
   • Plugins - http://www.eclipseplugincentral.com
   • TOPCASED - http://www.topcased.org

• Software engineering tools at tigris.org
   • Subversion, clients, plugins
   • ArgoUML (supports DoDAF notation)
This work is an original work by Stephen L Arnold
<nerdboy@gentoo.org>

<http://dev.gentoo.org/~nerdboy>
Portions copyright 2009 Stephen L Arnold. Some rights reserved.

The Gentoo Linux logo is Copyright 2004 Gentoo Foundation, used with
permission.

This work is licensed under the Creative Commons Attribution-
NonCommercial-ShareAlike License. To view a copy of this license, visit
<http://creativecommons.org/licenses/by-nc-sa/1.0> or send a letter to
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
USA.

Please contact Stephen L Arnold <stephen.arnold@acm.org>
for commercial uses of this work.

More Related Content

Similar to Open Source Tools and the Software Engineering Process

An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...Jean Vanderdonckt
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development SecuritySam Bowne
 
CISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecurityCISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecuritySam Bowne
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development SecuritySam Bowne
 
Reproducible research concepts and tools
Reproducible research concepts and toolsReproducible research concepts and tools
Reproducible research concepts and toolsC. Tobin Magle
 
Apache Arrow at DataEngConf Barcelona 2018
Apache Arrow at DataEngConf Barcelona 2018Apache Arrow at DataEngConf Barcelona 2018
Apache Arrow at DataEngConf Barcelona 2018Wes McKinney
 
Advanced topics in software engineering
Advanced topics in software engineeringAdvanced topics in software engineering
Advanced topics in software engineeringRupesh Vaishnav
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
Code the docs-yu liu
Code the docs-yu liuCode the docs-yu liu
Code the docs-yu liuStreamNative
 
Apache Arrow: Cross-language Development Platform for In-memory Data
Apache Arrow: Cross-language Development Platform for In-memory DataApache Arrow: Cross-language Development Platform for In-memory Data
Apache Arrow: Cross-language Development Platform for In-memory DataWes McKinney
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkSandeep Adwankar
 
Domain Specific Development using T4
Domain Specific Development using T4Domain Specific Development using T4
Domain Specific Development using T4Joubin Najmaie
 
Introduction to python history and platforms
Introduction to python history and platformsIntroduction to python history and platforms
Introduction to python history and platformsKirti Verma
 
How to audit Drupal Sites for performance, content and best practices
How to audit Drupal Sites for performance, content and best practicesHow to audit Drupal Sites for performance, content and best practices
How to audit Drupal Sites for performance, content and best practicesJon Peck
 
computer-science_engineering_principles-of-programming-languages_introduction...
computer-science_engineering_principles-of-programming-languages_introduction...computer-science_engineering_principles-of-programming-languages_introduction...
computer-science_engineering_principles-of-programming-languages_introduction...AshutoshSharma874829
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at ScaleOracle Developers
 

Similar to Open Source Tools and the Software Engineering Process (20)

An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
 
Top 10 python ide
Top 10 python ideTop 10 python ide
Top 10 python ide
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development Security
 
KeithJohnston06212015
KeithJohnston06212015KeithJohnston06212015
KeithJohnston06212015
 
CISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecurityCISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development Security
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development Security
 
Reproducible research concepts and tools
Reproducible research concepts and toolsReproducible research concepts and tools
Reproducible research concepts and tools
 
Apache Arrow at DataEngConf Barcelona 2018
Apache Arrow at DataEngConf Barcelona 2018Apache Arrow at DataEngConf Barcelona 2018
Apache Arrow at DataEngConf Barcelona 2018
 
Advanced topics in software engineering
Advanced topics in software engineeringAdvanced topics in software engineering
Advanced topics in software engineering
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Code the docs-yu liu
Code the docs-yu liuCode the docs-yu liu
Code the docs-yu liu
 
Apache Arrow: Cross-language Development Platform for In-memory Data
Apache Arrow: Cross-language Development Platform for In-memory DataApache Arrow: Cross-language Development Platform for In-memory Data
Apache Arrow: Cross-language Development Platform for In-memory Data
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and Framework
 
Domain Specific Development using T4
Domain Specific Development using T4Domain Specific Development using T4
Domain Specific Development using T4
 
Introduction to python history and platforms
Introduction to python history and platformsIntroduction to python history and platforms
Introduction to python history and platforms
 
Case study
Case studyCase study
Case study
 
How to audit Drupal Sites for performance, content and best practices
How to audit Drupal Sites for performance, content and best practicesHow to audit Drupal Sites for performance, content and best practices
How to audit Drupal Sites for performance, content and best practices
 
computer-science_engineering_principles-of-programming-languages_introduction...
computer-science_engineering_principles-of-programming-languages_introduction...computer-science_engineering_principles-of-programming-languages_introduction...
computer-science_engineering_principles-of-programming-languages_introduction...
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at Scale
 

Open Source Tools and the Software Engineering Process

  • 1. Open Source Tools and the Software Engineering Process Stephen L Arnold Gentoo Linux Developer sci, dev-tools, comm-fax, ppc, embedded Lunch time Tech Talk, January 22, 2009 stephen.arnold@acm.org nerdboy@gentoo.org
  • 2. What Tools? • Emulators and interface tools • Configuration / document management • Text processing – from sed to python • Documentation and XML tools • Reverse engineering and design analysis • Static and dynamic code analysis/profiling • Compilers, libraries, development environments • Modeling, workflow, and process support
  • 3. Basic Analysis Process • Review/pre-process and configure source • Plan branch/tag strategy in advance • Checkouts start with head/trunk • Run metrics and documentation tools • Review stats and metrics for required language tools and potential problem areas • Use doxygen to extract design information • Define a project • Use your favorite editor, IDE, or Eclipse • Run static analysis tools (add stubs and instrument code as needed) • Determine build/runtime dependencies
  • 4. Software CM Tools • Many open source tools available: CVS, SVN, Monotone, and more • Excellent integration with other tools • Editors, IDEs, etc • Web interfaces, project management • Other SCM tools • Use the tool capabilities to perform: • Process support • Basic anaylses • Peer review • Status reporting
  • 5. Source Code Processing Stand-alone text-mode tools for statistics, metrics, and documentation • Easy to run and automate • Can produce voluminous output • Statistics and metrics • SLOCCount – line counts for multiple languages, project statistics • CCCC – Statistics and several software metrics • Documentation and design extraction • Doxygen – Source code (API) documentation, software design and structure diagrams (many output formats) • Robodoc, JavaDoc, other
  • 6. Projects and Artifacts • Editor or IDE? Use what works best... • emacs/Xemacs, vi(m), kate, other • Eclipse, Anjuta, Jdeveloper, Source Navigator, other • Analyze developer project files • Know what they build against • Define your own project • Source, header files • Toolchain and build system • Required libraries • Document the architecture and interfaces • Compare to design artifacts • Annotate source code
  • 7. Static Analysis Tools Variety of tools to choose from depending on source language: • Command-line tools, GUI tools, Eclipse plugins • Lint-style tools for Fortran, C, C++, etc • ftnchek, splint, cppcheck • Can incorporate in Makefiles, build hosts • GUI tools • Stand-alone, eg, Grasp, or plugins for existing development platforms • Eclipse (and other) plugins • Analysis – PMD, Findbugs, Jlint, CppChecker • Modeling – GMF, TOPCASED • Metrics, Visualization, Testing, Profiling, more...
  • 8. Example Java Analysis Example: Eclipse with Java code • Configure, count, and document code • SVN w/ apache, viewvc, trac, mod_auth_* • Doxygen, SLOCCount, CCCC • Create project • Eclipse Ganymede release with full JDT • Sun JDK 1.6, PMD, and FindBugs • Import sources, add libraries • Analyze build errors and any project artifacts • Add any additional libs/packages, repeat • Configure and run analysis tools • Analyze results and adjust as needed • Add annotations, modify analysis rules, create reports
  • 9. Resources • Statistics and metrics • SLOCCount - http://www.dwheeler.com/sloccount/ • CCCC - http://cccc.sourceforge.net/ • Documentation and design extraction • Doxygen - http://www.stack.nl/~dimitri/doxygen/ • JavaDoc - http://java.sun.com/j2se/javadoc/ • Eclipse - http://www.eclipse.org • Plugins - http://www.eclipseplugincentral.com • TOPCASED - http://www.topcased.org • Software engineering tools at tigris.org • Subversion, clients, plugins • ArgoUML (supports DoDAF notation)
  • 10. This work is an original work by Stephen L Arnold <nerdboy@gentoo.org> <http://dev.gentoo.org/~nerdboy> Portions copyright 2009 Stephen L Arnold. Some rights reserved. The Gentoo Linux logo is Copyright 2004 Gentoo Foundation, used with permission. This work is licensed under the Creative Commons Attribution- NonCommercial-ShareAlike License. To view a copy of this license, visit <http://creativecommons.org/licenses/by-nc-sa/1.0> or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Please contact Stephen L Arnold <stephen.arnold@acm.org> for commercial uses of this work.