Podcast
Questions and Answers
What is the main goal of the system design phase?
What is the main goal of the system design phase?
- To document user requirements
- To verify the analysis models only
- To capture business needs
- To decide how the system will be built (correct)
What is the first step in the system design process?
What is the first step in the system design process?
- Planning the design
- Evolving analysis models into design
- Verifying and validating the analysis model (correct)
- Construction of the system
What does ‘factoring’ involve during the system design process?
What does ‘factoring’ involve during the system design process?
- Creating multiple classes for each module
- Separating a module into a stand-alone module (correct)
- Documenting use cases in detail
- Testing the system design for errors
What is the focus when evolving analysis models into design models?
What is the focus when evolving analysis models into design models?
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?
What role do ‘partitions’ play in system design?
What role do ‘partitions’ play in system design?
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?
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?
What is a partition in object-oriented design?
What is a partition in object-oriented design?
Which layer in software architecture is responsible for interfacing with users?
Which layer in software architecture is responsible for interfacing with users?
What is the primary goal of low coupling in a system?
What is the primary goal of low coupling in a system?
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?
Which practice is NOT recommended for reducing interaction coupling?
Which practice is NOT recommended for reducing interaction coupling?
What does high cohesion in a module indicate?
What does high cohesion in a module indicate?
Which of the following could lead to fragile systems?
Which of the following could lead to fragile systems?
Which layer is an example of the physical architecture in software design?
Which layer is an example of the physical architecture in software design?
What is a significant disadvantage of custom development?
What is a significant disadvantage of custom development?
Why might packaged development be a suitable choice for common business needs?
Why might packaged development be a suitable choice for common business needs?
What problem can arise from outsourcing the development of a system?
What problem can arise from outsourcing the development of a system?
For a time-sensitive project, which design strategy is most advisable?
For a time-sensitive project, which design strategy is most advisable?
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?
What does the term 'connascence' refer to in system design?
What does the term 'connascence' refer to in system design?
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?
What is a potential drawback of packaged software for a specific organization?
What is a potential drawback of packaged software for a specific organization?
What does high cohesion indicate about a class or method?
What does high cohesion indicate about a class or method?
Which of the following is an example of low cohesion?
Which of the following is an example of low cohesion?
What is a best practice for maintaining class cohesion?
What is a best practice for maintaining class cohesion?
What is the primary aim of minimizing connascence across different modules?
What is the primary aim of minimizing connascence across different modules?
What does connascence refer to in software design?
What does connascence refer to in software design?
What best describes the concept of generalization/specialization cohesion?
What best describes the concept of generalization/specialization cohesion?
What is a recommended practice to encapsulate logic and data tightly?
What is a recommended practice to encapsulate logic and data tightly?
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?
Flashcards
System Design
System Design
The phase of software development where we translate business requirements into a blueprint for building the system.
Verify and Validate Analysis Model
Verify and Validate Analysis Model
Ensuring that the analysis models (use cases, class diagrams, etc.) accurately represent the business requirements.
Evolving Analysis Models into Design
Evolving Analysis Models into Design
Transitioning the analysis models into design models, focusing on how the system will operate rather than just what it does.
Factoring
Factoring
Signup and view all the flashcards
Partitions and Collaborations
Partitions and Collaborations
Signup and view all the flashcards
What is the goal of System Design?
What is the goal of System Design?
Signup and view all the flashcards
What are the key steps in System Design?
What are the key steps in System Design?
Signup and view all the flashcards
What is the Unified Process?
What is the Unified Process?
Signup and view all the flashcards
Subsystem
Subsystem
Signup and view all the flashcards
Partition (Object-Oriented)
Partition (Object-Oriented)
Signup and view all the flashcards
Layers in Software Architecture
Layers in Software Architecture
Signup and view all the flashcards
Coupling
Coupling
Signup and view all the flashcards
Tight Coupling
Tight Coupling
Signup and view all the flashcards
Loose Coupling
Loose Coupling
Signup and view all the flashcards
Interaction Coupling
Interaction Coupling
Signup and view all the flashcards
Inheritance Coupling
Inheritance Coupling
Signup and view all the flashcards
Cohesion
Cohesion
Signup and view all the flashcards
Low Cohesion
Low Cohesion
Signup and view all the flashcards
Method Cohesion
Method Cohesion
Signup and view all the flashcards
Class Cohesion
Class Cohesion
Signup and view all the flashcards
Generalization/Specialization Cohesion
Generalization/Specialization Cohesion
Signup and view all the flashcards
Connascence
Connascence
Signup and view all the flashcards
Minimizing Connascence
Minimizing Connascence
Signup and view all the flashcards
Maximizing Connascence within a Module
Maximizing Connascence within a Module
Signup and view all the flashcards
Custom Development
Custom Development
Signup and view all the flashcards
Packaged Development
Packaged Development
Signup and view all the flashcards
Outsourcing Development
Outsourcing Development
Signup and view all the flashcards
When is custom development best?
When is custom development best?
Signup and view all the flashcards
When is packaged development best?
When is packaged development best?
Signup and view all the flashcards
When is outsourcing best?
When is outsourcing best?
Signup and view all the flashcards
What is the key factor to consider when choosing a design strategy?
What is the key factor to consider when choosing a design strategy?
Signup and view all the flashcards
What is the tradeoff with custom development?
What is the tradeoff with custom development?
Signup and view all the flashcards
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.