Скачать презентацию GE CRD Medical Open Source Software A Report Скачать презентацию GE CRD Medical Open Source Software A Report

416b7cc314e0dd819b465471f81e75c3.ppt

  • Количество слайдов: 43

GE CRD Medical Open Source Software A Report from the Trenches Bill Lorensen GE GE CRD Medical Open Source Software A Report from the Trenches Bill Lorensen GE Corporate R&D [email protected] ge. com www. crd. ge. com/~lorensen

GE CRD Outline vtk, The Visualization Toolkit itk, The Insight Toolkit Recipe for Success GE CRD Outline vtk, The Visualization Toolkit itk, The Insight Toolkit Recipe for Success

GE CRD 1978 Open Source Movie. BYU Brigham Young University Finite element postprocessing Fortran GE CRD 1978 Open Source Movie. BYU Brigham Young University Finite element postprocessing Fortran hidden surface removal Visualization of scalar and vector fields All Fortran source was available User group meetings Training

GE CRD The Visualization Toolkit Open source toolkit for scientific visualization, computer graphics, and GE CRD The Visualization Toolkit Open source toolkit for scientific visualization, computer graphics, and image processing

GE CRD vtk 1. 0 1995 vtk 2. 0 1997 GE CRD vtk 1. 0 1995 vtk 2. 0 1997

GE CRD Visualization Toolkit Open Source 600 C++ classes 300, 000 Lines of Code GE CRD Visualization Toolkit Open Source 600 C++ classes 300, 000 Lines of Code ù 150, 000 executable 20+ developers 8 years of development

GE CRD Visualization Toolkit Internal Customers • GE Medical Systems – Platform software and GE CRD Visualization Toolkit Internal Customers • GE Medical Systems – Platform software and applications, 1996 – Volume visualization on the scanner, 1999 -2001 • GE Aircraft Engines – Engineering productivity tools, 1996 -1998 • Lockheed Martin – Composite inspection system for JSF, 1998 -2000 • DARPA – Virtual Endoscopy, 1996 -1998 • FBI – Facial Reconstruction, 1999 -2000 • Engineering Animation – Swept Surfaces, Path Planning 1998 -2000

GE CRD Visualization Toolkit External “customers” • • Map. Info Visual Interfaces Inc. Principia GE CRD Visualization Toolkit External “customers” • • Map. Info Visual Interfaces Inc. Principia Mathematica Inc. Numerical Objects Inc. Brigham and Womens Hospital NCSA Los Alamos National Lab, Argonne, Livermore • 1000 people on mailing list • 12 Universities using VTK textbook

GE CRD GE CRD

GE CRD The day starts at 8 pm (EST) ù Determine what has changed GE CRD The day starts at 8 pm (EST) ù Determine what has changed in the system ù Update the testing system’s version of the software ù On 11 different system configurations, we • Build the software • Run over 500 regression tests ù ù ù Dynamic memory analysis Coverage analysis Check on coding style and documentation

GE CRD 8: 01 pm - Change Log Summarize the changes that occurred since GE CRD 8: 01 pm - Change Log Summarize the changes that occurred since yesterday This tightens the “cause and effect” cycle There were 21 files changed since the last dashboard. U graphics/vtk. Volume. cxx revision 1. 55 date: 2000/08/15 11: 57; author: avila; state: Exp; lines: +11 -3 ERR: Avoid rendering if the mapper has no input ============================

GE CRD Link from changes log to cvsweb GE CRD Link from changes log to cvsweb

GE CRD 8: 05 pm - Compile on all platforms Summarize errors and warnings GE CRD 8: 05 pm - Compile on all platforms Summarize errors and warnings Keep complete log of errors and warnings Provide link to logs

GE CRD Link to abstracts of Warning/Error Logs VTK Warning Summary for Build. Log GE CRD Link to abstracts of Warning/Error Logs VTK Warning Summary for Build. Log Warning (Build. Log line 373) gmake[1]: Leaving directory `/tmp_mnt/projects/vtk/production/vtk-irix 65/common' cd common; gmake -k all gmake[1]: Entering directory `/tmp_mnt/projects/vtk/production/vtk-irix 65/common' "vtk. Coordinate. cxx", line 436: warning(3665): variable "Ref. Value" is used before its value is set val[0] += Ref. Value[0]; ^ line 54: warning(3482): class "vtk. File. Output. Window" has no accessible constructors class VTK_EXPORT vtk. File. Output. Window : public vtk. Output. Window

GE CRD 9: 00 pm - Image Regression Tests Each regression test produces an GE CRD 9: 00 pm - Image Regression Tests Each regression test produces an image that is compared against a “gold standard image”

GE CRD 11: 00 pm - Other Regression Tests Other tests produce text output GE CRD 11: 00 pm - Other Regression Tests Other tests produce text output that is compared against a baseline file 17, 18 c 17, 18 < World(0, 0, 0) -> Display(49, 49) < World(0, 0, 0) -> Local. Display(49, 50) --> World(0, 0, 0) -> Display(50, 50) > World(0, 0, 0) -> Local. Display(50, 49) 30 c 30 < Display(50, 0) -> World(2. 70654 e 05, 2. 70654 e-05, 0. 99) --> Display(50, 0) -> World(0, 0, 0. 99) 44 c 44 < Normalized Display(0. 5, 0) -> World(2. 70654 e 05, 2. 70654 e-05, 0. 99) --> Normalized Display(0. 5, 0) -> World(0, 0, 0. 99)

GE CRD Regression Tests Compare images Quantify defects Produce summary GE CRD Regression Tests Compare images Quantify defects Produce summary

GE CRD Regression Tests Record CPU time and compare to history “Defect” is test GE CRD Regression Tests Record CPU time and compare to history “Defect” is test that takes “statistically” more time than usual

GE CRD 1: 00 am - Coverage Analysis Identify which lines of code are GE CRD 1: 00 am - Coverage Analysis Identify which lines of code are tested ù “If it isn’t tested, it doesn’t work. ” Summarize coverage across VTK, across each kit, and across individual files. Coverage results: 72. 70%, tested: 52088, untested: 19562, total: 71650 Defect: Coverage below spec limit

GE CRD 1: 00 am - Style Check coding conventions Detect code that may GE CRD 1: 00 am - Style Check coding conventions Detect code that may cause a future defect • Someone other than the original author may be modifying the code Summarize overall style and style per file Style test results: 53 defective files out of 972 files, 757 defects out of 104876 opportunities. Style Rule Class name prefix "vtk" Class name alphanumerics Instance variable begins with uppercase Protected member data Member function begins with uppercase Dereferencing member data Dereferencing member function Braces around "if", "else", "for", . . . Opportunities 507 2222 8590 33641 24656 20721 Defects 0 0 15 153 0 249 85 188

GE CRD 1: 00 am - Memory Analysis Check for memory leaks, array bound GE CRD 1: 00 am - Memory Analysis Check for memory leaks, array bound writes, uninitialized memory reads, etc. Purify Total Critical Defects: 0. (Purify last run on Jan 6 06: 11) VTK Dynamic Code Analysis for Thursday January 07, 1999 at 07: 35 AM ================= Total Memory Leaked: 0 bytes Number of Leaks : 0 Number of ABRs : 0 Number of ABWs : 0 Number of CORs : 0 Number of FMMs : 0 Number of FUMs : 0 Number of FMRs : 0 Number of FMWs : 0 Number of MAFs : 0 Number of UMCs : 213 Number of UMRs : 144 Purify Total Critical Defects: 0

GE CRD 5: 00 am - Generate Documentation Doxygen documentation generated from comment lines. GE CRD 5: 00 am - Generate Documentation Doxygen documentation generated from comment lines.

GE CRD Doxygen collaboration graph GE CRD Doxygen collaboration graph

GE CRD 7: 00 am - Tests complete Construct top level Web-dashboard Package and GE CRD 7: 00 am - Tests complete Construct top level Web-dashboard Package and export testing Package and export the software for world wide distribution ù ù ù Zipped source Linux rpm’s Windows install

GE CRD In search of a new software engineering process GE CRD In search of a new software engineering process

GE CRD GE CRD

IEEE Computer October, 1999 GE CRD IEEE Computer October, 1999 GE CRD

GE CRD Extreme Programming GE CRD Extreme Programming

GE CRD Extreme Testing Short software engineering life cycle • Design, implement, test The GE CRD Extreme Testing Short software engineering life cycle • Design, implement, test The Software should ALWAYS work Find and fix defects in hours not weeks • Bring SQA inside the development cycle • Break the cycle of letting users find bugs Automate everything All developers are responsible for testing

GE CRD The Importance of Early Testing early and often is critical to high GE CRD The Importance of Early Testing early and often is critical to high quality software Retain measurements to assess progress and measure productivity Present results in concise, informative ways Know and Show the status of the system at any time

GE CRD http: //tinderbox. mozilla. org/ GE CRD http: //tinderbox. mozilla. org/

GE CRD Why a Continuous Build? The nightly test is critical to assessing the GE CRD Why a Continuous Build? The nightly test is critical to assessing the state of the system A single compilation or load error can jeopardize an entire night of testing

GE CRD Extreme Testing GE CRD Extreme Testing

GE CRD Someone Broke The Build! GE CRD Someone Broke The Build!

GE CRD How do we use the system? ù ù ù Track the effects GE CRD How do we use the system? ù ù ù Track the effects of major changes Identify what needs to be changed Portability leads to quality Navigate software features Build and test on future OS releases Test new 3 rd party software (e. g. Open. GL) for compliance

GE CRD Case Study New developer to our Open Source community proposed a new GE CRD Case Study New developer to our Open Source community proposed a new class hierarchy for vtk Transformations Old New

GE CRD The first checkin GE CRD The first checkin

GE CRD The day after U graphics/vtk. Transform. Poly. Data. Filter. cxx revision 1. GE CRD The day after U graphics/vtk. Transform. Poly. Data. Filter. cxx revision 1. 13 date: 2000/03/03 15: 36: 48; author: lorensen; state: Exp; lines: +4 -4 ERR: Logic was confused for transforming Cell Normals and Cell Vectors.

GE CRD What’s next? Current system ù uses: csh, tclsh, awk, grep, make, gmake, GE CRD What’s next? Current system ù uses: csh, tclsh, awk, grep, make, gmake, cvs, rcp, ssh, scp, . . . ù is “vtk-centric” ù monolithic control structure best suited for daily testing of the complete system ù dashboard summarizes state as of 6 am New system ù Client-server model ù On demand dashboards summarizing the most recent results

GE CRD Summary Automated, nightly build and test on mulitple hardware and OS configurations GE CRD Summary Automated, nightly build and test on mulitple hardware and OS configurations A daily dashboard presents the current state of the system All users and customers can see the state of the system All developers can run tests Developers are expected to repair defects before the next nightly build and test

GE CRD vtk Dashboards on the Web www. visualizationtoolkit. org/vtk/quality/ Most. Recent. Results/Dashboard. html GE CRD vtk Dashboards on the Web www. visualizationtoolkit. org/vtk/quality/ Most. Recent. Results/Dashboard. html Continuous. Results/solaris/Continuous. Results. html

GE CRD Insight GE CRD Insight

GE CRD Recipe for Success Vision Openness Community Strong core team Core Architecture Funding GE CRD Recipe for Success Vision Openness Community Strong core team Core Architecture Funding