1 / 15

ALMA/ACS Software Engineering

Discover the key Software Engineering & QA practices at ALMA/ACS focusing on process, tools, testing, integration, and documentation. Explore makefile structures and module separation techniques for efficient development.

rrice
Download Presentation

ALMA/ACS Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ALMA/ACS Software Engineering M. Zamparelli European Southern Observatory ACS Course Japan, July 2005

  2. Software Engineering • Software Engineering and Quality Assurance activities: • Software Process • Document Reviews, Format, Templates • Development Environment • Integration Procedure • Coding Standards • Code Inspection • Configuration Management • Testing framework and assessment • Change Management ALMA/ACS Software Engineering

  3. Major SE deliverables to ALMA • the tool to build the software with (Makefile) - in maintenance • the version controlled storage area where the software is (CVS) – in maintenance • the problem tracking system (Action Remedy) we use to track faults and change requests - pending replacement/upgrade • the system you document your software with (both inline and online – doxygen, TWiki) – in maintenance • The automated Night Reporting Infrastructure (NRI) which checks standards compliance– in maintenance • generic CASE tools (UML Modeling, Editors, Quality Control) – being updated, reviewed • standards for mostly all the process phases and deliverables ALMA/ACS Software Engineering

  4. <module>/ws/src <module>/ws/object <module>/ws/include <module>/ws/lib <module>/ws/test <module>/ws/man <module>/lcu/src <module>/lcu/include <module>/lcu/man ……. Separation of WS from LCU code Separation of source from headers (for C,C++) Separation of application code from test code ownership assignment, homogeneity Directory Structure ALMA/ACS Software Engineering

  5. esoMakefile • a project wide set of rules, centrally stored and managed. • every developer has to add only the module specific part: the name of the files to be treated! • allows exceptions (it is a normal Makefile) Based on the features of GNUmake and strictly correlated with the environment variable set up and the directory and Software Module standards. ALMA/ACS Software Engineering

  6. <modName>/src/Makefile For every software modules: • defines what has to be build as a list of variables • includes the project-wide rules ($ACSROOT/include/acsMakefile) • defines the standard targets: all, man, install, clean (if necessary, they can be customized) ALMA/ACS Software Engineering

  7. esoMakefile example USER_CFLAGS = USER_LIB = -lACE -lTAO -lTAO_DsLogAdmin -lTAO_CosNaming -lTAO_IORTable -lTAO_PortableServer -lTAO_Svc_Utils -lTAO_CosTrading -lTAO_DynamicAny -lTAO_CosProperty -lTAO_IFR_Client -lacsutil -lcdb -llogging -lCCS -lrecovery -lacserr INCLUDES = baciDevIO.h baciDevIOMem.h baciExport.h …. LIBRARIES = baci baci_OBJECTS = baciDevIOMem baciError \ baci baciTime baciThread baciValue baciDB \ baciRecovery baciCORBA baciDLL baciC baciS …… DBL_CLASSES = acsDefine acsDistributedObject acsProperty IDL_FILES = baci USER_IDL = -I$(ACE_ROOT)/TAO/orbsvcs/orbsvcs/ EXECUTABLES = maciActivate maciManager maciManagerShutdown maciActivatorShutdown \ nslist nsadd maciActivate_OBJECTS = maciActivate maciActivate_LIBS = maci maciManager_OBJECTS = maciManager maciManager_LIBS = maci JARFILES = abeansgen abeansgen_DIRS = si/ijs/kgb/generators ALMA/ACS Software Engineering

  8. IDL_FILES ACE/TAO Omniorb JacORB C++ Stubs Java Stubs Python Stubs Real Time Linux Kernel Modules XSDBIND(XSDBIND_INCLUDE) Java Entity Classes RTAI_MODULES Java Component Helper Classes COMPONENT_HELPERS ABEANS Abeans Support Classes ACSERRDEF XML_IDL ACS XmlIdl compiler C++ Java Python Java Component Wrappers for Container Hierarchical Include directories BACK ALMA/ACS Software Engineering

  9. Integration Layers : ALMA/ACS Software Engineering

  10. Quality Assurance Tools ALMA/ACS Software Engineering

  11. Automated Inspections (NRI) • Build reports (GO/NO-GO) • Tests (availability, execution results GO/NO-GO, coverage, memory behaviour) • Coding Standards (ALMA, MISRA, Motorola, Scott Meyers, Sun) • Inline documentation sufficiency • lines of code (total, per language, per module, production vs test code) • Algorithmic Complexity (McCabe) • module dependency diagrams • SPR statistics, number of commits, number of unused files • Java duplicate classes verification • Events and Channels in use • metrics on design quality (Robert C. Martin, for Java) ALMA/ACS Software Engineering

  12. Configuration Management Codewizard JTest sloccount cmt/cmtjava JDepend doxygen graphviz Purify splint JContract NRI source reports Database WebServer Static Inspection (dynamic inspection machines) host1 host2 host3 ALMA/ACS Software Engineering

  13. TEST OUTCOME DETERMINATION Purify Compiled Test DIR Makefile Purify Make all UNDETERMINED UNDETERMINED TAT test target TAT Purify make test test output success failure FAILED PASSED ALMA/ACS Software Engineering

  14. Data archival for trend analysis NRI ALMA/ACS Software Engineering

  15. LINKS • http://websqa.hq.eso.org/alma/snapshot/main entry page • http://websqa.hq.eso.org/alma/snapshotSL//ACS-Reports/TestCoverage-Linux/to see memory inspection for C/C++ and coverage for some modules ALMA/ACS Software Engineering

More Related