480 likes | 690 Views
NinJo : The NinJo CASE Computer Aided Software Engineering. Sibylle Haucke, DWD EGOWS 2007 Dublin. Agenda. The NinJo CASE Development environment in distributed teams Working on different releases in parallel Semi automated build process Fully automated build process – The Release Machine
E N D
NinJo : The NinJo CASEComputer Aided Software Engineering Sibylle Haucke, DWD EGOWS 2007 Dublin EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Working on different releases in parallel • Semi automated build process • Fully automated build process – The Release Machine • The New Client Frameworks • PAC and Threads • Legends and Layout • Examples of improvements EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Working on different releases in parallel • Semi automated build process • Fully automated build process – The Release Machine • The New Client Frameworks • PAC and Threads • Legends and Layout • Examples of improvements EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Perforce source depot and tools • The NinJo developer Workbench EGOWS 2007 Haucke - The NinJo CASE
Perforce server in WAN/LAN • Perforce server is used by all partners via WAN access EGOWS 2007 Haucke - The NinJo CASE
Perforce client for Windows • Several release lines in the source code depot • RfA labels on the right hand side • Also documents in depot EGOWS 2007 Haucke - The NinJo CASE
Tools: Eclipse (IDE) Navigation- view Source code class- Attributes & Methodes Debug / log console EGOWS 2007 Haucke - The NinJo CASE
The Developer Workbench • JAVA tool, developed with Eclipse framework • Developed by NinJo team • Uses Perforce interface to access files from the depot • Covers everything, a developer needs for delivering his components for a release EGOWS 2007 Haucke - The NinJo CASE
The Developer Workbench EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Working on different releases in parallel • Semi automated build process • Fully automated build process – The Release Machine • The New Client Frameworks • PAC and Threads • Legends and Layout • Examples of improvements EGOWS 2007 Haucke - The NinJo CASE
Bugfixing on 1.1, Integration into 1.2;Development on 1.2 and back-integration of features NinJo Release Lines • Working in up to 3 code lines in parallel EGOWS 2007 Haucke - The NinJo CASE
NinJo Release Lines • Teams are working in up to 3 code lines in parallel • Every code line has approximately 2.500.000 lines of code (JAVA/XML) • Problem of old system: The release label was handmade • Release creation was already supported by scripts, Perforce, Ant, but still very time consuming • See next slides for the “old fashioned” release build EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Working on different releases in parallel • Semi automated build process – old style • Fully automated build process – The Release Machine • The New Client Frameworks • PAC and Threads • Legends and Layout • Examples of improvements EGOWS 2007 Haucke - The NinJo CASE
Semi-Automated Build • All developers deliver their component by creating a certain label • The developer synchronizes the most recent labels from Perforce • The developer starts Eclipse • The developer runs the appropriate Ant task for generating the jar files or the Installation pack for a domain • The busy release manager creates a Release label out of all delivered component labels after checking, that the build works fine EGOWS 2007 Haucke - The NinJo CASE
Semi automated Build • Ant build scripts EGOWS 2007 Haucke - The NinJo CASE
Preparing a release manually- working steps • Perforce - synchronizing the Release label • Eclipse/IntelliJ/Netbeans..: run Ant script • select the “DVD” target • wait 5 minutes • find on the disc: DVD1 and DVD2 directories, containing: • whole NinJo software for server and client • whole configuration • installation scripts • templates for run scripts • copy the Geo data and (if needed) demo data • copy a JRE (JAVA runtime environment), inclusive extensions (third party Jar-files) • create the DVD images • burn the DVDs EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Working on different releases in parallel • Semi automated build process – old style • Fully automated build process – The Release Machine • The New Client Frameworks • PAC and Threads • Legends and Layout • Examples of improvements EGOWS 2007 Haucke - The NinJo CASE
Build System Overview • Why a fully automated release build? • We need : • Automated checks (Checkstyle, dependencies, JavaDoc) • >3 different releases to be build every day • Continuous integration of teams work results • Early detection of errors in any team • Streamlined and specified release builds EGOWS 2007 Haucke - The NinJo CASE
Build System Overview • Fully automated • Contents of build are fully controlled by Perforce labels • Build runs unattended • Build problems are found automatically and mailed to last editor(s) of affected file(s) • Developer fixes the problem and restarts the build via a web interface • Dramatically reduced required release efforts and greatly increased build frequency EGOWS 2007 Haucke - The NinJo CASE
Build System Overview • Transparency • Team members can see the full log file for each build via Perforce or a web interface • Live display of build status (blocked/running, elapsed time,…) by web interface • Automated e-mails on build problems directly to the responsible developer (most of the times) with detailed problem description EGOWS 2007 Haucke - The NinJo CASE
Build System Overview • Runs on a „dedicated“ linux machine (a single build run takes 4 hours) • Consists of some ant scripts plus self-developed ant tasks (Java) • Custom ant tasks • Perforce (sync, check in, …) • Create HTML reports out of label descriptions • Label creation (success labels, auto-milestones,…) • Parsing the build log and reporting problems via eMail • Current builds: • daily : RfA 1.2, RfA 1.2.5 • On demand: Nightly 1.2.5,Nightly 1.3, RfA 1.3 EGOWS 2007 Haucke - The NinJo CASE
NinJo Developers Automated Build System Workflow Perforce Server create NDW/Perforce I18N/Docbook Build LabelsRfA/Nightly control Build Control Page Release labels NinJo Build System notifies E-Mail Build Log Label Description History IzPack-Installers EGOWS 2007 Haucke - The NinJo CASE
Automated Build System Workflow EGOWS 2007 Haucke - The NinJo CASE
Build Control • Web interface • Custom web interface to see build logs and „label histories“ • „Build Control Page“ to see current build status and (re-)start build • Can be controlled via Internet from any location in the world (also from home) • 6 different builds (versions/releases) possible EGOWS 2007 Haucke - The NinJo CASE
Build Control • Build Control Page • „Blockers“ are listed and can tell the system that they have finished fixing the problem to restart the auto build • When all developers are done build restarts automatically EGOWS 2007 Haucke - The NinJo CASE
Build Control • NinJo work around the clock EGOWS 2007 Haucke - The NinJo CASE
Build Process Step-by-Step • Gather list of current labels • NinJo_1.2_RfA_CLIENT_LAYER_Scit_20060927 • Release version • Build Type (RfA / Nightly) • Component • Sub-Component Name • Date of label (yyyymmdd) • Check for „collisions“ • For each „component“ • Sync all files of the component‘s labels • Run the „Ninjo.xml“ build script (that is the same developers use) • Parse the log file to find build problems (and send e-mails) • Run the packager („auto-build“) • Create the label description HTML files and upload them • Upload the log file and check it in • Create ninjo libraries and check them in EGOWS 2007 Haucke - The NinJo CASE
Build Results • The DAILY result of the Autobuild- release machine: • Ready-to-use installers for each domain • Are stored on network drives • As Zip-Files • Unzip and use .bat/.sh to run installer • AUTO-MILESTONE labels • Contain all files used to create the build • Log files • Can be found on build page and in Perforce • … EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Working on different releases in parallel • Semi automated build process – old style • Fully automated build process – The Release Machine • The New Client Frameworks • PAC and Threads • Legends and Layout • Examples of improvements EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Working on different releases in parallel • Semi automated build process – old style • Fully automated build process – The Release Machine • The New Client Frameworks • PAC and Threads • Legends and Layout • Examples of improvements EGOWS 2007 Haucke - The NinJo CASE
Frameworks for NinJo 1.3 • The Release machine allows us to do this: • While others still develop small new features on 1.2 or develop a complete new product workbench on 1.2.5 (See M.Flibottes talk) framework developers are preparing the next releases basics already • Summary framework changes • Multithreaded PAC framework • New Layout and Legend facilities • Updates in other frameworks, like formula • Introduction of automated Configuration Converters to upgrade configuration files from old releases • Usage of threads in the client in the next release… • Running animations from different windows in different threads, but synchronize the time steps EGOWS 2007 Haucke - The NinJo CASE
PAC framework history (NinJo 1.0 .. NinJo 1.2) • Remember: Pac is The building kit for NinJo client as a tree of cooperating agents • Integration of diagram framework (from DMI) for 1.1 • Introduction of threads, legends, layout for 1.2 GeoVectorLayer BottomLevel (Layer) Secondary Scene IntermediateLevel (LayerContainer) SatLayer BottomLevel (Layer) RadarLayer BottomLevel (Layer) GeoGridLayer BottomLevel (Layer) PointDataLayer BottomLevel (Layer) SoundingLayer BottomLevel (Layer) Main Scene intermediate level (LayerContainer) LightningLayer BottomLevel (Layer) GeoVectorLayer BottomLevel (Layer) Secondary Scene IntermediateLevel (LayerContainer) EGOWS 2007 Haucke - The NinJo CASE
Controller Controller Controller Controller Controller Model Model Model Model Model View View View View View PAC framework for NinJo 1.3 • New basic framework • Changed Interagent communication • More clear communication flow between agents PACCommand PACRequest EGOWS 2007 Haucke - The NinJo CASE
PAC Multithreading: PAC Agent We have hardware with > 1 processor and want to USE it, so we need multithreaded software for this Starting a time consuming application in NinJo shall not block the other windows Making trees (like PAC) thread safe is a difficult issue The basic unit of multithreading in PAC is the Agent: Each individual PAC agent is single-threaded PAC Multithreading, Slide 34 EGOWS 2007 Haucke - The NinJo CASE
PAC Multithreading: Agent tree Although an agent is single-threaded, the tree can be multithreaded: PAC Multithreading, Slide 35 EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Working on different releases in parallel • Semi automated build process – old style • Fully automated build process – The Release Machine • The New Client Frameworks • PAC and Threads • Legends and Layout • Examples of improvements EGOWS 2007 Haucke - The NinJo CASE
Legend Framework • The legend framework has been integrated into the base PAC as a part of the View of a PAC agent • Thus it is usable for all PAC agents, i.e. also the layers • A special layout implementation arranges all legends according to their preferred size and alignment such that they do not overlap • Legends can be resized and repositioned interactively EGOWS 2007 Haucke - The NinJo CASE
Legends with Layout EGOWS 2007 Haucke - The NinJo CASE
Legend Framework • The contents of a text legend can be specified as text (I18n resource locators supported) with tags to be replaced by context specific information • The contents of a graphical legend is defined as a scenegraph • In the future the framework will be extended to support HTML-like legend contents EGOWS 2007 Haucke - The NinJo CASE
Vertical stacking Horizontal stacking Layout Framework - LayoutStrategies • StackLayout • BoxFlowLayout 5 layoutables with 2 columns 5 layoutables with 4 columns EGOWS 2007 Haucke - The NinJo CASE
Legends with Layout EGOWS 2007 Haucke - The NinJo CASE
Agenda • The NinJo CASE • Development environment in distributed teams • Working on different releases in parallel • Semi automated build process – old style • Fully automated build process – The Release Machine • The New Client Frameworks • PAC and Threads • Legends and Layout • Examples of improvements EGOWS 2007 Haucke - The NinJo CASE
Thread usage in NinJo 1.3 • Animations run in different threads, so are completely independent • But sometimes users want to run them synchronously • … EGOWS 2007 Haucke - The NinJo CASE
Synchronous time/animation of different scenes EGOWS 2007 Haucke - The NinJo CASE
Synchronous time/animation of different scenes • Activate one scene , which shall control the time and animation • Select every scene, which should be synchronous to the central time control • synchronous mode • asynchronous mode EGOWS 2007 Haucke - The NinJo CASE
Legends in NinJo 1.3 • And now some fancy usage of legends in NinJo EGOWS 2007 Haucke - The NinJo CASE
A Fancy Legend and layout example EGOWS 2007 Haucke - The NinJo CASE
Outlook • To be continued…. EGOWS 2007 Haucke - The NinJo CASE