Podcast
Questions and Answers
What is the main goal of the system design phase?
What is the main goal of the system design phase?
What is the first step in the system design process?
What is the first step in the system design process?
What does ‘factoring’ involve during the system design process?
What does ‘factoring’ involve during the system design process?
What is the focus when evolving analysis models into design models?
What is the focus when evolving analysis models into design models?
Signup and view all the answers
Which of the following is NOT a component involved in verifying and validating the analysis model?
Which of the following is NOT a component involved in verifying and validating the analysis model?
Signup and view all the answers
What role do ‘partitions’ play in system design?
What role do ‘partitions’ play in system design?
Signup and view all the answers
Which model represents the process of creating a general class from multiple overlapping classes?
Which model represents the process of creating a general class from multiple overlapping classes?
Signup and view all the answers
What does the system design phase transition from in the Unified Process perspective?
What does the system design phase transition from in the Unified Process perspective?
Signup and view all the answers
What is a partition in object-oriented design?
What is a partition in object-oriented design?
Signup and view all the answers
Which layer in software architecture is responsible for interfacing with users?
Which layer in software architecture is responsible for interfacing with users?
Signup and view all the answers
What is the primary goal of low coupling in a system?
What is the primary goal of low coupling in a system?
Signup and view all the answers
Which type of coupling occurs when one object sends a message to another?
Which type of coupling occurs when one object sends a message to another?
Signup and view all the answers
Which practice is NOT recommended for reducing interaction coupling?
Which practice is NOT recommended for reducing interaction coupling?
Signup and view all the answers
What does high cohesion in a module indicate?
What does high cohesion in a module indicate?
Signup and view all the answers
Which of the following could lead to fragile systems?
Which of the following could lead to fragile systems?
Signup and view all the answers
Which layer is an example of the physical architecture in software design?
Which layer is an example of the physical architecture in software design?
Signup and view all the answers
What is a significant disadvantage of custom development?
What is a significant disadvantage of custom development?
Signup and view all the answers
Why might packaged development be a suitable choice for common business needs?
Why might packaged development be a suitable choice for common business needs?
Signup and view all the answers
What problem can arise from outsourcing the development of a system?
What problem can arise from outsourcing the development of a system?
Signup and view all the answers
For a time-sensitive project, which design strategy is most advisable?
For a time-sensitive project, which design strategy is most advisable?
Signup and view all the answers
Which factor should be prioritized if a company has a unique system requirement?
Which factor should be prioritized if a company has a unique system requirement?
Signup and view all the answers
What does the term 'connascence' refer to in system design?
What does the term 'connascence' refer to in system design?
Signup and view all the answers
What is the primary concern of an IT manager when implementing a new system?
What is the primary concern of an IT manager when implementing a new system?
Signup and view all the answers
What is a potential drawback of packaged software for a specific organization?
What is a potential drawback of packaged software for a specific organization?
Signup and view all the answers
What does high cohesion indicate about a class or method?
What does high cohesion indicate about a class or method?
Signup and view all the answers
Which of the following is an example of low cohesion?
Which of the following is an example of low cohesion?
Signup and view all the answers
What is a best practice for maintaining class cohesion?
What is a best practice for maintaining class cohesion?
Signup and view all the answers
What is the primary aim of minimizing connascence across different modules?
What is the primary aim of minimizing connascence across different modules?
Signup and view all the answers
What does connascence refer to in software design?
What does connascence refer to in software design?
Signup and view all the answers
What best describes the concept of generalization/specialization cohesion?
What best describes the concept of generalization/specialization cohesion?
Signup and view all the answers
What is a recommended practice to encapsulate logic and data tightly?
What is a recommended practice to encapsulate logic and data tightly?
Signup and view all the answers
Which of the following is a consequence of low cohesion in a module?
Which of the following is a consequence of low cohesion in a module?
Signup and view all the answers
Study Notes
Chapter 7: Moving on to Design
- The System Design phase follows system analysis.
- System design involves translating identified requirements into a blueprint for building the system.
- The goal is to determine the system's structure considering business needs and technical/environmental factors.
Steps in System Design
- Verify and Validate Analysis Model: Check if analysis models (use cases, diagrams, etc.) accurately represent the business requirements. This ensures consistency and reduces future development errors. Related diagrams should align to the same functional requirements.
- Evolving Analysis Models into Design: Analysis models evolve into design models. The focus transitions from capturing business needs to designing how the system operates within its environment (e.g., performance, security). This phase refines classes, attributes, methods, and their interactions. It moves from the analysis workflow towards the elaboration and construction phases.
Evolving Analysis Models into Design Strategies
- Factoring: Separating a module into a separate module (new class or method). Useful when multiple classes share similar attributes or methods. For instance, creating an "Employee" class from overlapping parts of "Nurse," "Doctor," and "Receptionist" classes.
- Partitions and Collaboration: Grouping similar elements in a system based on interactions (object-oriented equivalent of subsystems). A system can be decomposed into component systems (e.g., accounting, accounts payable, payroll). Example: Hospital management systems split into payroll, appointment scheduling, and patient records. This is driven by activity patterns among objects.
- Layers: Layers represent elements of the evolving software architecture (e.g., problem domain, data management, human-computer interaction, physical architecture). For instance, a system might have layers including DataInputStream, Date, Enumeration, Employee, Customer, Button, Panel, and Server. The primary focus of the design phase shifts from the problem domain to the system's environment including user interface and physical architecture.
Design Quality
- Coupling: The level of interdependence between modules (classes, objects, or methods). Tight coupling means changes in one module often necessitate changes in others. Loose coupling is preferred for adaptability and maintainability. Best practices include focusing on sending messages to closely related objects. Reducing the number of classes an object interacts with directly also minimizes interaction coupling. Inheritance coupling needs to be used carefully, as overuse leads to tightly coupled hierarchies.
- Cohesion: How closely related the responsibilities of a module are. High cohesion occurs when a module has a single, well-defined purpose. Conversely, low cohesion happens when unrelated tasks are combined. Best practices include grouping attributes and methods that directly relate to the module's purpose, ensuring methods have single purposes.
- Connascence: The degree to which different system parts must change together. Best practices include minimizing dependencies between modules and maximizing connascence within a module for control and limited scope. Encapsulating logic and data can prevent cascading changes across the system.
Design Strategies
- Custom Development: Building the system from scratch to fit specific business needs. Provides complete control and flexibility but is time-consuming and costly.
- Packaged Development: Using pre-built software and customizing for the organization. Faster implementation and cheaper than custom, but flexibility is limited.
- Outsourcing: Hiring external vendors to build or manage the system. Reduces internal workload, leverages expertise, but may have security risks and limited control.
Choosing the Right Strategy
- Consider the unique aspects of the business needs and required skills. Consider in-house expertise, required time frame. If there are common needs, then packaged software may be more efficient.
Roles in the Development Process
- IT manager is concerned with technical feasibility, integration, and maintenance.
- Software developer is focused on innovation and technical aspects.
- Project manager focuses on deadlines, resource management.
- Customer service representative focuses on creating user-friendly systems for customer service efficiency.
- Business owner (CEO) is concerned with overall business growth, cost-effectiveness, and quick implementation.
Class Exercises
- Students are asked to compare and contrast different class diagram visualizations, considering issues of cohesion, coupling, and connascence.
- The scenarios presented involve a retail company seeking a CRM system implementation, including a deadline pressure and resource limitations.
- Different roles within the organization (IT Manager, Developers, Project Manager) have specific issues and priorities, including budget, technical expertise and deadlines.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.