Podcast
Questions and Answers
In most engineering disciplines, how are systems typically designed?
In most engineering disciplines, how are systems typically designed?
- By focusing on original development and minimizing the use of external components.
- By composing existing components that have been used in other systems. (correct)
- By purchasing off-the-shelf software and integrating it.
- By developing completely novel systems for each unique problem.
Which factor has significantly contributed to the increased focus on reuse-based development in software engineering over the past decade?
Which factor has significantly contributed to the increased focus on reuse-based development in software engineering over the past decade?
- Reduced emphasis on software validation and verification.
- A shift towards prioritizing original development over reusing existing components.
- The need to achieve better software, more quickly and at a lower cost. (correct)
- A decline in the complexity of software systems.
Which of the following reuse types involves using complete systems, including multiple application programs?
Which of the following reuse types involves using complete systems, including multiple application programs?
- Object and function reuse
- Application reuse
- System reuse (correct)
- Component reuse
An application is incorporated without change into another, or application families are developed. This is an example of...
An application is incorporated without change into another, or application families are developed. This is an example of...
What is the focus of object and function reuse within software engineering?
What is the focus of object and function reuse within software engineering?
Bringing a system to market as early as possible is often more important than overall development costs. Which of the following benefits of software reuse does this reflect?
Bringing a system to market as early as possible is often more important than overall development costs. Which of the following benefits of software reuse does this reflect?
How does software reuse contribute to the effective use of specialists in a development team?
How does software reuse contribute to the effective use of specialists in a development team?
Why is reused software often considered more dependable than newly developed software?
Why is reused software often considered more dependable than newly developed software?
Which of the following benefits of software reuse most directly addresses project management concerns?
Which of the following benefits of software reuse most directly addresses project management concerns?
How does the reuse of standard user interfaces contribute to improved dependability for end users?
How does the reuse of standard user interfaces contribute to improved dependability for end users?
One potential problem with software reuse is the cost of creating, maintaining, and using a component library. Which outcome would most likely increase these costs?
One potential problem with software reuse is the cost of creating, maintaining, and using a component library. Which outcome would most likely increase these costs?
What is a significant challenge related to finding, understanding, and adapting reusable software components?
What is a significant challenge related to finding, understanding, and adapting reusable software components?
Under what circumstance might reusing a software system or component lead to increased maintenance costs?
Under what circumstance might reusing a software system or component lead to increased maintenance costs?
Why might a lack of tool support pose a problem for development that incorporates software reuse?
Why might a lack of tool support pose a problem for development that incorporates software reuse?
What is the 'Not-invented-here' syndrome, and how does it relate to software reuse?
What is the 'Not-invented-here' syndrome, and how does it relate to software reuse?
Which of the following statements best describes the scope of the 'reuse landscape'?
Which of the following statements best describes the scope of the 'reuse landscape'?
Which approach to software reuse involves collections of abstract and concrete classes adapted and extended to create application systems?
Which approach to software reuse involves collections of abstract and concrete classes adapted and extended to create application systems?
Selecting standard software architectures that support common types of application systems to use as the basis of applications, is an example of...
Selecting standard software architectures that support common types of application systems to use as the basis of applications, is an example of...
Which approach to software reuse involves integrating two or more application systems to provide extended functionality?
Which approach to software reuse involves integrating two or more application systems to provide extended functionality?
What distinguishes aspect-oriented software development from component-based software engineering in the context of software reuse?
What distinguishes aspect-oriented software development from component-based software engineering in the context of software reuse?
How are configurable application systems designed?
How are configurable application systems designed?
What role do design patterns play in supporting software reuse?
What role do design patterns play in supporting software reuse?
What is the primary purpose of 'legacy system wrapping' in the context of software reuse?
What is the primary purpose of 'legacy system wrapping' in the context of software reuse?
How does model-driven engineering support software reuse?
How does model-driven engineering support software reuse?
A generator system embeds knowledge of a type of application and is used to generate systems in that domain from a user-supplied system model. This is an example of using which approach that supports software reuse?
A generator system embeds knowledge of a type of application and is used to generate systems in that domain from a user-supplied system model. This is an example of using which approach that supports software reuse?
Which of the following approaches to software reuse focuses on generalizing an application type around a common architecture to adapt it for different customers?
Which of the following approaches to software reuse focuses on generalizing an application type around a common architecture to adapt it for different customers?
Integrating two or more distributed systems to create a new system is an example of...
Integrating two or more distributed systems to create a new system is an example of...
When planning for software reuse, which factor helps to determine the types of components or systems that should be considered for reuse?
When planning for software reuse, which factor helps to determine the types of components or systems that should be considered for reuse?
What is the role of abstract and concrete classes in application frameworks?
What is the role of abstract and concrete classes in application frameworks?
What architectural pattern is commonly used in web application frameworks (WAFs) for managing user interaction?
What architectural pattern is commonly used in web application frameworks (WAFs) for managing user interaction?
In the Model-View-Controller (MVC) pattern, what is the role of the 'Controller'?
In the Model-View-Controller (MVC) pattern, what is the role of the 'Controller'?
What feature is commonly included in modern web application frameworks to enable more interactive web pages?
What feature is commonly included in modern web application frameworks to enable more interactive web pages?
Why can extending frameworks be challenging?
Why can extending frameworks be challenging?
What is the primary characteristic of 'System infrastructure frameworks'?
What is the primary characteristic of 'System infrastructure frameworks'?
What is the function of 'Middleware integration frameworks'?
What is the function of 'Middleware integration frameworks'?
Which statement best describes the difference between application frameworks and software product lines regarding object-oriented features?
Which statement best describes the difference between application frameworks and software product lines regarding object-oriented features?
How do software product lines differ from application frameworks in their focus?
How do software product lines differ from application frameworks in their focus?
What is a critical characteristic of product line architectures that enables modification and separation of different subsystems?
What is a critical characteristic of product line architectures that enables modification and separation of different subsystems?
What is involved during component selection in deployment time configuration?
What is involved during component selection in deployment time configuration?
What is a key characteristic of an application system product designed for application system reuse?
What is a key characteristic of an application system product designed for application system reuse?
In the context of application system reuse, what does 'COTS' stand for?
In the context of application system reuse, what does 'COTS' stand for?
What is a potential problem associated with application system reuse regarding the evolution of the system?
What is a potential problem associated with application system reuse regarding the evolution of the system?
In reuse-based software engineering, what distinguishes 'application reuse' from 'component reuse'?
In reuse-based software engineering, what distinguishes 'application reuse' from 'component reuse'?
When considering the 'reuse planning factors' for a software project, how might a short 'development schedule' influence decisions?
When considering the 'reuse planning factors' for a software project, how might a short 'development schedule' influence decisions?
Within the scope of software reuse, how do 'program generators' differ from 'program libraries'?
Within the scope of software reuse, how do 'program generators' differ from 'program libraries'?
How does 'design time configuration' differ from 'deployment time configuration' in the context of software product lines?
How does 'design time configuration' differ from 'deployment time configuration' in the context of software product lines?
When adapting a software product line for a specific customer, which of the following actions would be classified as 'component and system configuration'?
When adapting a software product line for a specific customer, which of the following actions would be classified as 'component and system configuration'?
How does the use of 'service-oriented interfaces' simplify 'application system integration'?
How does the use of 'service-oriented interfaces' simplify 'application system integration'?
How do the goals of system infrastructure frameworks and middleware integration frameworks diverge?
How do the goals of system infrastructure frameworks and middleware integration frameworks diverge?
When undertaking application system reuse, what is the most significant risk associated with the 'COTS (Commercial Off-The-Shelf) product vendor controlling system evolution'?
When undertaking application system reuse, what is the most significant risk associated with the 'COTS (Commercial Off-The-Shelf) product vendor controlling system evolution'?
What distinguishes 'application system products' designed for reuse from custom-built software applications?
What distinguishes 'application system products' designed for reuse from custom-built software applications?
In the context of application frameworks, what does extending a framework typically involve?
In the context of application frameworks, what does extending a framework typically involve?
Why might the lack of local expertise pose a significant problem for system development based on application system reuse?
Why might the lack of local expertise pose a significant problem for system development based on application system reuse?
What is a primary architectural requirement for software product lines to facilitate maintainability and customization?
What is a primary architectural requirement for software product lines to facilitate maintainability and customization?
In the context of a Model-View-Controller (MVC) pattern used in web application frameworks, what action is triggered when a user interacts with a 'View'?
In the context of a Model-View-Controller (MVC) pattern used in web application frameworks, what action is triggered when a user interacts with a 'View'?
How do software product lines leverage the concept of 'adaptation' to tailor applications for specific contexts?
How do software product lines leverage the concept of 'adaptation' to tailor applications for specific contexts?
Which of the following scenarios exemplifies 'Legacy system wrapping' as an approach to software reuse?
Which of the following scenarios exemplifies 'Legacy system wrapping' as an approach to software reuse?
How can software reuse contribute to 'standards compliance' in software development?
How can software reuse contribute to 'standards compliance' in software development?
Concerning software reuse, what is the role of 'Abstract' classes in application frameworks?
Concerning software reuse, what is the role of 'Abstract' classes in application frameworks?
What organizational dynamic can most directly counteract the 'Not-Invented-Here' syndrome when trying to promote software reuse?
What organizational dynamic can most directly counteract the 'Not-Invented-Here' syndrome when trying to promote software reuse?
How would selecting modules within a system to provide the required functionality be classified during deployment time configuration?
How would selecting modules within a system to provide the required functionality be classified during deployment time configuration?
An organization chooses to integrate two separate COTS (Commercial Off-The-Shelf) systems, one for CRM (Customer Relationship Management) and another for ERP (Enterprise Resource Planning). How would you categorize this approach?
An organization chooses to integrate two separate COTS (Commercial Off-The-Shelf) systems, one for CRM (Customer Relationship Management) and another for ERP (Enterprise Resource Planning). How would you categorize this approach?
With respect to defining levels of 'deployment time configuration', what action is represented by validation rules that should apply to information entered by users?
With respect to defining levels of 'deployment time configuration', what action is represented by validation rules that should apply to information entered by users?
What is a potential drawback of reusing software components when the source code is not available?
What is a potential drawback of reusing software components when the source code is not available?
Which task is most important when creating a framework?
Which task is most important when creating a framework?
How do software product lines and frameworks differ?
How do software product lines and frameworks differ?
Flashcards
Software Reuse
Software Reuse
Designing systems by composing existing components used in other systems.
System Reuse
System Reuse
Reusing complete systems, including multiple application programs.
Application Reuse
Application Reuse
Reusing an application, either by incorporating it without change or by developing application families.
Component Reuse
Component Reuse
Signup and view all the flashcards
Object and Function Reuse
Object and Function Reuse
Signup and view all the flashcards
Accelerated Development
Accelerated Development
Signup and view all the flashcards
Effective Use of Specialists
Effective Use of Specialists
Signup and view all the flashcards
Increased Dependability
Increased Dependability
Signup and view all the flashcards
Lower Development Costs
Lower Development Costs
Signup and view all the flashcards
Reduced Process Risk
Reduced Process Risk
Signup and view all the flashcards
Standards Compliance
Standards Compliance
Signup and view all the flashcards
Component Library Costs
Component Library Costs
Signup and view all the flashcards
Component Search and Adaptation
Component Search and Adaptation
Signup and view all the flashcards
Maintenance Costs with Code Reuse
Maintenance Costs with Code Reuse
Signup and view all the flashcards
Lack of Tool Support
Lack of Tool Support
Signup and view all the flashcards
"Not-Invented-Here" Syndrome
"Not-Invented-Here" Syndrome
Signup and view all the flashcards
Reuse Landscape
Reuse Landscape
Signup and view all the flashcards
Application Frameworks
Application Frameworks
Signup and view all the flashcards
Application System Integration
Application System Integration
Signup and view all the flashcards
Architectural Patterns
Architectural Patterns
Signup and view all the flashcards
Aspect-Oriented Development
Aspect-Oriented Development
Signup and view all the flashcards
Component-Based Engineering
Component-Based Engineering
Signup and view all the flashcards
Configurable Application Systems
Configurable Application Systems
Signup and view all the flashcards
Design Patterns
Design Patterns
Signup and view all the flashcards
ERP Systems
ERP Systems
Signup and view all the flashcards
Legacy System Wrapping
Legacy System Wrapping
Signup and view all the flashcards
Model-Driven Engineering
Model-Driven Engineering
Signup and view all the flashcards
Program Generators
Program Generators
Signup and view all the flashcards
Program Libraries
Program Libraries
Signup and view all the flashcards
Service-Oriented Systems
Service-Oriented Systems
Signup and view all the flashcards
Software Product Lines
Software Product Lines
Signup and view all the flashcards
Systems of Systems
Systems of Systems
Signup and view all the flashcards
Framework definition
Framework definition
Signup and view all the flashcards
Application frameworks
Application frameworks
Signup and view all the flashcards
Web application frameworks
Web application frameworks
Signup and view all the flashcards
Model-view controller
Model-view controller
Signup and view all the flashcards
Extending frameworks
Extending frameworks
Signup and view all the flashcards
System infrastructure framework
System infrastructure framework
Signup and view all the flashcards
Middleware integration frameworks
Middleware integration frameworks
Signup and view all the flashcards
Enterprise application frameworks
Enterprise application frameworks
Signup and view all the flashcards
Software product lines
Software product lines
Signup and view all the flashcards
Base applications
Base applications
Signup and view all the flashcards
Application frameworks and product lines
Application frameworks and product lines
Signup and view all the flashcards
Product line architecture
Product line architecture
Signup and view all the flashcards
Vehicle dispatching
Vehicle dispatching
Signup and view all the flashcards
Platform specialization
Platform specialization
Signup and view all the flashcards
Environment specialization
Environment specialization
Signup and view all the flashcards
Functional specialization
Functional specialization
Signup and view all the flashcards
Process Specialization
Process Specialization
Signup and view all the flashcards
Design time configuration
Design time configuration
Signup and view all the flashcards
Deployment time configuration
Deployment time configuration
Signup and view all the flashcards
Component selection
Component selection
Signup and view all the flashcards
Workflow and rule definition
Workflow and rule definition
Signup and view all the flashcards
Parameter definition
Parameter definition
Signup and view all the flashcards
Application system reuse
Application system reuse
Signup and view all the flashcards
Enterprise Resource Planning (ERP)
Enterprise Resource Planning (ERP)
Signup and view all the flashcards
ERP architecture
ERP architecture
Signup and view all the flashcards
ERP configurations
ERP configurations
Signup and view all the flashcards
Integrated application systems
Integrated application systems
Signup and view all the flashcards
Design choices
Design choices
Signup and view all the flashcards
Service-oriented interfaces
Service-oriented interfaces
Signup and view all the flashcards
Application system integration problems
Application system integration problems
Signup and view all the flashcards
Study Notes
Software Reuse Overview
- Software reuse involves designing systems by assembling existing components already used in other systems
- Focus on original development in software engineering has shifted as software reuse has been recognised as a means to improve software quality, speed, and cost
- There has been a substantial shift toward reuse-based development in the last decade
Reuse-Based Software Engineering Types
- System reuse comprises reusing entire systems that may include multiple application programs
- Application reuse includes incorporating applications without changes or developing application families
- Component reuse includes reusing application components from subsystems down to individual objects
- Object and function reuse covers reusing small components implementing specific objects or functions
Benefits of Software Reuse
- Accelerated development enables quicker time to market
- Reusing software speeds up system production due to reduced development and validation time
- Effective use of specialists allows application experts to develop reusable software that encapsulates their knowledge
- Increased dependability arises from using well-tested software with identified and fixed faults
- Lower development costs result from needing to write fewer lines of code
- Reduced process risk is achieved because the cost of existing software is already known when compared to estimated development costs
- Standards compliance can be implemented through reusable components, such as consistent user interface menus, which improves dependability by creating familiar interfaces
Problems With Reuse
- Creating, maintaining, and using a component library can be expensive
- Development processes must be adapted to ensure library usage
- Finding, understanding, and adapting reusable components can be difficult with Engineers needing confidence in finding components before including a component search
- Increased maintenance costs occur when the source code of reused software is unavailable as reused elements become incompatible with system changes
- Lack of tool support occurs because some software tools do not support development with reuse and may be hard to integrate with component library systems
- The Not-invented-here syndrome stems from some engineers preferred to rewrite components, believing they can make improvements; this is partly due to confidence and partly due to the idea that writing original code is more challenging
The Reuse Landscape
- Reuse involves various approaches beyond merely reusing system components
- Reuse is possible at different levels ranging from simple functions to total application systems
- The reuse landscape encompasses a variety of potential reuse techniques
Approaches That Support Software Reuse
- Application Frameworks are collections of abstract and concrete classes adapted and extended to create application systems
- Application System Integration includes two or more application systems integrated to provide extended functionality
- Architectural Patterns are standard software architectures supporting common application system types and used as the basis for applications
- Aspect-Oriented Software Development concerns shared components woven into an application at different compilation places
- Component-Based Software Engineering builds Systems by integrating components conforming to component-model standards
- Configurable Application Systems are domain-specific systems designed to be configured to meet specific customer needs
- Design Patterns include generic abstractions occurring across applications, are represented as design patterns, and show abstract and concrete objects and interactions
- ERP Systems are large-scale systems encapsulating generic business functionality with rules configured for an organization
- Legacy System Wrapping entails legacy systems ‘wrapped’ by defining interfaces to provide access to these systems
- Model-Driven Engineering means software is represented as domain models, and implementation-independent models and code are then generated
- Program Generators include a generator system embedding knowledge of an application type and generates systems via a user-supplied system model
- Program Libraries are class and function libraries that implement commonly used abstractions for reuse
- Service-Oriented Systems include systems developed by linking shared services, which may be externally provided
- Software Product Lines are an application type generalized around a common architecture for adaptation to different customers
- Systems of Systems integrate two or more distributed systems to create a new system
Reuse Planning Factors
- Consider the software's development schedule
- Consider the software's expected lifetime
- Take into account the development team's background, skills, and experience
- Consider the criticality of the software and its non-functional requirements
- Consider the application domain
- Take into account the software's execution platform
Application Frameworks
- Frameworks are moderately large entities, somewhere between system and component reuse, that can be reused
- Frameworks are subsystem designs made of abstract and concrete classes, plus the interfaces between them
- The subsystem is implemented by adding components to fill parts of the design and by instantiating the abstract classes in the framework
Web Application Frameworks (WAFs)
- WAFs support the construction of dynamic websites as front-ends for web applications
- WAFs are available for commonly used web programming languages like Java, Python and Ruby
- Interaction models are based on the Model-View-Controller composite pattern
Model-View-Controller (MVC)
- MVC is a system infrastructure framework for GUI design
- MVC allows for multiple object presentations and separate interactions with these presentations
- The MVC framework includes instantiating several patterns
WAF Features
- Security includes classes that implement user authentication and access
- Dynamic Web Pages involve classes to create web page templates and populate with dynamic content from system database
- Database Support involves frameworks offering classes with abstract interfaces to different databases
- Session management involves classes for creating and managing sessions with classes usually inside the WAF implementation
- User interaction includes web frameworks with AJAX support, that allows more interactive web pages
Extending Frameworks
- Frameworks are generic and extended to create specific applications or subsystems and provide a skeleton architecture for the system
- Extending frameworks involves adding concrete classes inheriting operations from abstract classes and adding methods called in response to recognized events
- A problem with frameworks is their complexity, which means it takes time to use them effectively
Framework Classes
- System infrastructure frameworks support the development of system infrastructures, like communications, user interfaces, and compilers
- Middleware integration frameworks encompass standards and classes supporting component communication and information exchange
- Enterprise application frameworks supports the development of specific application types, such as telecommunications or financial systems
Software Product Lines
- Software product lines, or application families, are applications with generic functionality adapted and configured for use in a specific context
- Software product lines consist of applications with a common architecture and shared components, each specialized to reflect different requirements
- Adaptation to the software may include component and system configuration, adding new components, selecting components from a library, or modifying components to meet new requirements
Base Applications
- Core components provide infrastructure support and are typically not modified
- Configurable components are modified and configured to specialize them to a new application; they can sometimes be reconfigured without changing code using a built-in component configuration language
- Specialized, domain-specific components may be replaced when creating product lines
Application Frameworks and Product Lines
- Application frameworks use object-oriented features like polymorphism for extensions, while product lines do not need to be object-oriented
- Application frameworks provide technical support, while product lines embed domain and platform information
- Product lines often control equipment applications
- Software product lines consist of a family of applications that are generally owned by the same organization
Product Line Architectures
- Architectures must be structured in a way so as to separate different subsystems and be modifiable
- Architectures should separate entities and their descriptions, with higher-level access to the entities via descriptions, not directly
Vehicle Dispatching
- Specialized resource management system aims to allocate resources (vehicles) to handle incidents
- Adaptations occur at the UI level (operator display and comms), I/O management level (authentication, reporting, and route planning), and resource management level (vehicle location and dispatch, managing vehicle status and incident logging)
- The database includes equipment, vehicle, and map databases
Product Line Specialization
- Platform specialization includes different application versions developed for different platforms
- Environment specialization includes different application versions created to handle different operating environments
- Functional specialization concerns unique application versions for each customer’s specific requirements
- Process specialization supports application versions supporting unique business processes
Product Instance Development
- Elicit stakeholder requirements use existing family member as a prototype
- Choose closest-fit family member entails finding the family member that best meets requirements
- Renegotiate requirements involves adapting requirements as necessary to work within software capabilities
- Adapt the Existing System includes developing new modules and making changes for family members
- When delivering a new family member, document key features for further member development
Product Line Configuration Types
- Design time configuration focuses on developing, selecting, or adapting components by the software org
- Deployment time configurations designs the system configuration by incorporating customer specific knowledge
Levels of Deployment Time Configuration
- Component selection is selecting the modules in a system what provide the required functionality
- Workflow and rule definition entails defining workflows and validation rules for information entered by system users
- Parameter definition includes specifying values of specific system parameters that reflect the created application instance
Application System Reuse
- Application system products are software systems adapted for different customers without changing the source code
- Application systems have generic features and can be reused in different environments
- Application system products are adapted using built in configuration mechanisms to tailor functionality to customer needs
- An example is a hospital patient record system with separate input forms and output reports defined for unique types of patient
Benefits of Application System Reuse
- Rapid deployment of reliable systems
- Easier to determine if applications are suitable due to visibility of functionality
- Avoids some development risks
- Businesses can focus on their core activities without needing to allocate IT resources heavily
- Technology updates are simplified as they the COTS vendor's responsibility
Problems of Application System Reuse
- Requirements may need to be adapted to reflect functionality and mode of operation of COTS products
- The COTS product may be based on assumptions practically impossible to change
- Selecting the right COTS system can be difficult, especially as many products lack adequate documentation
- There may be a lack of local expertise to support systems development
- The COTS product vendor controls system support and evolution
Configurable Application Systems
- Configurable application systems are generic systems designed to support a specific business type, activity, or complete enterprise
- For example, systems that support dentists handle appointments, dental records, and patient recall
- Domain-specific systems support specific business functions (e.g. document management) and are likely to be required by common users
COTS Solutions and Integrated Systems
- Configurable application systems are single products which provide the functionality a customer requires
- These are based around generic solutions and standardized processes
- Development focuses on system configuration while the System vendor is responsible for maintenance and also provides the platform
ERP Systems
- Enterprise Resource Planning (ERP) systems are generic systems that support common business processes, for instance, ordering, invoicing, and manufacturing
- ERPs are widely used in large companies, representing the most common form of software reuse
- The generic core is adapted by including modules and incorporating business processes and rules knowledge
ERP Architecture
- A number of modules support business functions
- Each module is associated with defined business processes, which also relate to activities inside that module
- All modules share a common database that maintains business function information
- Sets of business rules apply to all data in the database
ERP Configuration
- Select required functionality from the system
- Establish a data model that defines data structure in
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.