1/60
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
System Reuse
Reusing complete systems, including multiple application programs.
Application Reuse
Reusing an application by incorporating it into others or developing application families.
Component Reuse
Reusing components of an application, from sub-systems to single objects.
Object and Function Reuse
Reusing small-scale software components implementing a single object or function.
Accelerated Development
Speeding up system production by reducing development and validation time through software reuse.
Effective Use of Specialists
Developing reusable software by specialists to encapsulate their knowledge.
Increased Dependability
Reused software is more dependable due to prior testing and fixing of design and implementation faults.
Lower Development Costs
Reducing costs by writing fewer lines of code through software reuse.
Reduced Process Risk
Knowing existing software costs versus uncertain development costs reduces project cost estimation errors.
Standards Compliance
Implementing standards like user interface standards using reusable components for consistency.
Creating a Component Library
Populating and ensuring usability of a reusable component library, adapting development processes.
Adapting Reusable Components
Discovering, understanding, and sometimes modifying reusable components for new environments.
Increased Maintenance Costs
Higher maintenance costs if source code of reused software is unavailable, leading to compatibility issues.
Lack of Tool Support
Some tools do not support development with reuse, complicating integration with component libraries.
Not-Invented-Here Syndrome
Engineers rewriting components due to trust issues or the challenge of creating original software.
Range of Reuse Approaches
Various levels of reuse from simple functions to complete application systems.
Application Frameworks
Collections of abstract and concrete classes adapted to create application systems.
Application System Integration
Integrating multiple application systems for extended functionality.
Architectural Patterns
Using standard software architectures to support common application system types.
Aspect-Oriented Software Development
Weaving shared components into applications at different stages during compilation.
Component-Based Software Engineering
Developing systems by integrating collections of objects conforming to component-model standards.
Configurable Application Systems
Designing domain-specific systems configurable to specific customer needs.
Design Patterns
Representing generic abstractions across applications as design patterns.
ERP Systems
Configuring large-scale systems encapsulating generic business functionality for organizations.
Legacy System Wrapping
Providing access to legacy systems through defined interfaces.
Model-Driven Engineering
Representing software as domain models and generating code from these models.
Program Generators
Systems embedding knowledge to generate domain-specific systems from user-supplied models.
Program Libraries
Class and function libraries for commonly used abstractions available for reuse.
Service-Oriented Systems
Developing systems by linking shared services, which may be externally provided.
Software Product Lines
Generalizing application types around a common architecture for adaptation to different customers.
Systems of Systems
Integrating two or more distributed systems to create a new system.
Framework Definition
An integrated set of software artifacts collaborating to provide a reusable architecture for related applications.
Framework Complexity
Frameworks provide a skeleton architecture but can be complex, requiring time to use effectively.
System Infrastructure Frameworks
Supporting the development of system infrastructures like communications, user interfaces, and compilers.
Middleware Integration Frameworks
Standards and classes supporting component communication and information exchange.
Middleware integration frameworks
Support component communication and information exchange
Enterprise application frameworks
Aid in developing specific application types like telecommunications
Software product lines
Applications with generic functionality adaptable for specific contexts
Software product line
Set of applications with shared components but specialized for different needs
Adaptation in product lines
Involves component/system configuration, adding new components, selecting from a library, and modifying components
Core components
Provide infrastructure support, remain unmodified in new product line instances
Configurable components
Modified and specialized for new applications, may use a built-in configuration language
Domain-specific components
Specialized components replaced in new product line instances
Object-oriented features in frameworks
Application frameworks use polymorphism for extensions, unlike product lines
Architectures in product lines
Structured to separate subsystems and allow modifications
Elicit stakeholder requirements
Use existing family members as prototypes to understand needs
Design time configuration
Modifying a common product line core to create a new system
Deployment time configuration
Generic system designed for customer configuration using embedded data
Component selection
Choosing modules providing required functionality in a system
Workflow and rule definition
Defining information processing workflows and validation rules
Parameter definition
Specifying values for system parameters reflecting the application instance
Application system product
Adaptable software system without changing source code, with generic features
Configurable application systems
Generic systems designed to support specific business types or activities
Domain-specific systems
Support business functions likely needed by various users
Integrated application systems
Include multiple application system products or legacy systems
Service-oriented approach
Access application system functionality through standard service interfaces
Software reuse benefits
Lower costs, faster development, increased dependability
Application frameworks
Collections of objects designed for reuse through specialization
Application system reuse
Reusing large-scale off-the-shelf systems to reduce costs and development time
Potential problems with system reuse
Lack of control over functionality, system evolution, inter-operability, and vendor support
Design patterns in frameworks
Incorporate good design practices for reuse and specialization