10 Trends Likely to Shape Enterprise Technology in 2024
Domain and Reuse Engineering.pptx
1. In the Name of Allah, the Merciful, the
Beneficent.
Muhammad Subhan Ud Din
(1129)
Saad Usman (1134)
Sufyan Ahmed (1135)
Domain & Resue
Engineering
2. Agenda
Domain Engineering
• Breif Concept (Domain & Domain Engineering)
• Purpose
• Phases
Software Development Based on Domain Engineering
• Example
• Pros & Cons of Domain Engineering
4/18/2023 Domain & Resue Engineering 2
3. Domain Engineering (DE)
• Domain engineering, is the entire process of reusing domain
knowledge in the production of new software systems.
• Process of collecting , organizing and storing past experience in
order to build new software system in particular domain in the form
of reusable assets.
4/18/2023 Domain & Resue Engineering 3
4. Purpose of DE :
4/18/2023 Domain & Resue Engineering 4
• Improve Quality Feature
• Improve Productivity
• Developed System are not New System
• Maximize Profit
• Reduced Cost
• 50 % Method Reduced
• 75 % LOC reduced
5. Phases in DE
• Domain Analysis
It includes identifying the domain’s requirements,
understanding its concepts and rules.
• Domain Design
Domain-specific software assets are designed based
on the results of domain analysis.
• Domain implementation
This can include writing code, configuring systems,
and integrating various software components
• Domain Testing :
• Domain Maintenance:
6. Some Important Point…
1. Domain Scope and Scoping
• Horizantal Scope
• Vertical Scope
2. Relationship Between Domain
• A uses B
• A Contained in B
• A is analogous to B
3. Domain Model
4/18/2023 Domain & Reuse Engineering 6
7. Continue…
Feature And Feature Model
Represent the common instances
Element :
• Feature Diagram
• Client Program
• Constraints
• Priorities
• Exemplar System
Feature Diagram :
• Mandatory
• Optional
• Alternative
4/18/2023 PRESENTATION TITLE 7
10. Example :
Car Product Line
Domain Analysis :
A feature diagram
• car
• car body
• transmission
• automatic
• manual
• engine
• electric
• gasoline
• trailer coupling
4/18/2023 Domain & Resue Engineering 10
11. Continue…
Domain Implementation :
template<class Config_>
struct GasolineEngine
{
typedef Config_ Config;
GasolineEngine() { cout « "GasolineEngine "; }
};
4/18/2023 Domain & Resue Engineering 11
•Domain Design :
• Identify the main functionalities in the feature diagrams from Domain Analysis.
• Enumerate component categories and components per category.
• Identify "uses" dependencies between component categories.
• Sort the categories into a layered architecture.
• TrailerCoupling -> CarBody -> Transmission -> Engine
• Finally we add two more layers:
• Car -> TrailerCoupling -> CarBody -> Automatic|Manual -> Gasoline|Electric|Hybrid ->Configuration
12. Pros of Domain Engineering
• Increased flexibility and scalability
• Improved software quality
• Reduced development time
• Resuability
• Relaibility
4/18/2023 Domain & Resue Engineering 12
Cons of Domain Engineering
• High Investment
• Difficult to Maintain
13. Software Reuse
Software reuse is the practice of using existing software
components, modules, or libraries in the development of
new software applications. The main goal of software reuse
is to improve software development efficiency, quality, and
productivity by leveraging proven and tested software
assets. This approach can save time, resources, and reduce
the likelihood of errors during the development process.
4/18/2023 PRESENTATION TITLE 13
14. Challenges in software reuse
There are many challenges but some are as follow:
• Poor documentation
• Quality and reliability
• integration and compatibility issues
• Resistance to change
• Maintenance and versioning
4/18/2023 PRESENTATION TITLE 14
15. Software reuse metrics
Software reuse metrics are essential for measuring the
effectiveness and impact of software reuse practices within
an organization or a project. These metrics help track
progress, identify areas for improvement, and demonstrate
the value of software reuse to stakeholders. Some common
software reuse metrics include:
• Reuse ratio
4/18/2023 PRESENTATION TITLE 15
16. Continue….
• Cost savings
• Time savings
• Defect density reduction
• Reuse library growth
• Reuse frequency
4/18/2023 PRESENTATION TITLE 16
18. Advantages of Software Reuse
• Reduced development time
• Improved software quality
• Reduced learning curve
• Enhanced maintainability
• Knowledge sharing and collaboration
4/18/2023 Sufyan Ahmed (1135) 18
19. Disadvantages Of Software
Reuse
• Integration and compatibility issues
• Poor documentation
• Quality and reliability concerns
• Organizational and cultural barriers
4/18/2023 Sufyan Ahmed (1135) 19
20. What can be reused?
It is great to know about the kinds of artifacts associated with
software development that can be used again. Almost all
artifacts associated with software development, including
project plan and test plan, can be used again. However, the
important items that can be effectively used again are,
• Requirements specification
• Design
• Code
• Test cases
• Knowledge
4/18/2023 Sufyan Ahmed (1135) 20
21. Reused bases software
engineering
• Application System Reuse: The whole of the application
system may be reused either by incorporating it without
change into other system by developing application
families.
• Component Reuse: Component of an application form
sub-system to single objects may be reused.
• Object and Functional Reuse: Software component that
implements a single well-defined object or function may
be reused.
4/18/2023 PRESENTATION TITLE 21
22. Basic issues in any reuse
program
The following are some of the basic issues that must be for
starting any reuse program,
1. Component creation
2. Component indexing and storing
3. Component search
4. Component understanding
5. Component adaptation
6. Repository maintenance
4/18/2023 Sufyan Ahmed (1135) 22
23. Drawbacks Of Software Reuse
• Increased maintenance cost
• Lack of tool support
• Searching, understanding and adopting reused code
• Creating and maintaining a component library
4/18/2023 Sufyan Ahmed (1135) 23
25. Software reuse planning factors
• The development schedule for the software.
• The expected software lifetime.
• The criticality of the software and its non-functional
requirements.
• The execution platform for the software.
• The application domain.
4/18/2023 Sufyan Ahmed (1135) 25
26. Concepts of reuse
• Design patterns.
• Generative programing.
4/18/2023 Sufyan Ahmed (1135) 26
27. Application Framework
• Frameworks are a sub-system design made up of a
collection of abstract and concrete classes and the
interface between them.
• The sub-system is implemented by adding components to
fill in parts of the design and by instantiating the abstract
classes in the framework.
4/18/2023 Sufyan Ahmed (1135) 27
28. Framework classes
• System infrastructure frameworks.
• Middleware integration frameworks.
• Enterprise application frameworks.
4/18/2023 Sufyan Ahmed (1135) 28
29. Case studies and success
stories
There are several case studies and success stories that
demonstrate the effectiveness of software reuse in various
industries and contexts. Here are some examples:
NASA's Core Flight Software (CFS)
NASA has developed a reusable software platform called
Core Flight Software, which serves as a basis for their flight
software systems
4/18/2023 Sufyan Ahmed (1135) 29
30. Continue….
CFS is designed to be highly modular and
customizable, enabling it to be easily adapted
for different missions and spacecraft. By
reusing CFS components across projects,
NASA has reduced development time,
minimized errors, and achieved significant cost
savings
4/18/2023 Sufyan Ahmed (1135) 30
31. Another Example
Nokia, a telecommunications company, implemented a
software reuse program to improve the quality and efficiency
of their software development process. By developing
reusable software components and adopting standardized
interfaces, Nokia was able to reduce development time,
improve software quality, and achieve significant cost
savings. The reuse program also promoted knowledge
sharing and collaboration among developers.
4/18/2023 Sufyan Ahmed (1135) 31