Iteration 3
- Phase: Elaboration
- Dates: Oct 1 - Nov 1, 2004
Tasks to be Completed
+ Documentation
- Document Interface, including classes and functions. Post documentation on website in Developer folder.
+ Architecture
- Interface Implementation The goal is to evaluate the feasibility of using languages that compile to the Common Language Runtime (CLR). Examples include Managed C++, C#, Java.
- Convert Interface classes to C#.
- Test Mono compiler and/or VS C# compiler on Interface classes.
- Demonstrate dynamic libs using two Landis components (actual or test) that will read and write data to the landscape.
- Finish Iteration 2
- Demonstrate dynamic libs using two Landis components (actual or test) that will read and write data to the landscape.
+ Tools
- Download MS Visual C# beta with generics.
+ Unified Process
- Continue writing Use Cases Have Use Cases 50% completed by end of iteration 3.
Assessment
+ Overview
In summary, iteration 3 evaluated the risks and benefits of moving L-II to C#. The merits of such a change were quickly demonstrated and it was decided on Oct.19 to fully migrate to C#. The transition to C# is >90% complete and has been very successful.
+ Code Demonstration
The new C# code was reviewed and demonstrated. Overall, the code is much cleaner than C++ due to the ease of implementing plug-in components and the automatic memory management (no pointers or dereferencing necessary). There is new syntax that will have to be learned.
+ Iteration 3 Hits and Misses
Hit All existing C++ source code converted to C#, except the Event Scheduler. The generics feature in C# 2.0 made it easy to convert the current design of the landscape module with its ability to add new site variables on-the-fly.
Big Hit Demonstrated three plug-in modules working together, adding, modifying and sharing data.
Hit Downloaded and installed NUnit and the SharpDevelop IDE (Integrated Development Environment). NUnit is a testing framework for the .NET framework; it's the C# counterpart to the CppUnit testing framework that we had been using. SharpDevelop is an open source IDE that will allow 3rd parties to develop L-II plug-in modules with C# without having to purchase of Visual Studio.
Hit/Miss Visual Studio C# 2.0 beta installed. Open-source Mono C# compiler with the generics feature could not be setup for Windows OS.
Hit/Miss Documentation. Progress has been made with creating html documentation using NDoc. We also have put together quite a bit of other material (Architecture docs, sample code, on-line resources) for our Developers page. However, some it is needs more polish and the html docs are not completed.
Miss We still have not finished the Use Cases.
+ Iteration 3 Lessons Learned
The migration to C# has both positives and negatives. C# will speed the development of the model architecture. The implementation of plug-in modules is much easier (on a scale of 1-5, a 4.5 for significantly easier to implement). Also, no memory management is required. Overall, the C# technology is much better and there are no obvious faults with it. The negatives are relatively minor. There is always a learning curve when using a new language and there are some new key words in C#.
Finally, we are on the cutting-edge of this technology. The compiler and many of the tools are very new or still in beta. The new technology will provide many benefits but there will be hiccups in the process.

