SAD CH7
Purpose of Analysis and Design
Purpose of Analysis: Determine what the business needs are.
Purpose of Design: Decide how to build the system.
Activity during Design: Evolving the set of analysis representations into design representations.
Considerations During Design:
Integration with existing systems.
Data conversion from legacy systems.
Utilizing in-house skills.
Goals of Design
Create a blueprint for an implementable system.
Examine several design strategies:
Build from scratch.
Purchase and customize.
Outsource.
Investigate viability of each alternative.
Completion of detailed design of individual classes and methods:
Focus on storage and functionality.
Techniques for Detailed Design
Techniques Include:
CRC (Class-Responsibility-Collaboration) Cards.
Class Diagrams.
Contract Specifications.
Method Specifications.
Database Design.
These provide final design details necessary for the construction phase.
User Interaction in Design
Activities include designing:
User Interface.
System Inputs.
System Outputs.
Techniques for user interaction:
Storyboarding.
Prototyping.
Physical Architecture Decisions
Decisions regarding:
Hardware and software for the system.
Processing organization: centralized, distributed, or both.
Need to consider:
Global issues.
Security implications.
Interrelated Steps in Design
Design steps are interrelated; analysts may go back and forth among them.
For example, prototyping often reveals additional information required.
Centralized systems may need extensive hardware/software if switching to a distributed model.
Common Design Mistakes
Classic Mistakes to Avoid:
Reducing Design Time: Leads to missing important details.
Solution: Use timeboxing to eliminate or postpone non-critical features.
Feature Creep: 25% of requirements typically change.
Solution: Ensure awareness of changes' impacts on time and cost; defer non-vital changes.
Silver Bullet Syndrome: Believing tools will solve all problems and reduce time/cost drastically.
Solution: Be skeptical of claims that seem too good.
Switching Tools Mid-Project: Learning new tools may incur more costs and delays.
Solution: Only switch if absolutely necessary, accounting for learning time in the schedule.
Verifying and Validating Analysis Models
Importance: Ensure analysis models faithfully represent the problem domain.
Verification involves:
Checking fidelity among models (e.g., activity diagrams, use-case descriptions).
Ensuring correlation between behavioral state machines and class diagrams.
The analysis models need to be verified before evolving them into design models.
Evolving Analysis Models into Design Models
Purpose of analysis models: Represent business problems with collaborating objects, focusing on functional requirements.
Design models must address both functional requirements and nonfunctional requirements, like performance.
Design models refine analysis models by adding environment details.
Design Reflection on Classes
Review existing classes for:
Necessity.
Completeness.
Optimization (attributes/methods).
Verify attributes and methods through iterative analysis lens.
Techniques for Evolving Models
Factoring: Create stand-alone modules by separating out common attributes/methods into new classes.
Abstraction: Create higher-level classes from lower-level specifics (e.g., identify Employee class from Nurse, Receptionist).
Refinement: Identify subclasses based on specific differences when needed.
Partitions and Collaborations
Partitions: Equivalent to subsystems to reduce complexity of system representation.
Use packages and package diagrams to model.
Individual classes can support multiple collaborations based on use cases.
Review class diagrams for relationships among classes to identify opportunities for merging collaborations.
Identifying Layers in Design
Introduce layers to represent software architecture without overwhelming complexity.
Standard Layers:
Foundation Layer
Problem Domain Layer
Data Management Layer
Human-Computer Interaction Layer
Physical Architecture Layer
Characteristics of Each Layer
Foundation Layer: Basic classes necessary for object-oriented applications (e.g., data types, structures).
Problem Domain Layer: Functional focus; requires refining classes for effective implementation.
Data Management Layer: Addresses object persistence and storage options (types include relational databases, NoSQL).
Human-Computer Interaction Layer: Classes for UI elements (buttons, windows). Important for usability and cross-platform design.
Physical Architecture Layer: Software execution pertaining to network and hardware configurations (includes cloud considerations).
Packages and Package Diagrams
Utilize UML for modeling collaborations, partitions, and layers.
Package Characteristics:
Serve as organizational constructs for simplifying design.
Use dependency relationships to illustrate inter-package modifications.
Creating Package Diagrams
Guidelines for package diagrams:
Logical organization of classes.
Clear dependency relationships.
Cohesiveness within packages, ensuring classes belong together.
Design Strategies
Custom Development: Full control over design and flexibility; however, high risk and resource-intensive.
Packaged Software: Efficient for non-unique business needs but may require significant organizational changes.
Outsourcing: Least internal resource use, ideal for companies lacking relevant expertise; requires management and control over vendor.
Selecting a Design Strategy
Assess based on:
Business needs (common vs. unique).
In-house experience and technical skills.
Project management abilities/requirements.
Timeline considerations.
Selecting an Acquisition Strategy
Collect information on tools and solutions through networking and RFPs.
RFPs should comprehensively detail the project.
RFIs and RFQs serve as shorter, less detailed alternatives for gathering vendor information.
Utilizing an Alternative Matrix
Use an alternative matrix to weigh and compare design alternatives.
Include evaluative criteria, pros/cons, and weighting strategies for decision-making.
Careful scoring to minimize bias in decisions.
Making Final Decisions
Engage both business and technical stakeholders in final decision-making post-analysis of various alternatives.
Ensure clarity in terms of requirements and anticipated outcomes for successful design implementation.