Download presentation
Presentation is loading. Please wait.
Published byJoshua Fields Modified over 9 years ago
1
June 22, 2005NCRR NIBIB PI Meeting Open, Distributed and Collaborative Software Development Bill Lorensen GE Research lorensen@research.ge.com
2
June 22, 2005NCRR NIBIB PI Meeting "If you come to a fork in the road, take it."
3
The Software Fork ClosedOpen
4
Google Hits “Open Source”: 117,000,000
5
June 22, 2005NCRR NIBIB PI Meeting A Personal Look Back 1976- NASA’s Computer Software Management and Information System (COSMIC) 1976- NASA’s Computer Software Management and Information System (COSMIC) 1978 - MOVIE.BYU 1978 - MOVIE.BYU 1984 - GE Research Workstation 1984 - GE Research Workstation 1994 - Visualization Toolkit 1994 - Visualization Toolkit 2000 - Insight Toolkit 2000 - Insight Toolkit
6
June 22, 2005NCRR NIBIB PI Meeting http://www.bisti.nih.gov/ncbc/ And a look forward
7
June 22, 2005NCRR NIBIB PI Meeting NIH National Centers For Biomedical Computing …NIH does have goals for software dissemination… …NIH does have goals for software dissemination… …software should be freely available … …software should be freely available … … permit the commercialization of enhanced or customized versions … … permit the commercialization of enhanced or customized versions … …include the ability of researchers outside the center and its collaborating projects to modify the source code and to share modifications … …include the ability of researchers outside the center and its collaborating projects to modify the source code and to share modifications …
8
June 22, 2005NCRR NIBIB PI Meeting Outline Open Source Software Open Source Software Inside Insight Inside Insight Observations Observations
9
June 22, 2005NCRR NIBIB PI Meeting Flattener #4 Open Sourcing Self-organizing collaborative communities
10
June 22, 2005NCRR NIBIB PI Meeting Open Source Anecdote * IBM Manager: “So, walk me through the development process for e-commerce. What’s the underlying web server?” Developer: “It’s built on top of Apache.” Manager: “Apache?” Developer: “A shareware program for web server technology, produced for free by a bunch of geeks working online in some open-source chat room.” Manager: “How do you buy it?” Developer: “You download it off a Web site for free.” Manager: “Who supports it if something goes wrong?” Developer: “I don’t know, it just works!” *from The World is Flat
11
June 22, 2005NCRR NIBIB PI Meeting Successful Open Source Projects
12
June 22, 2005NCRR NIBIB PI Meeting Visualization Toolkit - vtk Open source toolkit for scientific visualization, computer graphics, and image processing www.vtk.org
13
June 22, 2005NCRR NIBIB PI Meeting Computer Vision Library - vxl Based on Target jr and Image Understanding Environment Based on Target jr and Image Understanding Environment Numerics Numerics Imaging Imaging Geometry Geometry Camera models Camera models vxl.sourceforge.net
14
June 22, 2005NCRR NIBIB PI Meeting Slicer Developed by Brigham and Womens Surgical Planning Lab Developed by Brigham and Womens Surgical Planning Lab User interface plus plug-ins for applications User interface plus plug-ins for applications Segmentation Segmentation Registration Registration Image Guidance Image Guidance www.slicer.org
15
June 22, 2005NCRR NIBIB PI Meeting SCIRun www.sci.utah.edu l Developed by U Utah SCI Institute l Computational Workbench l Visual Programming l Modeling, Simulation and Visualization
16
June 22, 2005NCRR NIBIB PI Meeting Open Source Menu for Success A Community with a common vision A Community with a common vision A pool of talented and motivated developers/scientists A pool of talented and motivated developers/scientists A mix of academic and commercial A mix of academic and commercial An organized, light weight approach to software development An organized, light weight approach to software development A leadership structure A leadership structure Communication Communication A business model A business model
17
June 22, 2005NCRR NIBIB PI Meeting Inside Insight (itk)
18
June 22, 2005NCRR NIBIB PI Meeting National Library of Medicine Segmentation and Registration Toolkit $14 million over 6 years Leading edge algorithms Open Source Software www.itk.org
19
June 22, 2005NCRR NIBIB PI Meeting What is itk? A common Application Programmers Interface (API). A common Application Programmers Interface (API). A framework for software development A framework for software development A toolkit for registration and segmentation A toolkit for registration and segmentation An Open Source resource for future research An Open Source resource for future research A validation model for segmentation and registration. A validation model for segmentation and registration. A framework for validation development A framework for validation development Assistance for algorithm designers Assistance for algorithm designers A seed repository for validation case studies A seed repository for validation case studies
20
June 22, 2005NCRR NIBIB PI Meeting Insight - Open Source Products
21
June 22, 2005NCRR NIBIB PI Meeting itk by the Numbers March 2000 March 2000 First code checkin First code checkin 1600 1600 # of nightly builds # of nightly builds 910 910 # tests run nightly # tests run nightly 23 23 # of platforms # of platforms 730 730 # of classes # of classes 2000 2000 # of files with code # of files with code l 400K l # of lines of code l 100K l # of lines of test code l 45K l # of lines of examples l 160K l # of lines of Applications l 220 l # weekly t-cons l 50 l # unique developers
22
June 22, 2005NCRR NIBIB PI Meeting itk by the Numbers 186 186 # of subscribers to the developers mailing list # of subscribers to the developers mailing list 900 900 # of subscribers to the users mailing list # of subscribers to the users mailing list 350 350 # of monthly posts to users-list # of monthly posts to users-list
23
June 22, 2005NCRR NIBIB PI Meeting A Common Vision Create a dynamic, self-sustaining, public domain and extensible toolkit that will empower researchers throughout the world to develop new segmentation and registration algorithms and create new applications that leverage the NLM’s investment in the Visible Human Male and Female data sets
24
June 22, 2005NCRR NIBIB PI Meeting The Original Team Six prime contractors Six prime contractors Industrial Industrial Kitware (Schroeder) Kitware (Schroeder) Insightful (Ng) Insightful (Ng) UPenn (Gee) UPenn (Gee) GE Research (Lorensen) GE Research (Lorensen) Brigham and Womens (Kikinis) Brigham and Womens (Kikinis) Academic Academic UNC (Aylward) UNC (Aylward) Pitt (Stetton) Pitt (Stetton) Utah (Whitaker) Utah (Whitaker) Rutgers (Metaxas) Rutgers (Metaxas) Columbia (Imielenski) Columbia (Imielenski) UPenn (Udupa) UPenn (Udupa)
25
June 22, 2005NCRR NIBIB PI Meeting Insight Consortium A competitive process selected the development team A competitive process selected the development team Each group was evaluated individually, without regard to how they might integrate with each other Each group was evaluated individually, without regard to how they might integrate with each other Each team had strengths in software development, validation or algorithm development, but no one group had the necessary skills to do the entire project Each team had strengths in software development, validation or algorithm development, but no one group had the necessary skills to do the entire project Distributed software developers with varying software engineering experience Distributed software developers with varying software engineering experience
26
June 22, 2005NCRR NIBIB PI Meeting Insight Software Architecture Object-oriented design Object-oriented design Generic Programming Generic Programming Design Patterns Design Patterns Frameworks Frameworks Separation of Algorithms from Interfaces Separation of Algorithms from Interfaces
27
June 22, 2005NCRR NIBIB PI Meeting Object-Oriented Design Dominated software systems throughout the 1990’s Dominated software systems throughout the 1990’s Continues to be the accepted software design technique Continues to be the accepted software design technique Particularly useful for dealing with complexity Particularly useful for dealing with complexity Provides programmatic abstractions to deal with generalization and encapsulation Provides programmatic abstractions to deal with generalization and encapsulation C++ and Java have mechanisms to support OOD C++ and Java have mechanisms to support OOD
28
June 22, 2005NCRR NIBIB PI Meeting Generic Programming Organize libraries consisting of generic— or reusable—software components. Organize libraries consisting of generic— or reusable—software components. The essential ideas of generic programming are containers to hold data, iterators to access the data, and generic algorithms that use containers and iterators to create efficient, fundamental algorithms. The essential ideas of generic programming are containers to hold data, iterators to access the data, and generic algorithms that use containers and iterators to create efficient, fundamental algorithms. ITK uses generic programming to process n-dimensional “images”. ITK uses generic programming to process n-dimensional “images”.
29
June 22, 2005NCRR NIBIB PI Meeting Design Patterns Good object-oriented software systems have recurring designs (patterns) that occur frequently Good object-oriented software systems have recurring designs (patterns) that occur frequently ITK employs a number of powerful design patterns ITK employs a number of powerful design patterns object factories object factories command/observer command/observer smart pointer memory management smart pointer memory management
30
June 22, 2005NCRR NIBIB PI Meeting Frameworks Define how a group of participants can be put together to solve a particular task. Define how a group of participants can be put together to solve a particular task. Particularly suitable for describing complex flows or algorithms that have a number of steps that can be varied Particularly suitable for describing complex flows or algorithms that have a number of steps that can be varied ITK Frameworks ITK Frameworks A demand-driven data processing pipeline that connects algorithms to process n-dimensional image data A demand-driven data processing pipeline that connects algorithms to process n-dimensional image data Registration framework Registration framework Level-set framework Level-set framework
31
June 22, 2005NCRR NIBIB PI Meeting Registration Framework
32
June 22, 2005NCRR NIBIB PI Meeting Level-Set Framework
33
June 22, 2005NCRR NIBIB PI Meeting Separation of Algorithms from Interfaces Implement the algorithms with a clear separation from the applications and especially the user interfaces. Implement the algorithms with a clear separation from the applications and especially the user interfaces. Uses the Command/Observer design pattern that permits applications to watch for significant events during the execution of an algorithm Uses the Command/Observer design pattern that permits applications to watch for significant events during the execution of an algorithm ITK has no built-in visualization, but has been interfaced to several systems including 3D Slicer, Analyze, SciRun and Volview. ITK has no built-in visualization, but has been interfaced to several systems including 3D Slicer, Analyze, SciRun and Volview.
34
June 22, 2005NCRR NIBIB PI Meeting In search of a new software development process
35
Google Hits “Extreme Programming”: 698,000
36
June 22, 2005NCRR NIBIB PI Meeting Extreme Programming
37
June 22, 2005NCRR NIBIB PI Meeting A Light Weight Software Engineering Process Based on the new Extreme Programming process Based on the new Extreme Programming process High intensity design, test, implement cycle High intensity design, test, implement cycle Supported with web-enabled tools Supported with web-enabled tools Automated testing integrated with the software development Automated testing integrated with the software development
38
June 22, 2005NCRR NIBIB PI Meeting Extreme Programming Compresses the standard analyze, design, implement, test cycle into a continuous process
39
June 22, 2005NCRR NIBIB PI Meeting A process supported by a suite of portable, open source tools Apache, perl, php Apache, perl, php Web services Web services cvs, subversion cvs, subversion Revision control Revision control Wiki Wiki Collaborative content capture Collaborative content capture Doxygen Doxygen Automated documentation Automated documentation CMake CMake Cross-platform program build Cross-platform program build Dart Dart Continuous and distributed test reporting Continuous and distributed test reporting
40
June 22, 2005NCRR NIBIB PI Meeting Extreme Programming The community owns the code Although the identity of the original author is kept, other developers are free to correct defects and enhance each other's code Although the identity of the original author is kept, other developers are free to correct defects and enhance each other's code In the end, all of the software should appear as though one author wrote it
41
June 22, 2005NCRR NIBIB PI Meeting Extreme Programming Release early, release often Although developers are tempted to keep their code under wraps until it is perfect, the process encourages them to release their code as soon as it passes some minimum tests The longer the code is visible to the community, the better integrated it will be
42
June 22, 2005NCRR NIBIB PI Meeting Extreme Programming Continuous integration There is no scheduled porting to computer platforms All new software builds supported platforms every evening
43
June 22, 2005NCRR NIBIB PI Meeting Extreme Programming All developers agree to keep the software defect free. Although everyone is encouraged to submit their code early, the code must compile and pass tests nightly A continuous build process sends e-mails to developers who check in code that does not compile More effectively, the community enforces the commitment though peer pressure
44
June 22, 2005NCRR NIBIB PI Meeting Insight - Development Cycles Daily – dashboard Daily – dashboard Weekly – telephone conferences Weekly – telephone conferences Periodic – architecture reviews Periodic – architecture reviews Quarterly – developer meetings Quarterly – developer meetings Yearly – work assignments Yearly – work assignments
45
June 22, 2005NCRR NIBIB PI Meeting Extreme Programming Daily Testing Is The Key Testing anchors and drives the development process (Dart) Testing anchors and drives the development process (Dart) Opens up the development process to everyone Opens up the development process to everyone Developers monitor the testing dashboard constantly Developers monitor the testing dashboard constantly Problems are identified and fixed immediately Problems are identified and fixed immediately Developers receive e-mail if they “Break the Build” Developers receive e-mail if they “Break the Build”
46
June 22, 2005NCRR NIBIB PI Meeting How DART Enables Collaboration CVS Results posted on web (the dashboard) CVS maintains source code revisions DART compiles source code, runs tests Developers review results Developers check-in code
47
June 22, 2005NCRR NIBIB PI Meeting Dart
48
June 22, 2005NCRR NIBIB PI Meeting
49
June 22, 2005NCRR NIBIB PI Meeting Multi-Platform Builds
50
June 22, 2005NCRR NIBIB PI Meeting Regression Testing
51
June 22, 2005NCRR NIBIB PI Meeting Continuous System Monitoring
52
June 22, 2005NCRR NIBIB PI Meeting Someone broke the build!
53
June 22, 2005NCRR NIBIB PI Meeting Insight Observations: The Good Good mix of commercial and academic Good mix of commercial and academic Communication is critical Communication is critical The daily rhythm of Extreme Testing The daily rhythm of Extreme Testing The Whole >>> Sum of the parts The Whole >>> Sum of the parts Process automation reduces the burden on developers Process automation reduces the burden on developers This process can (and will) be repeated This process can (and will) be repeated
54
June 22, 2005NCRR NIBIB PI Meeting Insight Observations: The Bad Communication Communication Early in the project, communication was limited to the mailing list and the Quarterly meetings. Almost a year passed before we added the weekly telephone conferences. Developers felt isolated and the impersonal electronic communication methods failed to build the personal relationships required for any software development process. Early in the project, communication was limited to the mailing list and the Quarterly meetings. Almost a year passed before we added the weekly telephone conferences. Developers felt isolated and the impersonal electronic communication methods failed to build the personal relationships required for any software development process. Lack of Design Reviews Lack of Design Reviews The lightweight process has its drawbacks. The current process emphasizes coding and testing. This process is well defined and benefits from automation. But, the design process is not well supported by the current mechanisms. The lightweight process has its drawbacks. The current process emphasizes coding and testing. This process is well defined and benefits from automation. But, the design process is not well supported by the current mechanisms. Unstable Application Programming Interfaces (API’s) Unstable Application Programming Interfaces (API’s) The nightly test/build was so effective in empowering programmers to make changes, that API changes occurred too frequently without the necessary buy-in from the development community. The nightly test/build was so effective in empowering programmers to make changes, that API changes occurred too frequently without the necessary buy-in from the development community.
55
June 22, 2005NCRR NIBIB PI Meeting Insight Observations: The Bad Insufficient Automation Insufficient Automation Automation is critical to maintain consistent style and robust software. Although the project provided many automatic techniques to catch developer errors, the project would benefit from more automation. Automation is critical to maintain consistent style and robust software. Although the project provided many automatic techniques to catch developer errors, the project would benefit from more automation. Complexity and Feature Creep Complexity and Feature Creep Like most software development projects, this software suffers from complexity and feature creep. Early designs and implementations used many features of the C++ language to an “extreme”. The team realized and began removing the complexity. Like most software development projects, this software suffers from complexity and feature creep. Early designs and implementations used many features of the C++ language to an “extreme”. The team realized and began removing the complexity.
56
June 22, 2005NCRR NIBIB PI Meeting Insight Observations: The Ugly Still need a stick Still need a stick Someone needs to monitor the daily process. Someone needs to monitor the daily process. XP is not everyone’s cup of tea XP is not everyone’s cup of tea Almost all bought into the process. A few tolerated it. Almost all bought into the process. A few tolerated it.
57
June 22, 2005NCRR NIBIB PI Meeting Parting Thoughts (from Robert Fulghum) Share everything Share everything Play fair Play fair Don’t hit people Don’t hit people Put things back where you found them Put things back where you found them Clean up your own mess Clean up your own mess Don’t take things that aren’t yours Don’t take things that aren’t yours Say you’re sorry when you hurt someone Say you’re sorry when you hurt someone Wash you hands before you eat Wash you hands before you eat and… and… Flush Flush
58
June 22, 2005NCRR NIBIB PI Meeting Open Source Resources www.opensource.org www.opensource.org sourceforge.net sourceforge.net www.itk.org www.itk.org www.vtk.org www.vtk.org vxl.sourceforge.net vxl.sourceforge.net www.slicer.org www.slicer.org www.sci.utah.edu www.sci.utah.edu
59
June 22, 2005NCRR NIBIB PI Meeting "If you don't know where you are going, you will wind up somewhere else."
60
June 22, 2005NCRR NIBIB PI Meeting Open, Distributed and Collaborative Software Development Bill Lorensen GE Research lorensen@research.ge.com
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.