Chpt 7

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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?

  • 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?

  • 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?

<p>Performance and security requirements (D)</p> Signup and view all the answers

Which of the following is NOT a component involved in verifying and validating the analysis model?

<p>Database schemas (B)</p> Signup and view all the answers

What role do ‘partitions’ play in system design?

<p>Grouping similar elements based on interaction patterns (A)</p> Signup and view all the answers

Which model represents the process of creating a general class from multiple overlapping classes?

<p>Factoring (B)</p> Signup and view all the answers

What does the system design phase transition from in the Unified Process perspective?

<p>Analysis workflow to design workflow (C)</p> Signup and view all the answers

What is a partition in object-oriented design?

<p>An equivalent of a subsystem that decomposes a larger system (D)</p> Signup and view all the answers

Which layer in software architecture is responsible for interfacing with users?

<p>Human-Computer Interaction (A)</p> Signup and view all the answers

What is the primary goal of low coupling in a system?

<p>To allow independent modification of system parts (B)</p> Signup and view all the answers

Which type of coupling occurs when one object sends a message to another?

<p>Interaction Coupling (D)</p> Signup and view all the answers

Which practice is NOT recommended for reducing interaction coupling?

<p>Inheriting from a parent class without a clear relationship (A)</p> Signup and view all the answers

What does high cohesion in a module indicate?

<p>A module serves a well-defined purpose (A)</p> Signup and view all the answers

Which of the following could lead to fragile systems?

<p>Overuse of inheritance in class design (C)</p> Signup and view all the answers

Which layer is an example of the physical architecture in software design?

<p>Server (C)</p> Signup and view all the answers

What is a significant disadvantage of custom development?

<p>Is more costly than packaged software (A)</p> Signup and view all the answers

Why might packaged development be a suitable choice for common business needs?

<p>It is usually cheaper and faster to implement. (C)</p> Signup and view all the answers

What problem can arise from outsourcing the development of a system?

<p>Potential security risks and dependency (C)</p> Signup and view all the answers

For a time-sensitive project, which design strategy is most advisable?

<p>Packaged software or outsourcing for speed (C)</p> Signup and view all the answers

Which factor should be prioritized if a company has a unique system requirement?

<p>Opting for custom development (A)</p> Signup and view all the answers

What does the term 'connascence' refer to in system design?

<p>Dependency between modules (C)</p> Signup and view all the answers

What is the primary concern of an IT manager when implementing a new system?

<p>Ensuring technical feasibility and maintenance (B)</p> Signup and view all the answers

What is a potential drawback of packaged software for a specific organization?

<p>Fit with business requirements may vary (B)</p> Signup and view all the answers

What does high cohesion indicate about a class or method?

<p>It is focused on a single, well-defined purpose. (A)</p> Signup and view all the answers

Which of the following is an example of low cohesion?

<p>A method that calculates a total and then prints a report. (D)</p> Signup and view all the answers

What is a best practice for maintaining class cohesion?

<p>Ensure methods focus on a single, well-defined purpose. (D)</p> Signup and view all the answers

What is the primary aim of minimizing connascence across different modules?

<p>To reduce the interdependencies between modules. (A)</p> Signup and view all the answers

What does connascence refer to in software design?

<p>The need for different modules to change together. (B)</p> Signup and view all the answers

What best describes the concept of generalization/specialization cohesion?

<p>A subclass should inherit based on an 'is-a' relationship. (A)</p> Signup and view all the answers

What is a recommended practice to encapsulate logic and data tightly?

<p>Limit methods that share behavior to tightly related methods. (D)</p> Signup and view all the answers

Which of the following is a consequence of low cohesion in a module?

<p>Increased complexity and difficulty in management. (B)</p> Signup and view all the answers

Flashcards

System Design

The phase of software development where we translate business requirements into a blueprint for building the system.

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

Transitioning the analysis models into design models, focusing on how the system will operate rather than just what it does.

Factoring

Separating a module into a stand-alone module, creating a new class or method.

Signup and view all the flashcards

Partitions and Collaborations

Grouping similar elements into subsystems or partitions based on how they interact with each other.

Signup and view all the flashcards

What is the goal of System Design?

To determine how the system will be built, ensuring it aligns with the business requirements, technical considerations, and environmental factors.

Signup and view all the flashcards

What are the key steps in System Design?

  1. Verifying and validating the analysis model, 2. Evolving the analysis models into design models.
Signup and view all the flashcards

What is the Unified Process?

A software development framework that helps guide the system design process, moving from the analysis phase to the design phase.

Signup and view all the flashcards

Subsystem

A smaller part of a larger system that performs a specific function. Example: A payroll system within a hospital management system.

Signup and view all the flashcards

Partition (Object-Oriented)

An object-oriented equivalent of a subsystem, representing a modular piece of a software system.

Signup and view all the flashcards

Layers in Software Architecture

Distinct levels of software structure that represent different aspects of the system, such as data management, user interface, and physical architecture.

Signup and view all the flashcards

Coupling

The degree of interdependence between different modules (classes, objects, or methods) in a system.

Signup and view all the flashcards

Tight Coupling

High interdependency between modules, where changes in one module often require changes in others.

Signup and view all the flashcards

Loose Coupling

Low interdependency between modules, allowing changes in one module without affecting others.

Signup and view all the flashcards

Interaction Coupling

Occurs when one object sends a message to another, leading to dependencies between objects.

Signup and view all the flashcards

Inheritance Coupling

Arises from the inheritance relationship between classes, where changes in a parent class affect child classes.

Signup and view all the flashcards

Cohesion

A measure of how well the responsibilities within a module are related and focused. High cohesion means a module is dedicated to one clear purpose, making it easier to understand and maintain.

Signup and view all the flashcards

Low Cohesion

Occurs when a module tries to handle too many unrelated tasks, causing complexity and difficulty in management.

Signup and view all the flashcards

Method Cohesion

A method should perform only one specific task. For example, a calculateTotal() method should only calculate totals, not print a report.

Signup and view all the flashcards

Class Cohesion

A class should represent a single entity or concept, containing attributes and methods related to its role. For example, an Employee class should contain employee-specific details like name and salary.

Signup and view all the flashcards

Generalization/Specialization Cohesion

Measures how well a subclass fits within an inheritance hierarchy. A subclass should inherit from a superclass only when there is a 'is-a' relationship.

Signup and view all the flashcards

Connascence

The degree to which different parts of a system must change together. If two modules are connascent, changing one typically requires changing the other.

Signup and view all the flashcards

Minimizing Connascence

Reduce the number of dependencies between modules to minimize the impact of changes. For example, separate unrelated features into different modules.

Signup and view all the flashcards

Maximizing Connascence within a Module

Increase cohesion within a module by keeping closely related methods together. This allows changes to be controlled and localized.

Signup and view all the flashcards

Custom Development

Building a system from scratch to fit specific business needs.

Signup and view all the flashcards

Packaged Development

Purchasing pre-built software and customizing it for your organization.

Signup and view all the flashcards

Outsourcing Development

Hiring an external vendor to build or manage the system.

Signup and view all the flashcards

When is custom development best?

When the system is unique and requires complete control and flexibility in design.

Signup and view all the flashcards

When is packaged development best?

When the system is common and speed and cost are priorities.

Signup and view all the flashcards

When is outsourcing best?

When you need specialized expertise or want to reduce internal workload.

Signup and view all the flashcards

What is the key factor to consider when choosing a design strategy?

Your business needs, including project timeline, budget, in-house experience, and complexity of the system.

Signup and view all the flashcards

What is the tradeoff with custom development?

While offering complete control and flexibility, custom development is often time-consuming and expensive.

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.

Quiz Team

Related Documents

More Like This

Chpt 7 EMR Patient Assessment: Breathing Quiz
29 questions
Chpt. 18
25 questions

Chpt. 18

EuphoricProbability avatar
EuphoricProbability
Use Quizgecko on...
Browser
Browser