Design Languages• O-O Paradigm – Use Case Diagram • Functional Requirements of the system • Actors – Class Diagram • Static structure of the system and relationships and association between the classes. – State Diagram • Show the permissible states and the transitions. – Sequence Diagram • Show the temporal dependencies between different actions and objects.
Fundamental software Design concepts• Abstraction – Procedural – Data abstraction• Refinement (improve the design component)• Modularity• Software Architecture• Control Hierarchy or Program Structure• Structure Partitioning• Data Structure• Software Procedure• Information Hiding
Modular Design Method Evaluation Criteria• Modular Decomposability (problem to sub problem)• Modular composability (reuse of existing modules)• Modular Understandability• Modular Protection (minimize the process errors)• Modular Continuity (module changes minimized)
Control Terminology• Span of control : (number of levels control within the product)• Depth (distance between top and bottom modules)• Fan-Out or Width: Number of modules controlled by particular module.• Fan-in: Number of modules control the particular module.• Visibility• Connectivity
Effective Modular Design• Functional dependency – Should have high cohesion and low coupling• Cohesion – Module focus on just one thing• Coupling – Module is connected to other modules and to the outside world.
Design heuristic for effective modularity• Evaluate the first iteration (reduce coupling and increase cohesion)• Minimize the structure with high fan out• Keep the scope of the effect• Reduce complexity• Predictable functions
Ten Heuristic for User Interface Design• Visibility of system status• Match between the system and the real world• User control and freedom• Consistency and standards• Error prevention• Recognition rather than recall• Flexibility and efficiency of use• Aesthetic (artistic) and minimalist design• Help users recognize, diagnose and recover from errors.• Help and documentation.