0% found this document useful (0 votes)
2 views26 pages

Software Component Design Overview

Uploaded by

Haymanot Aweke
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views26 pages

Software Component Design Overview

Uploaded by

Haymanot Aweke
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

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

You might also like