230 likes | 301 Views
Moose Habitat Surveyor Final Presentation. University of Alaska Anchorage CS 401 : Software Engineering Cold Moose Chasers (Cold MC’s) Max Konovalov Chris Kulhanek Jim Weller. Problem Statement.
E N D
Moose Habitat SurveyorFinal Presentation University of Alaska Anchorage CS 401 : Software Engineering Cold Moose Chasers (Cold MC’s) Max Konovalov Chris Kulhanek Jim Weller
Problem Statement • Agencies like the forest service need a way to task biologists to measure and predict the amount of Moose edible biomass in an area • Take random samples with a computer and project the distribution onto an area.
Scenarios • Biologists get a list of GPS waypoints from an Agency like the forest service • Biologists go to each Waypoint and sample 9 CurrentYearGrowth (CYG) of many PlantPatches • Biologists export the biomass data to a file and give it to the Agency
Features • GUI Application • 3d Renderer • Model view • Data view of instance objects • Menus for • Collaboration: Import/Export • Persistence: Save/Load • Hardware • 3d Radio Pen (3drp) • Calipers
Architecture • MVC • Model is well defined • Controller manipulates model • Win32 Application • Views render model • 3d Panel to show plant patches • TreeView control to show the model hierarchy • DataGrid control to show instance variables of model components
Design • Façade Pattern (FieldTrip) • Wraps Model class hierarchy • Methods with integers • One Way wp = ft.getWp(wp_idx);pp = wp.getPp(pp_idx);cyg = pp.getCyg(cyg_idx);cyg.setCygBase(base3d) • Façade Way ft.cygSetBase( wp_idx, pp_idx, cyg_Idx, base3d )
Design (con’t) • Façade • Advantages • Simple and fast to implement because you can use protected variables instead of set/get • Less function calls to manipulate model • Model innards can be changed without affecting interface • Disadvantages • Not great OO design • Model components not very reusable
Design (con’t) • Bridge • Data inputs should be able to use ink, keyboard, or attached hardware • Provides flexibility in the field
Expertise • Chris • Built 3D meshes because of architectural background • PlantPatch Model component • DataGrid GUI View Component • Max • C++ string parser research • Waypoint Model component • TreeView GUI View component
Expertise (con’t) • Jim • Project Lead • .NET C++ research • CurrentYearGrowth Model component • 3D PictureBox GUI View component • Secretarial slave (coffee, lunch, notes etc.)
Finished(?) Product • We didn’t know until 5 minutes ago what exactly we were going to show you all • Here it is… • Jim: Meshes • Chris: DataGrid • Max: TreeView from model file
Lessons Learned: Facts • 50 files (70 expected) • 5 megs of source • 2500 Lines of code (3500 expected) • 85 pages of docs (120 expected) • 4 APIs (3drp, DirectX, TabletPC, .NET) • 103 CVS commits • 51 CVS commits for Model.h • 489 Total person hours (519 expected) • First 6 Weeks • 3 hours of meeting time per week • 2 hours of research/design/writing time per week • Last 8 Weeks • 10 hours of group time per week • 4-8 hours of code time per week
Lessons: Things we did right • CVS is good, viewcvs makes it better, statcvs makes it even better • C++ or not, Visual Studio is sweet • Consistent meeting agendas and minutes increased traceability • Good division of labor • Long 8 hour work together meetings • Code walk throughs
Lessons: Things that sucked • Too many new technologies (Cray quote) • Lack of experience in C++ and C++ .NET especially • No client buy in. Should have had a contract • Prototype earlier, especially with new technologies • Specify expected application behavior better in scenarios • Old Libs and new libs (VC2003 vs. VC6) • Develop project schedule earlier and revise continually • Probably won’t achieve acceptance of original requirements
Conclusions We should have majored in English Just kidding…
Conclusions (for real) • Software engineering is challenging • 3 members does not equal 3 times the effort of a single member • Good planning can save time and effort downstream • Discipline is more important than genius • Conservative is better than exciting • Communication is the most important