Personal tools
You are here: Home Project Info LANDIS-II Iteration 2

Iteration 2

  • Phase: Elaboration
  • Dates: Aug 30 - Sept 30, 2004

Tasks to be Completed

+ Architecture

  • Finish Remaining Iteration 1 Tasks
    • Finish site-iterator classes.
    • Finish data structure to map active-site locations to their corresponding indexes into data arrays.
  • Dynamic Loading Libraries, aka Plug 'n Play
    • Locate existing C++ code for dynamic libraries. Jimm knows of several open-source projects that use dynamic libs written in C++.
    • Re-use existing C++ code for dynamic libraries. This would save time, rather than having to introduce C# into the project.
    • Demonstrate dynamic libs using two Landis components (actual or test) that will read and write data to the landscape.

+ Tools

  • Finish Subversion installation

+ Unified Process

  • Begin writing Use Cases Have Use Cases 50% completed by end of iteration 2.

Assessment

+ Overview

Jimm completed most of the tasks outlined for iteration 2. During the iteration, the issue of binary compatibility between C++ compilers was discovered. There are several technical challenges to getting dynamic libraries made with different C++ compilers to work together. These challenges could make development by our collaborators very difficult. Jimm was able to address most of these C++ technical hurdles (although a few remain). However, these technical fixes would limit the C++ programming of module developers. We decided to spend two weeks of the next iteration exploring C# options for overcoming these limitations. Although a delay, the information gained will be valuable for future development and has the potential to speed development by streamlining how modules interact.

+ Code Demonstration

  • Code was compiled and ran from a command prompt.
  • Output demonstrated:
    • how a succession or disturbance component would iterate through all the active sites on the landscape, and
    • how an output component would iterate through all the sites (active and inactive) on the landscape, in order to generate an output map.
  • Format of output logs is now controlled by a configuration file.

+ Iteration 2 Hits and Misses

  • Miss Use Cases not 50% complete.
  • Miss Did not test two components talking to the landscape.
  • Miss Binary compatibility issues between differing C++ compilers not anticipated. These issues could potentially create problems for collaborating developers.
  • Hit Tasks left over from Iteration 1 completed.
  • Hit Subversion and two clients (Subversion interfaces) installed.
  • Hit Extracted DLL code from CppUnit (an existing open-source project). Implemented simple framework and plug-in module using this DLL code.
  • Big Hit Set up CppUnit, a testing framework, to perform automated testing of our code. Tests are written for each piece (unit) of our code. Not only helps determine when a unit has been completed properly, but also detects if a change "breaks" a working unit.
  • Hit Developed some classes that encapsulated the dense code needed to address some of the technical issues with using C++ and DLLs. These classes would hide messy details from component developers, simplifying their jobs.

+ Iteration 2 Lessons Learned

  • Uncovered the issues with DLLs (aka Plug & Play). This issue has forced us to weigh the usability (ease-of-use), future flexibility, and the schedule. The iteration assessment allowed us to narrow the decision space so we can move forward as quickly as possible.
  • Iteration assessments are a valuable tool for communicating our progress, based on project team feedback.
  • We can begin publishing interface specifications before the actual interface classes are finalized or even before the language is chosen (assuming that it will be in the C family of languages). This will speed collaborations with module developers.
Document Actions