Computer Aided Software Architecture Design Genevieve Queen of Table Manipulation Bartlett Abigail Princess of GUI Gray (Insram Nice Guy Shah)
Project Motivation The problem is that Software Design tends to evolve -- even as you are designing. –incorporating changes becomes quite tedious when designing on a paper or black-board. Make some things automated and easier to manipulate Automated suggestions
Motivation (cont.) From class: –“I don’t remember why I said that was a dependency” –“I’ll just squeeze [the column] in here” –“This really should be done with a computer” (said while adding a column)
Idea Write a program with input of “design rules” and output annotated DSM and graph. Automated suggestions Easy undo/redo Tool to help “experts” play with ideas Tool to help “beginners” learn about design
Description User Friendly GUI tool for defining data within the DSM. Menu driven functionality that automates the practices and features of the DSM. The ease of creating and editing Design Parameters enables the freedom to make changes in the design –w/o erasing and re-writing the matrix FOR MORE INFO...
Technology Design Structure Matrices –Well known technique to help define design decisions, elements, interfaces and component relationships –Ability to Modularize Java programming language –Good tool for building applications with an emphasis on GUIs / presentation, where performance is not an issue DYA: define your acronyms!
Sample Design Structure Matrix Design params unique wds.xx 2. count wdsx.x 3. word parse.x 4. input.x 5. top wordsxx. 6. result formatxx.x 7. outputxx. 8. files.
ScreenShot
Future Work Convert Table to a Flow Chart Apply Design Rules to Table –Start with Splitting and Substitution –Later add Inversion, Augmentation and Porting. –User Interactive Process Create a Modularized DSM Create an Extension Hierarchy Flow Chart
Lessons Learned Tool using –UI need s work – swapping columns important, and *hard* to do automated educated guesses about. Tool building –Don’t try to incorporate all cool features at once (it actually is hard to think of the simplest first prototype). –Final projects should be done in language all team members are familiar with! –Many 3 rd party java tools written for windows are buggy on Unix!