SCD 1
SCD 1
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
• 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 )
• 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
• 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
• 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