Jack O’Hare Gerardo Gonzalez Jennifer Foley Vanessa Cheney Outline • Software Architecture • Implementation Problems and Solutions • Defect Prevention • Planned and Actual Schedules • Future Enhancements • Conclusion • References • Demonstration • Questions Software Architecture •Main Software Components AVL Tree The World Graphical User Interface (GUI) Back End Software Architecture AVL Tree Software Architecture Graphical User Interface Software Architecture The World •The World Main structure Keep state of changing elements in the GUI •Elements Live cells (Held in an AVL tree as Coordinates) Topologies Grid width and height Cursor position View port origin Software Architecture Graphical User Interface •Tick Event Checks the running flag •Key Event Changes the world components •Redraw Event Called every time a key event happens, on every tick, and draws elements in the window Software Architecture Graphical User Interface – Key Events Software Architecture GUI – Redraw Event Software Architecture GUI – Redraw Event Software Architecture GUI – Redraw Event Software Architecture GUI- Tick Event/Back End • •gerardosNextWorld putInTree allAliveNextRound Gives the next state Makes a tree the Takes all the with nodes from the current cells that have that need to bebeen state determined alive for checked next round Determines whether getNodesToCheck they are alive or Returns a list of the dead current live cells and Applies rules all their neighbors depending on their life state The rest of the interaction happens through key events Returns a list of all the cells for the next state • Software Architecture •Topologies Torus Klein Bottle Möbius Strip Infinite Hexagonal Grid Regular Software Architecture Topology – Hex Grid Software Architecture Proving Software Correctness -- Theorems •cell-consists-of-x-and-y •cell-left-neighbor •cell-right-neighbor •hint-neighbor-induct •torus-top-wrap-around-neighbor •klein-bottle-top-bottom-wrap-around •mobius-strip-top-bottom-wrap-around •rectangle-neighbors Implementation Problems and Solutions •Red Black Tree vs. AVL Tree AVL tree code available •Coordinate Implementation Issue Neighbor functions affected by problem with coordinates •Tree Functions Not Admitting to ACL2 Changes had to be made, since we use Coordinates as nodes •Slow Run Time Recursive functions had to be changed to speed up runtime Remaining Implementation Issues •Cursor Issue Does not behave correctly when the grid panning is being used Defect Prevention •Google Code Repository Specific rules when committing code Version control Can revert if necessary •Google Code Provides Wiki Bug tracker for issues Downloads page for document posting Link to source code Regression test documentation Planned and Actual Schedules Planned Progress Graph t8 t7 Deliverables t6 t5 t4 t3 t2 t1 1/15 1/25 2/4 2/14 2/24 3/6 Date 3/16 3/26 4/5 4/15 4/25 Planned and Actual Schedules Actual Progress Graph t8 t7 Deliverables t6 t5 t4 t3 t2 t1 1/15 1/25 2/4 2/14 2/24 3/6 Date 3/16 3/26 4/5 4/15 4/25 Future Enhancements •Addition of Click Events Currently uses only mouse events •Display the Grid Using Better Graphics Could also create a nicer interface given click events •Cost of Enhancements Implementation of click events Implementation of graphics Total cost of above mentioned enhancements, including research time would be around twelve hours Conclusion •Software Architecture •Implementation Problems and Solutions •Defect Prevention •Planned and Actual Schedules •Future Enhancements References •Google Code Website http://code.google.com/p/conway-topo/ •Wikipedia Entry for Conway’s Game of Life http://en.wikipedia.org/wiki/Conway%27s_game_of_life