0% found this document useful (0 votes)
42 views29 pages

SCD 1

The document provides an introduction to component-based software engineering (CBSE). It defines a software component and discusses the benefits of CBSE, including reuse, reduced development time and cost, and easier replacement and maintenance of components. It describes characteristics of CBSE like reusability, loose coupling, and independence of components. Finally, it outlines some common applications of CBSE like enterprise software development and web development.

Uploaded by

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

SCD 1

The document provides an introduction to component-based software engineering (CBSE). It defines a software component and discusses the benefits of CBSE, including reuse, reduced development time and cost, and easier replacement and maintenance of components. It describes characteristics of CBSE like reusability, loose coupling, and independence of components. Finally, it outlines some common applications of CBSE like enterprise software development and web development.

Uploaded by

melakmubetty
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

Software

Component Design By Tariku F.

Introduction and Basic Concepts in CBSE

1
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 sub
problems
• The outcome of SE is to have a good software product
Introduction

• Characteristics of good software


 Operational- budget wise, deliverable, usability, efficiency,
correctness, functionality, security, Safety…
 Transitional- portability, interoperability, reusability,
adaptability…
 Maintenance- modularity, maintainability, flexibility,
scalability…
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)


Introduction

• General phases/ Stages in software development


• Requirement
• Gathering, analysis, SRS
• Feasibility study
• Operational, technical, schedule, economic, societal, even political
• Design
• Data, user interface, architecture, component
• Coding/Implementation
• Testing
• Unit, system, integration
• Documentation
• User manual
• Deployment /Installation /Configuration
• Maintenance
• Proactive, predictive, corrective
Introduction

• General phases in software development


• Requirement
• Gathering, analysis, SRS
• Feasibility study
• Operational, technical, schedule, economic, societal, even political
• Design
• Data, user interface, architecture, component
• Coding/Implementation
• Testing
• Unit, system, integration
• Documentation
• User manual
• Deployment /Installation /Configuration
• Maintenance
• Proactive, predictive, corrective
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
software development , next to the requirement
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
• 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.
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”
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.
Component based design

• What is component?
• Components can be as small as a single function or as large as an entire
subsystem.
• Common examples of components include graphical user interface (GUI)
components, middleware components, data access components, and more
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
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.
Component based design
• Homework
• Could a CBSE have some challenges???
• Component Compatibility
• Sometimes the components to be used can have some challenges in being
fitted with our specifications and resources
• Component Migration
• When we embed components into our system, technology wise problems
could be happened
• Component Complexity
• Some components could be intricating to use and need some time to
understand and apply
• Component trade-offs
• We sometimes gets difficulties in components behavior, we like some
of the behaviors and we don’t some
Component based design

• Characteristics of CBSE
• Reusable
• Replaceable
• Composable
• Independent/self-contained/autonomous
• Deployable/configurable/deliverable
• Logically cohesive
• Loosely coupled
• Scalable/extensibility
• Maintainable
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.
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.
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.
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.
Component based design

• Applications of CBSE
• Enterprise Software Development: CBSE is commonly
used in the development of large-scale enterprise
applications, such as Customer Relationship Management
(CRM) systems, Enterprise Resource Planning (ERP)
systems & Human Resources Management (HRM) systems.
• Web Development: In web development, CBSE is used to
create reusable web components, such as user interface
widgets, authentication modules, and data processing
components, which can be integrated into different web
applications.
Component based design

• Applications of CBSE
• Embedded Systems: CBSE is applied to embedded systems
development, where it is essential to create efficient and
reliable components for use in devices like IoT devices,
automotive control systems, and consumer electronics.
• Financial Software: Financial institutions use CBSE to
build trading platforms, risk assessment tools, and
financial modeling software. Reusable components can
accelerate the development of these complex systems.
Component based design

• Applications of CBSE
• Healthcare Software: CBSE is employed in healthcare software for
creating electronic health records (EHR) systems, medical imaging
applications, and telemedicine solutions, which require reusable
components like data storage and communication modules.
• Robotics systems
• Large industry oriented software development
• For developing a software which can be decomposed into small and
manageable components
• For developing new system from pre-built components
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:
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.
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.
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.
Component based design

• Processes in CBSE
• User Interface (UI) Design:
• If the component has a user interface, design the UI elements, layout, and user
interactions.
• Ensure the UI is intuitive and user-friendly.
• Security Design:
• Consider security aspects, including data protection, access control, and
prevention of security vulnerabilities.
• Implement encryption, authentication, and authorization mechanisms, if
required.
Assignment-I

• Discuss five of the following software development


models in detail
• Build and fix model
• Evolutionary model Point to be addressed
• Prototyping model ➢Their differences
• V-shaped model ➢Advantages and
• Spiral model challenges
• Incremental ➢For what kind of
• Big bang model software the model fits
• RAD model
• Agile model

You might also like