College: Electrical and Mechanical
Engineering
Department: Software
Engineering
Course Name: Software
Component Design
Course Code: SWEG5107
Gizatie Desalegn
1
Addis Ababa, Ethiopia
10/08/2025
Chapter 1: Introduction and Basic Concepts in
Software Component Design
Contents
• Introduction to SE, Design
• Basic concepts and terminology
• Benefits of CBSE
• Application area
• Processes involved during component design
• Difference with other programming
10/08/2025 2
Introduction
• What is SE?
• An engineering branch associated with the development of software product
using well-defined scientific principles, methods and procedures.
• Without using software engineering principles, it would be difficult to develop
large programs
• Software engineering helps to reduce this programming complexity by using
two important techniques: abstraction and decomposition
• Abstraction is simplifying the problem by omitting irrelevant
details
• Decomposition is dividing the problem into small & manageable
10/08/2025 sub problems 3
Introduction
• Types of software
Purpose: System Software or Application Software
Platform: Native software (designed for a specific operating system) or Cross-
platform software (designed to run on multiple operating systems)
Deployment: Installed software (installed on the user’s device) or Cloud-based
software (hosted on remote servers and accessed via the internet)
License: Proprietary software (owned by a single entity) or Open-source software
Size: Small-scale software or enterprise software ( available for free with the source
code accessible to the public)
User Interface: Graphical User Interface (GUI) or Command-Line Interface
(CLI)
10/08/2025 4
Software Design
• What is design?
• a process to transform user requirements into some suitable form,
which helps the programmer in software coding and implementation
• The output of this process can directly be used into implementation
in programming languages
• Software design moves the concentration from problem domain to
solution domain
• So good to stress on this phase for a better
10/08/2025 software development , next to the requirement 5
Software Design
• So, What to design?
• Data can be designed-
• database design
• User interfaces can be designed-
• front ends design
• Architecture of the software can be designed-
• A blue print, how does it work
• Components/ sub divisions can be designed individually
10/08/2025 6
• functional modules with own tasks
Component based design
• It focuses on the decomposition of the design into individual
functional or logical components that represent well-defined
communication interfaces containing methods, events, and
properties.
• The current mostly used types of software design
• It provides a higher level of abstraction and divides the problem
into sub-problems, each associated with component partitions.
10/08/2025 7
Component based design
• Why is component based software engineering?
• To reduces the software crisis such as complexity, difficulty, quality…
• Component based engineering works well in other engineering disciplines.
Example Car manufacturers do the design, buy components that they need from
different component manufacturers, and assemble them into products.
• Different standalone components are being engineered to be used for own purpose
• Software developers are being tired of starting projects from the scratch since
available reusable components are out there
• Software developer are more focusing on a “time to the market”
10/08/2025 8
Component based design
• What is component?
• A software component is a unit of composition with
contractually specified interfaces, independently
deployable/deliverable/configurable and subject to
composition by third parties. “Clemens Szypersk”
• According to Johannes Sametinge, Components are self-
contained, clearly identifiable pieces that describe and/or
perform specific functions, have clear interfaces, appropriate
documentation, and a defined reuse status.
• Example: A payment gateway component in an e-commerce application that
handles payment processing.
10/08/2025 9
Component based design
• Unfortunately, the previous strategies to develop software system is "buy or build".
• Buy components or build the system
• However with CBSE we can even use the strategies “Buy and build“ or “follow
design pattern” to develop software
• buy components and build system or follow their design pattern and build the
system
• Here, the CBSE gives a chance to assemble the system from existing software
components or follow the design pattern to build our own system
10/08/2025 10
Component based design
• Benefits of CBSE
• the reuse of available/existing solution components than inventing new
• Reduces development time and cost to be lost while developing software from the scratch
• It allows the designers and developers to focus on important issues
• freeing them from having to worry about the details of implementing each component
• Easy to replace or maintain
• Reduce time to market
• If the reuse of a component requires less time than the development of a component,
systems can be built faster.
10/08/2025 11
Component based design
• Characteristics of CBSE
• Reusable
• Replaceable
• Composable
• Independent/self-contained/autonomous
• Deployable/configurable/deliverable
• Logically cohesive
• Loosely coupled
• Scalable/extensibility
• Maintainable
10/08/2025 12
Component based design
• Characteristics of CBSE
• Reusability: Components are designed to be reused in various parts of
an application or even in different applications.
• Encapsulation: Components hide their internal details and expose a
well-defined interface, allowing users to interact with them without
needing to understand their inner workings.
• Abstraction: Components provide an abstract representation of a
functionality or service, making it easier to understand and use.
10/08/2025 13
Component based design
• Characteristics of CBSE
• Independence: Components should be independent of each other,
meaning that changes in one component should not affect others.
• Modularity: Divide your software into smaller, manageable modules or
components, each responsible for a specific task or feature.
• High Cohesion: Components should contain related and closely related
functionalities. High cohesion reduces complexity and enhances
maintainability.
10/08/2025 14
Component based design
• Characteristics of CBSE
• Loose Coupling: Components should interact with each other through well-
defined interfaces, minimizing dependencies between them. This makes it
easier to replace or upgrade components.
10/08/2025 15
Component based design
• Types of CBSE
• Class-Based Components: These are often
implemented as classes in object-oriented
programming and encapsulate data and behavior.
• Service-Based Components: These provide
specific services or functionalities and may be
implemented as standalone modules or
microservices.
• Web Components: These are components
designed to be used in web applications and are
encapsulated HTML, CSS, and JavaScript.
10/08/2025 16
Component based design
• Processes in CBSE
• Component design is a critical phase in software development, where the
detailed design and specification of individual software components occur.
• It involves several processes and steps to ensure that the components are
well-structured, maintainable, and meet their intended functionality.
• Here are the key processes involved in component design:
10/08/2025 17
Component based design
• Processes in CBSE
• Requirements Analysis:
• Understand the functional and non-functional requirements for the
component, including its inputs, outputs, and expected behavior.
• Define the component's interfaces and interactions with other components or
systems.
• Component Identification:
• Identify the specific functionality or feature that the component will provide
within the overall system.
• Consider reusability by evaluating if the component could be used in other
projects or parts of the system.
10/08/2025 18
Component based design
• Processes in CBSE
• Specification:
• Create a detailed specification for the component, outlining its purpose, inputs,
outputs, and behavior.
• Define the component's interface, including methods, parameters, and data
structures.
• Design Decomposition:
• Break down the component into smaller, manageable sub-components or
modules, if necessary.
• Determine the structure and relationships between these sub-components, if
applicable.
10/08/2025 19
Component based design
• Processes in CBSE
• Data Design:
• Define the data structures and data flows within the component, including
how data is processed and stored.
• Address issues related to data validation, storage, and access.
• Algorithm Design:
• Specify the algorithms and logic that the component will use to perform its
functions.
• Consider performance optimization and algorithmic efficiency.
10/08/2025 20
Benefits of CBSE
• CBSE provides multiple advantages over traditional software development models:
• Reusability: By using pre-built components, developers can save time and effort.
• Example: Instead of writing authentication logic from scratch, developers can use a reusable authentication component across different systems.
• Maintainability: Since components are modular, updates or bug fixes can be applied to individual components without affecting
the entire system.
• Example: Updating a billing component in a shopping app won't require changes in other modules like product display or customer reviews.
• Scalability: Components can be added or replaced to accommodate growing business needs or new features.
• Example: If an e-commerce platform grows to support international markets, a new currency conversion component can be added without altering
the existing checkout process.
• Quality and Reliability: Reusable components are often tested thoroughly and used across multiple systems, which helps in
ensuring stability and reliability.
• Example: A component for secure user login used across several banking applications is likely to have fewer bugs.
10/08/2025 21
• Enterprise Applications: Large organizations use modular components for HR, payroll, and customer management systems.
Example: SAP and Oracle ERP systems use modular components like accounting, procurement, and inventory.
Application Area
• Web Applications: Modern web applications rely on reusable front-end and back-end components.
Example: [Link] or Angular front-end components for building user interfaces can be reused across multiple websites.
• Cloud-Based Systems: Cloud services often use microservices, which are individual components that can scale independently.
Example: Amazon Web Services (AWS) provides components for cloud storage (S3) and computing (EC2), which can be
integrated into various applications.
• Embedded Systems: Devices such as smart appliances use modular components to manage specific tasks like sensor monitoring or
user input.
Example: A smart thermostat may have a component for temperature control and another for Wi-Fi communication.
10/08/2025 22
Processes Involved During Component Design
1. Requirement Analysis: Identify the specific functionality the component needs to
perform.
Example: A notification system needs to handle email, SMS, and push notifications.
2. Specification: Define the component's interface, expected inputs, outputs, and how it
will interact with other components.
Example: The notification component's interface might include methods like sendEmail(), sendSMS(), and
sendPush().
3. Design and Implementation: Build the component while following the defined
specifications.
Example: The sendEmail() method uses an SMTP server to send messages, while sendSMS() interacts with a
telecom API.
[Link]: Components are individually tested for functionality and performance before
being integrated into the larger system.
Example: Test whether the notification component correctly sends messages and handles errors (e.g., invalid
email addresses).
10/08/2025 23
Continued.
[Link]: Combine components with the larger system and ensure seamless
interaction.
Example: Integrating the notification system with the order processing system so customers
receive order confirmations via email or SMS
10/08/2025 24
Assignment-I
• Discuss the following software development
models in detail
• Build and fix model Point to be addressed
• Evolutionary model Their differences
• Prototyping model Advantages and challenges
• V-shaped model For what kind of software the
• Spiral model model fits
• Incremental
• Big bang model
• RAD model
• Agile model
• CBSE difference with other programming
10/08/2025 25
10/08/2025 26