COSC 3351 Software Design Recap for the first quiz Spring 2008 For the 1 st Quiz Three large topic areas: UML syntax and diagrams Software architectural styles Object oriented design principles A couple of filler questions from other lectures Software Engineering Design quality Design methodology 1
Introduction to Software Engineering We talked about various software development models Waterfall model ( with prototyping ) V model Phased Development: increments and iterations Spiral model Agile methods We discussed the individual steps e.g. in the waterfall model Requirements analysis System + Program Design Unit, Integration and System testing System Delivery Introduction to Software Engineering Describe 1 n of the models Describe the individual steps in a model Comparison of 2 n models(?) 2
Design Quality Design Plan: Objectives Description of product Rationales Plan of Production Description of Usage Different views in quality management: Transcendental User Manufacturing Product Value Design Quality Hierarchical software quality models McCall s model ISO 9126 Relational software quality models Perry s model Software design attributes Product oriented attributes Process oriented attributes 3
Design Methodology Design strategies Difference between decompositional and compositional methods Design templates Incremental and evolutionary strategies UML What is UML UML syntax Actors Boxes Cardinality Arrows Constraints stereotypes What types of UML diagrams did we discuss Use case Class Sequence (Package) (Statechart) 4
UML Explain components of a diagram Explain a (simple) UML diagram Draw a (simple) UML diagram Architectural Design Architectural styles Call and return Data centered Independent components Data flow Virtual machine Main program and subroutine Layered system Object oriented Data abstraction Abstract data types Repository Blackboard Client server Communicating processes Peer-to-peer Event based implicit invocation Pipe and filter Batch sequential processing Interpreter Rule based system 5
Architectural Design What are the characteristics of each of these design styles? Comparison of different styles What are strength and weaknesses? Alternative design for a given problem evaluated based on scenarios of interest Object Oriented design principles Odors of bad software Rigidity: every change forces many other changes to other parts of the code Fragility: changes cause the system to break in places that have no conceptual relationship to the part that was changed Immobility: hard to split the system into components that can be reused Viscosity: doing things right is more difficult than doing things wrong Needless complexity: wrongly anticipated changes Needless repetition: excessive use of the mouse Opacity: tendency of code to be difficult to read and understand 6
Object Oriented design principles SRP: Single Responsibility Principle OCP: The Open-Close Principle LSP: The Liskov Substitution Principle DIP: The Dependency Inversion Principle ISP: The Interface Segregation Principle Explain the main ideas behind each principle Given a (simple) code sequence, can you tell which principles are violated and what odors it causes? 7