Component-Level Design (CLD)
by Ronni Kahalani, Copenhagen School of Design & Technology.
With inspiration from the book Software Engineering - A Practitioner's Approach.
Creating reusable components in high quality.
Who am I?
Thank you for stopping by.
I’m Ronni. I hope you’re well and wish you a safe and worthy journey.
This presentation is part of the Software Engineering Series, from my lectures at Copenhagen School of Design & Technology.
You can view the Introducing Myself, if you want to know a little more about who I am.
All my presentations and materials are free and available at my blog post: Software Engineering.
Don’t let me uphold you,
continue your journey, go to next slide.
2
Agenda
Intro
CLD - Component-Level Development occurs after the first iteration of architectural design has been completed.
Follow a set of design principles that not only perform the translation but also do not "introduce bugs to start with."
Quick Look
Quick Look
What’s a Component?
A modular building block for computer software.
Defined by OMG Unified Modeling Language Specification
"a modular, deployable, and replaceable part of a system that encapsulates implementation and exposes a set of interfaces."
Lets examine 3 important views, Object-Oriented, Traditional and Process-related.
The Object-Oriented View
A component(also called a class ) is an entity with functional- and data elements in program, which encapsulates an abstraction of a real-world object, with data and its needed processing logic.
An Object-Oriented View
Analysis Class
Design�Component
Elaborated design class
An Object-Oriented View
PrintJob has 2 interfaces:
Represented using the "lollipop" symbols of the component box.
An Object-Oriented View
The elaborated design class PrintJob contains more detailed attribute information as well as an expanded description of operations required to implement - Figure 11.1
Example
The Traditional View
A component(also called a module ) is a functional element of a program that incorporates processing logic.
The Traditional View
Serves 1 of 3 important roles:
The Traditional View
Control components (modules) reside near the top of the hierarchy (program architecture)
Problem domain components tend to reside toward the bottom
The Traditional View
Note…
The behavior of the module is sometimes represented using a state diagram.
The Traditional View
Consider the module ComputePageCost.
The intent of this module is to compute the printing cost per page based on specifications provided by the customer.
Data required to perform this function are:
ComputePageCost uses these data to determine a page cost that is based on the size and complexity of the job.
The Traditional View
The Traditional View
ComputePageCost module accesses data by…
Algorithm detail can be represented using the pseudocode text shown in the figure or with a UML activity diagram.
The Process-Related View
A process that emphasizes the design and construction of reusable software component.
A Process-Related View
Assumes the component is being designed from scratch.
These components have been created with:
Middleware is a collection of infrastructure components that enable problem domain components to communicate with one another across a network or within a complex system.
Component-Based Development
CBSE – Component-based software engineering
Designing Components�Step by step
A 7 steps guide to design quality software components.
The 7 Steps
Note: The term diagrams, in these steps refers to well-known UML diagrams.
1. Identify design classes that correspond to the problem domain.�
2. Identify design classes that correspond to the infrastructure domain.
3. Elaborate the design classes not acquired as reusable components.
4. Describe persistent data sources (databases and files) and identify the classes required to manage them.
The 7 Steps (continued)
5. Develop and elaborate behavioral representation for a class/component.
6. Elaborate deployment diagrams to provide additional implementation detail.
7. Refactor, every component-level design representation and always consider alternatives.
Component-Based Development (CBD)
Used to reduce lead time, generate greater return on investment (ROI), leverage costs of developing components, enhance quality and ease maintenance of component-based applications.
Why Component-Based Development (CBD)?
“The answer to each of these questions is yes”.
CBD - Process
If no satisfied component can be found…decide to:
CBD - Advantages
Reduced lead time
Greater return on investment (ROI)
Leveraged costs of developing components
Enhanced quality
Maintenance of component-based applications
CBD - Risks
Component selection risks
Component integration risks
Quality risks
Security risks
System evolution risks
Threat Modeling, Prioritization & Mitigation
An approach for creating an abstraction of a software system, aimed at identifying attackers’ abilities and goals.
Threat Modeling, Prioritization & Mitigation
TMM – Threat Modeling Method
STRIDE - The most well-established TMM
Threat Modeling, Prioritization & Mitigation
Threat | Security Property |
Spoofing | Authentication |
Tampering | Integrity |
Repudiation | Nonrepudiation |
Information | Confidentiality |
Denial of service | Availability |
Elevation of privilege | Authorization |
Threat Modeling, Prioritization & Mitigation
Threat categories of DFD - Data Flow Diagrams.
Element | Spoofing | Tampering | Repudiation | Information Disclosure | Denial of Service | Elevation of Prililege |
Data flows | | X | | X | X | |
Data stores | | X | | X | X | |
Processes | X | X | X | X | X | X |
External entity | X | | X | | | |
Threat Modeling, Prioritization & Mitigation
Component Diagram Tutorial
Questions?
Anything? What’s on your mind? Come on ask me anything…
Feedback?
Thank you for your precious time.
I hope it was worth it and would love to get your feedback.