DWDEGOWS 2007 Haucke - The NinJo CASE NinJo : The NinJo CASE Computer Aided Software Engineering...
-
Upload
brittney-terry -
Category
Documents
-
view
215 -
download
0
Transcript of DWDEGOWS 2007 Haucke - The NinJo CASE NinJo : The NinJo CASE Computer Aided Software Engineering...
DWD EGOWS 2007 Haucke - The NinJo CASE
NinJo : NinJo : The NinJo CASEThe NinJo CASEComputer Aided Software EngineeringComputer Aided Software Engineering
Sibylle Haucke, DWD
EGOWS 2007 Dublin
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
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
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
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
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
The NinJo CASE Development environment in distributed teams
Perforce source depot and tools The NinJo developer Workbench
DWD EGOWS 2007 Haucke - The NinJo CASE
Perforce server in WAN/LANPerforce server in WAN/LAN
Perforce server is used by all partners via WAN access
DWD EGOWS 2007 Haucke - The NinJo CASE
Perforce client for WindowsPerforce client for Windows
Several release lines in the source code depot
RfA labels on the right hand side
Also documents in depot
DWD EGOWS 2007 Haucke - The NinJo CASE
Tools: Eclipse (IDE)Tools: Eclipse (IDE)Tools: Eclipse (IDE)Tools: Eclipse (IDE)
Navigation-view
Source code
class-Attributes &Methodes
Debug / log console
DWD EGOWS 2007 Haucke - The NinJo CASE
The Developer WorkbenchThe 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
DWD EGOWS 2007 Haucke - The NinJo CASE
The Developer WorkbenchThe Developer Workbench
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
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
DWD EGOWS 2007 Haucke - The NinJo CASE
NinJo Release LinesNinJo Release Lines
Bugfixing on 1.1, Integration into 1.2;Development on 1.2 and
back-integration of features
Working in up to 3 code lines in parallel
DWD EGOWS 2007 Haucke - The NinJo CASE
NinJo Release LinesNinJo 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
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
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
DWD EGOWS 2007 Haucke - The NinJo CASE
Semi-Automated BuildSemi-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
DWD EGOWS 2007 Haucke - The NinJo CASE
Semi automated BuildSemi automated Build
Ant build scripts
DWD EGOWS 2007 Haucke - The NinJo CASE
Preparing a release manually- working stepsPreparing 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
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
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
DWD EGOWS 2007 Haucke - The NinJo CASE
Build System OverviewBuild 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
DWD EGOWS 2007 Haucke - The NinJo CASE
Build System OverviewBuild 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
DWD EGOWS 2007 Haucke - The NinJo CASE
Build System OverviewBuild 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
DWD EGOWS 2007 Haucke - The NinJo CASE
Build System OverviewBuild 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
DWD EGOWS 2007 Haucke - The NinJo CASE
Automated Build System WorkflowAutomated Build System Workflow
Build LabelsRfA/Nightly
Perforce Server
NinJo Build SystemNinJo Build SystemNinJo Build SystemNinJo Build System
I18N/Docbook
IzPack-Installers
IzPack-Installers
Build Log
Release labels
NinJo Developers
createNDW/Perforce
controlBuild Control Page
notifiesE-Mail
Label Description
History
DWD EGOWS 2007 Haucke - The NinJo CASE
Automated Build System WorkflowAutomated Build System Workflow
DWD EGOWS 2007 Haucke - The NinJo CASE
Build ControlBuild 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
DWD EGOWS 2007 Haucke - The NinJo CASE
Build ControlBuild 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
DWD EGOWS 2007 Haucke - The NinJo CASE
Build ControlBuild Control
NinJo work around the clock
DWD EGOWS 2007 Haucke - The NinJo CASE
Build Process Step-by-StepBuild 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
DWD EGOWS 2007 Haucke - The NinJo CASE
Build ResultsBuild 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
…
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
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
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
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
DWD EGOWS 2007 Haucke - The NinJo CASE
Frameworks for NinJo 1.3Frameworks 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
DWD EGOWS 2007 Haucke - The NinJo CASE
PAC framework history (NinJo 1.0 .. NinJo 1.2)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
Main Scene
intermediate level
(LayerContainer)
Secondary Scene
IntermediateLevel (LayerContainer)
Secondary Scene
IntermediateLevel (LayerContainer)
GeoVectorLayer
BottomLevel
(Layer)
SatLayer
BottomLevel
(Layer)
RadarLayer
BottomLevel
(Layer)
GeoGridLayer
BottomLevel
(Layer)
PointDataLayer
BottomLevel
(Layer)
SoundingLayer
BottomLevel
(Layer)LightningLayer
BottomLevel
(Layer)GeoVectorLayer
BottomLevel
(Layer)
DWD EGOWS 2007 Haucke - The NinJo CASE
PAC framework for NinJo 1.3PAC framework for NinJo 1.3
Controller
Model View
Controller
Model View
Controller
Model View
Controller
Model View
Controller
Model View
PACCommand
PACRequest
New basic framework
Changed Interagent communication
More clear communication flow between agents
DWD EGOWS 2007 Haucke - The NinJo CASEPAC Multithreading, Slide 34
PAC Multithreading: PAC AgentPAC 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
DWD EGOWS 2007 Haucke - The NinJo CASEPAC Multithreading, Slide 35
PAC Multithreading: Agent treePAC Multithreading: Agent tree
Although an agent is single-threaded, the tree can be multithreaded:
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
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
DWD EGOWS 2007 Haucke - The NinJo CASE
Legend FrameworkLegend 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
DWD EGOWS 2007 Haucke - The NinJo CASE
Legends with LayoutLegends with Layout
DWD EGOWS 2007 Haucke - The NinJo CASE
Legend FrameworkLegend 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
DWD EGOWS 2007 Haucke - The NinJo CASE
Layout Framework - LayoutStrategiesLayout Framework - LayoutStrategies
StackLayout
Vertical stacking Horizontal stacking
5 layoutables with 2 columns
5 layoutables with 4 columns
BoxFlowLayout
DWD EGOWS 2007 Haucke - The NinJo CASE
Legends with LayoutLegends with Layout
DWD EGOWS 2007 Haucke - The NinJo CASE
AgendaAgenda
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
DWD EGOWS 2007 Haucke - The NinJo CASE
Thread usage in NinJo 1.3Thread usage in NinJo 1.3
Animations run in different threads, so are completely independent
But sometimes users want to run them synchronously …
DWD EGOWS 2007 Haucke - The NinJo CASE
Synchronous time/animation of different Synchronous time/animation of different scenesscenes
DWD EGOWS 2007 Haucke - The NinJo CASE
Synchronous time/animation of different Synchronous time/animation of different scenesscenes
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
DWD EGOWS 2007 Haucke - The NinJo CASE
Legends in NinJo 1.3Legends in NinJo 1.3
And now some fancy usage of legends in NinJo
DWD EGOWS 2007 Haucke - The NinJo CASE
A Fancy Legend and layout exampleA Fancy Legend and layout example
DWD EGOWS 2007 Haucke - The NinJo CASE
OutlookOutlook
To be continued….