This presentation describes the tasks of a group exercise that is conducted as a bridge between the CSE 4316 system definition phase and the CSE 4317 system implementation and test phases of the CSE Senior Design capstone project.
• Document your assumptions and assertions about what the system must do and how those might affect your design. Fill in the gaps.
– Consider extensibility and potential enhancements.
– Consider potential user interaction, inputs and outputs
– Consider system responses to expected scenarios
– Consider usability, set-up, configurability, installation, etc.
– Consider what is done in dedicated hardware, and what is done in software on a central processing unit
• Document the guiding principles that you will employ in your architecture (meta-architecture)
– Ensuring the 4-I’s?
– Maximum flexibility for implementation approaches?
– What are your guidelines for defining layers and subsystems?
– What other “ilities” will guide you (portability, scalability, reusability, usability, interoperability, modifiability, reliability, …)?
• Define and document the layer structure and draw a layer diagram
– What are the functions/operations that must exist (“bubble diagram”)
– How can these functions/operations be best organized into layers?
– What is the purpose of each layer (what services does it provide within the system – to which other layers)?
– What must each layer do in order to provide these services (what functions must it perform)?
– How is each layer differentiated from other layers?
• Define and document key interfaces to/from each layer and the resultant interactions between layers.
– External (may be “none” for some layers)
– Internal (between layers)
• Provide rationale for all of your choices
– Consider independence, integrity and implementability
– Consider complexity of your approach relative to other possible approaches
• In your exercise groups:
– Walk through your layer structure
– Verify and refine the interfaces between layers
– Refine the functions of each layer
– Discuss and verify cohesion (high) within each layer
– Discuss and verify coupling (low) between layers
– Begin discussion of how you will break up each layer’s critical functions into subsystems
– Discuss high-level data flows
– Prepare a “2-minute, 2-sheet” presentation to defend your structure in our next class
• Define your subsystems
– What is the purpose of each subsystem within the layer
(what services does it provide– to which other subsystems)?
– Is the function defined for the subsystem implementable?
– Does the subsystem logically fit BEST in the layer you have it in?
• Define the data flows to/from each subsystem
– What data is needed (image, counter, text, etc.)?
– What data is created (image, counter, text, etc.)
– What is the created data used for, and by which other subsystem(s) is it needed?
• Define the inter-subsystem relationships
(producer-consumer relationship matrix)
– Do they work? Can they be implemented?
– Walk through each subsystem
– Refine the functions of each subsystem
– Verify subsystem interfaces (direct correlation to that defined for layers?)
– Discuss and verify cohesion (high) and coupling
(low) for each subsystem
– Verify producer-consumer relationships for all data elements
– Prepare to discuss/defend your architecture
• Each design group will discuss your architecture
– Key assumptions and guiding principles
– Layer diagram (no subsystems yet)
– Layer definitions (services provided)
– Data flows and producer-consumer relationships
– Key interactions between subsystems
– Various “ilities” addressed, and how
– Critical use case scenarios
• Informal and interactive format
– Each group will have 25 minutes, maximum, including allowance for interaction and Q&A
– May use PowerPoint slides, document camera, handouts, or a combination of these