Upload
shino
View
30
Download
0
Embed Size (px)
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
Moose Habitat SurveyorFinal Presentation
University of Alaska AnchorageCS 401 : Software EngineeringCold Moose Chasers (Cold MC’s)
Max KonovalovChris 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
30 meters
PlantPatch1
PlantPatch4
PlantPatch2PlantPatch3
Waypoint
5 meters
SurveyPole
SurveyPole
Foliage
Survey Pole
Survey Pole
FieldBiologist
Diameter of Patch
WayPoint
Survey Pole
Survey Pole
FieldBiologist
Diameter of Patch
Random Point on Diameter
3drp Pole
3drp Pole
0-1 meter
1-2 meters
2-3 meters
CYG
Random 3D Point
Legend
1 Map Base 3D Point2 Map Tip 3D Point3 Measure Base Diameter
CYG1
2
3
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 Waywp = ft.getWp(wp_idx);pp = wp.getPp(pp_idx);cyg = pp.getCyg(cyg_idx);cyg.setCygBase(base3d)
• Façade Wayft.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
Win32 Application
Viewmenus, folding tree,
directx picturebox, buttons, text boxes, property sheets,
dialogues, wizards, icons
ControllerEvent driven routines that
manipulate the model
Model
WaypointFieldTrip
1 *
PlantPatch
1 *
CurrentYearsGrowth
1 9
3DRP
LaserRangeFinder
Calipers
+getDistance()
Long2dMeasure
+grab3dSample()
3dMapper
+getDistance()
Short2dMeasurer
11
1
11
1Short2dTextBox
3dTextControl
Long2dTextBox
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
THE END