Podcast
Questions and Answers
What does the abstraction level of software reuse involve?
What does the abstraction level of software reuse involve?
- Directly reusing objects from a library.
- Using knowledge of successful abstractions in software design. (correct)
- Reusing entire application systems.
- Reusing collections of objects and object classes.
Which level of software reuse involves reusing entire application systems?
Which level of software reuse involves reusing entire application systems?
- Component level
- System level (correct)
- Object level
- Abstraction level
What is one of the costs associated with software reuse?
What is one of the costs associated with software reuse?
- The cost of user training.
- The cost of maintaining original code.
- The cost of writing new code from scratch.
- The cost of searching for reusable software. (correct)
What is the primary goal of configuration management?
What is the primary goal of configuration management?
Which activity is NOT a part of configuration management?
Which activity is NOT a part of configuration management?
What do version management systems support?
What do version management systems support?
In software reuse, which level allows direct reuse of objects from a library?
In software reuse, which level allows direct reuse of objects from a library?
What aspect does the cost of adapting reusable software include?
What aspect does the cost of adapting reusable software include?
What is essential for deciding how to provide required system functionality?
What is essential for deciding how to provide required system functionality?
What does a system context model demonstrate?
What does a system context model demonstrate?
What is the focus of an interaction model?
What is the focus of an interaction model?
How can the architectural design of a system be organized?
How can the architectural design of a system be organized?
What is highlighted about object class identification?
What is highlighted about object class identification?
Which is NOT a suggested approach to object identification?
Which is NOT a suggested approach to object identification?
What can be inferred about the iterative process of object identification?
What can be inferred about the iterative process of object identification?
Which aspect is crucial for establishing the boundaries of a system?
Which aspect is crucial for establishing the boundaries of a system?
What do structural models describe in design models?
What do structural models describe in design models?
Which component is NOT identified as an application domain object in a weather station system?
Which component is NOT identified as an application domain object in a weather station system?
What is represented by a thin rectangle in an object lifeline in sequence models?
What is represented by a thin rectangle in an object lifeline in sequence models?
Which model would you refer to for understanding how objects change their state in response to events?
Which model would you refer to for understanding how objects change their state in response to events?
What is the primary purpose of a weather station object class?
What is the primary purpose of a weather station object class?
In sequence models, how is time represented?
In sequence models, how is time represented?
Which of the following best describes subsystems in design models?
Which of the following best describes subsystems in design models?
What type of design model shows the sequence of object interactions?
What type of design model shows the sequence of object interactions?
What is the main focus of the software design phase?
What is the main focus of the software design phase?
What does the implementation phase involve?
What does the implementation phase involve?
What does COTS stand for in the context of software?
What does COTS stand for in the context of software?
What is a potential benefit of using COTS systems?
What is a potential benefit of using COTS systems?
Why might developing design models be less cost-effective for small systems?
Why might developing design models be less cost-effective for small systems?
What is a common activity in object-oriented design processes?
What is a common activity in object-oriented design processes?
What factor influences the choice of object-oriented design processes?
What factor influences the choice of object-oriented design processes?
Which of the following is NOT a common activity in the design process?
Which of the following is NOT a common activity in the design process?
What is the primary purpose of state diagrams in software design?
What is the primary purpose of state diagrams in software design?
Why is it recommended to avoid designing the interface representation in object-oriented design?
Why is it recommended to avoid designing the interface representation in object-oriented design?
Which of the following is NOT a primary focus when discussing implementation issues in software development?
Which of the following is NOT a primary focus when discussing implementation issues in software development?
What trend in software development occurred from the 1960s to the 1990s?
What trend in software development occurred from the 1960s to the 1990s?
What must be managed carefully during software development due to multiple versions?
What must be managed carefully during software development due to multiple versions?
Which design model is recommended for specifying object interfaces?
Which design model is recommended for specifying object interfaces?
Why did the approach of developing software entirely from scratch become unviable?
Why did the approach of developing software entirely from scratch become unviable?
In the context of implementation issues, what is meant by host-target development?
In the context of implementation issues, what is meant by host-target development?
What is a key feature of problem tracking systems in software development?
What is a key feature of problem tracking systems in software development?
What does an integrated development environment (IDE) typically include?
What does an integrated development environment (IDE) typically include?
Which of the following is a significant aspect of open source development?
Which of the following is a significant aspect of open source development?
Which of the following is an example of a widely known open source product?
Which of the following is an example of a widely known open source product?
What is a common issue associated with open source development?
What is a common issue associated with open source development?
What do language debugging systems provide?
What do language debugging systems provide?
What is an essential role of project support tools in software development?
What is an essential role of project support tools in software development?
What is one advantage of using graphical editing tools in software development?
What is one advantage of using graphical editing tools in software development?
Flashcards
System Context Model
System Context Model
A diagram that shows how other systems in the environment interact with the system being developed.
Interaction Model
Interaction Model
A diagram that shows how the system interacts with its environment during its operation.
Architectural Design
Architectural Design
The process of identifying the major components of a system and their interactions, often using architectural patterns like layered or client-server.
Object Class Identification
Object Class Identification
Signup and view all the flashcards
Grammatical Approach for Object Identification
Grammatical Approach for Object Identification
Signup and view all the flashcards
Tangible Approach for Object Identification
Tangible Approach for Object Identification
Signup and view all the flashcards
Behavioral Approach for Object Identification
Behavioral Approach for Object Identification
Signup and view all the flashcards
Scenario-Based Approach for Object Identification
Scenario-Based Approach for Object Identification
Signup and view all the flashcards
Software Design and Implementation
Software Design and Implementation
Signup and view all the flashcards
Software Design
Software Design
Signup and view all the flashcards
Software Implementation
Software Implementation
Signup and view all the flashcards
COTS (Commercial Off-The-Shelf Systems)
COTS (Commercial Off-The-Shelf Systems)
Signup and view all the flashcards
Object-Oriented Design
Object-Oriented Design
Signup and view all the flashcards
Structured Object-Oriented Design Processes
Structured Object-Oriented Design Processes
Signup and view all the flashcards
Common Activities in Object-Oriented Design
Common Activities in Object-Oriented Design
Signup and view all the flashcards
Define Context and Modes of Use
Define Context and Modes of Use
Signup and view all the flashcards
Hardware Object
Hardware Object
Signup and view all the flashcards
Weather Station Object
Weather Station Object
Signup and view all the flashcards
Weather Data Object
Weather Data Object
Signup and view all the flashcards
Structural Model
Structural Model
Signup and view all the flashcards
Dynamic Model
Dynamic Model
Signup and view all the flashcards
Subsystem Model
Subsystem Model
Signup and view all the flashcards
Sequence Model
Sequence Model
Signup and view all the flashcards
State Machine Model
State Machine Model
Signup and view all the flashcards
Software Reuse
Software Reuse
Signup and view all the flashcards
Abstraction Level Reuse
Abstraction Level Reuse
Signup and view all the flashcards
Object Level Reuse
Object Level Reuse
Signup and view all the flashcards
Component Level Reuse
Component Level Reuse
Signup and view all the flashcards
System Level Reuse
System Level Reuse
Signup and view all the flashcards
Reuse Costs
Reuse Costs
Signup and view all the flashcards
Configuration Management
Configuration Management
Signup and view all the flashcards
Version Management
Version Management
Signup and view all the flashcards
State Diagrams
State Diagrams
Signup and view all the flashcards
Purpose of State Diagrams
Purpose of State Diagrams
Signup and view all the flashcards
When to Use State Diagrams
When to Use State Diagrams
Signup and view all the flashcards
Object Interface Specification
Object Interface Specification
Signup and view all the flashcards
Interface Representation
Interface Representation
Signup and view all the flashcards
Multiple Object Interfaces
Multiple Object Interfaces
Signup and view all the flashcards
Interface Specification Tools
Interface Specification Tools
Signup and view all the flashcards
Problem Tracking
Problem Tracking
Signup and view all the flashcards
Integrated Development Environment (IDE)
Integrated Development Environment (IDE)
Signup and view all the flashcards
Open Source Development
Open Source Development
Signup and view all the flashcards
Linux
Linux
Signup and view all the flashcards
Open Source Components
Open Source Components
Signup and view all the flashcards
Apache Web Server
Apache Web Server
Signup and view all the flashcards
MySQL
MySQL
Signup and view all the flashcards
Using Open Source Components
Using Open Source Components
Signup and view all the flashcards
Study Notes
Software Design and Implementation
- Software design and implementation is the stage in the software engineering process where an executable software system is developed.
- Activities in design and implementation are often interleaved.
- Software design is a creative process involving identifying software components and their relationships based on customer requirements.
- Implementation is the process of turning the design into a program.
Build or Buy
- In various domains, it's often possible to buy off-the-shelf systems (COTS) that can be adapted to meet user requirements.
- This approach, using pre-built systems, can be more cost-effective and faster than developing from scratch (especially for systems like medical records).
- When adapting COTS, design focuses on using the system's configuration features to achieve the required functionality.
Object-Oriented Design Process
- Structured object-oriented design involves developing multiple system models.
- Developing and maintaining these models requires substantial effort, which may not be cost-effective for small systems.
- For large systems developed by different groups, design models are essential for communication.
Process Stages
- Diverse object-oriented design processes exist, depending on the organization.
- Common activities include defining the system's context and modes of use, designing the system architecture, identifying principal system objects, developing design models, and specifying object interfaces.
- An example process is designing for a wilderness weather station.
System Context and Interactions
- Understanding the relationships between the software and its external environment is crucial for proper system functionality and communication.
- Defining system boundaries clarifies which features belong to the designed system and which belong to other systems.
Context and Interaction Models
- A system context model illustrates the relationships between the system being developed and other systems in its environment.
- An interaction model dynamically depicts how the system interacts with its environment.
Architectural Design
- Once system-environment interactions are well-understood, system architecture design is undertaken.
- Identifying major system components, their interactions, and choosing architectural patterns (e.g., layered, client-server) is key for this stage.
- An example would be the design of an independent subsystem communicating with a weather station by broadcasting messages on a shared infrastructure.
Object Class Identification
- Identifying object classes in object-oriented design is typically not straightforward.
- It relies on the skill, experience, and domain expertise of the designers.
- Object identification is an iterative process, as it's uncommon to get it right from the outset.
Approaches to Identification
- Various approaches to object identification exist.
- Grammatical analysis based on natural language descriptions of the system.
- Identifying tangible entities and components within the application domain.
- Behavioural analysis that identifies objects based on their roles in system actions.
- Scenario-based analysis that identifies objects, attributes, and methods based on use cases.
Weather Station Object Classes
- Object class identification in a weather station system can be rooted in tangible hardware and data components.
- Example classes include hardware objects like ground thermometers or anemometers, and classes like the weather station itself and weather data.
- These classes reflect the hardware and the system's interaction with the environment, as detailed in its use-case model.
Design Models
- Design models illustrate the objects, classes, and relationships within the system.
- There are two principal types:
- Structural models depict the system's static structure based on object classes and relationships.
- Dynamic models portray dynamic interactions among objects.
Examples of Design Models
- Subsystem models demonstrate the grouping of objects into logical subsystems.
- Sequence models illustrate sequences of object interactions.
- State machine models portray how objects transition between states in response to events.
- Additional models like use-case models, aggregation models, and generalization models also exist.
Subsystem Models
- Subsystem models illustrate how the design is organized into logically related groups of objects.
- In UML, these groups are represented using packages, an encapsulation construct, to maintain logical structure.
Sequence Models
- Sequence models show the sequence of object interactions.
- Objects are positioned horizontally, and time is represented vertically.
- Interactions are designated by labelled arrows. Different arrow styles depict different interaction types.
State Diagrams
- State diagrams display how objects respond to various services and the state transitions triggered by these operations.
- State diagrams offer high-level models for system or object behavior.
Interface Specification
- Object and other component interfaces must be well-defined for parallel design.
- Designers should focus on hiding the interface representation within the object to simplify complexity.
- Objects might have multiple interfaces to accommodate various viewpoints.
- UML uses class diagrams for interface specifications. However, other programming languages may also be used.
Implementation Issues
- Implementation often involves issues beyond simple programming, such as reuse, configuration management, and development platforms.
- Reuse of existing components/systems is crucial in modern software.
- Configuration management is required to track software component versions.
- Host-target development requires deploying software to separate environments (e.g., develop on one computer, execute on another).
Reuse
- Software reuse became more prevalent in the 1990s and often involves a high-level programming language.
- Reusability of modules (e.g., functions and objects) in programming libraries was the primary means of reuse in the earlier eras.
- However, the cost-effectiveness of this approach has been increasingly problematic for larger, more complex projects as the level of code integration becomes more challenging in the face of reuse.
Reuse Levels
- Abstraction level reuse entails applying knowledge of existing successful abstractions to new designs without direct code copying.
- Object-level reuse involves employing pre-built object libraries without creating the code from scratch.
- Component-level reuse involves utilizing reusable components (sets of object and classes).
- System-level reuse includes complete pre-built application system reuse.
Reuse Costs
- Reuse can involve costs associated with evaluating existing software for applicability, purchase costs (these might be very high for large systems), adaptation costs (e.g. configuring for specific requirements), and integration costs (e.g. connecting code from different systems).
Configuration Management
- Configuration management is a crucial process for controlling the management and evolution of changing software systems.
- Its goal is to help all development team members locate system or code parts, understand any changes, and successfully complete the assembly process (compile and link components).
Configuration Management Activities
- Version management supports efficient recording and tracking of different software versions.
- System integration is necessary for specifying which software components belong to a particular version, facilitating automatic system creation from compiled components.
- Problem tracking involves reporting bugs and managing issues through a managed system; this enables developers to understand who is working on issues.
Development Platform Tools
- Integrated compiler systems help create, edit, and compile code.
- Language debugging systems aid in identifying and resolving errors.
- Graphical tools allow manipulating UML models.
- Testing tools such as JUnit are used for automated testing. These types of tools can accelerate testing and aid in identifying errors during various system integration stages.
- Project management support tools assist in handling multiple developments.
Integrated Development Environments (IDEs)
- Integrated development environments (IDEs) group various development tools into a single framework, providing a common interface for different development tasks; this aims to improve usability and efficiency.
- IDEs typically support specific languages, or offer frameworks and language support integration options.
Open Source Development
- Open source development involves publishing software source code, allowing community involvement.
- The Free Software Foundation (FSF) promotes this methodology.
- Modern open-source software frequently utilizes the Internet for efficient developer recruitment, maximizing the community of individuals contributing to the project.
Open Source Systems
- Linux is the most prominent open-source operating system, serving as a server and desktop environment.
- Other widely-used open source systems include Java, Apache's web server, and MySQL database management system.
Open Source Issues
- Key questions for considering open source components in software development include:
- Should a product use open source components?
- Should the project apply an open-source approach during its design?
Open Source Business
- Businesses that adopt open-source methodologies often structure their business models around providing support for the software rather than direct software sale.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.