You are on page 1of 16

Software

Component Design By Tariku F.

Software Component Specification and Repositories

2
Introduction

• Software components can be


• Off the shelf components
• Components that can be acquired from third party
• Full experienced components
• Components that are existed on the other software and team need to
implements this components in the newer software
• Partial experience components
• Existed components that need some modifications before implementing on the
newer system
• New components
• Software components that must be build by the software team specially for
needs of the current project
Introduction

• Component based SE Applications


• 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.
• 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
Introduction

• Processes in using CBSE {4 in numbers}


1. Requirements Analysis:
• Understanding the SRS document contracted with the stakeholders.
2. Component Specification:
• Create a detailed specification for the component/s, start form how
many, outlining its purpose, inputs, outputs, and behavior.
3. Component Identification:
• Identify the specific functionality or feature that the component will
provide within the overall system.
4. Component Embedding:
• Using the identified fitting/modified to fit component into the designed
system
Introduction

• Software components Specification


• a detailed blueprint for a particular software component.
• It is a descriptive document that outlines everything necessary to
understand, build, and integrate a component into a larger
software system
• represents a description and depiction of a set of specific
hardware and software components that make up the system
• A precise statement of the effects that the software component
of a system is required to achieve.
➢A software component specification should be detailed,
focusing on what the software is to do rather than how
this is to be done.
Introduction

• Software components Specification


• The specifications can range from high-level overviews to
intricate/complicated low-level details, depending on the
project's scope and the development phase.
• High-level specifications often describe what the
component does and its relationship with other
components, while low-level specifications dive into the
specific details of implementation.
• However, creating effective component specifications is a
craft/skill that requires clear communication, foresight,
and a deep understanding of the system's requirements.
Introduction

• Software components Specification


• In essence, component specification is like the DNA of
software components design.
• Just as DNA carries all the genetic information for an
organism's growth, development, and functioning, a
component specification holds all the information needed
to create, understand, and integrate a software
component.
Introduction

• What does a Software components Specification


contain?
• A detailed information about a component's functionalities,
interfaces, dependencies, and interactions with other
components.
• It's essentially defines what the component does (its
responsibilities) and how others can use it (its interfaces).
• Here's a riddle for you: I'm the blueprint of a software piece, both
a guide and a contract lease. I detail functions and links, what am
I, can you think?
• The answer, of course, is a component specification- the
architect behind CBSE
Introduction

• Real world Scenario


• In recent years, we’ve been witnessing a strong trend – building
websites based on ready-made components, which is conventionally
referred to as component-based design.
• The concept of CBD envisions building websites out of ready-made
elements (components), which are designed and programmed
segments to be used as building blocks for your website.
• In other words, components are like LEGO bricks, which you can
assemble in various ways to build your subpages by composing and
arranging them in various ways in order to achieve the desired goal.
• Components examples include a header, text blocks, a photo
banner, a contact form, or a call-to-action block, a blog post, a
footer.
Practical Exercise

• Check out the Droopler as an example of a CBSE exercise


• Droopler is a Drupal-based content management system, which enables
users to create extensive websites based on a collection of ready-made
elements.
• Creating and managing the resulting website is simple and intuitive even for
people, who aren’t well-versed in new technologies.
• If you’re interested to see how such a system works in reality, download
Droopler and experiment with building your own website.

• You can check other well known CMS(content management systems such as
Jumla or wordpress or others)
Software Component Repository

• What is Repository?
• A repository, or repo, is a centralized digital storage that developers
use to make and manage changes to an application’s source code.
• You can think about the repository as a folder created on the cloud
• A repo has features that allow developers to easily track code
changes, simultaneously edit files, and efficiently collaborate on the
same project from any location.
• It is a type of centrally located storage where you can keep all your
project’s files and resources.
• Any of the project’s stakeholders or developers can pull your
repository’s code (or resource) for new feature delivery or bug
fixes in the product or software application.
Software Component Repository

• Why Repository?
• Developers have to store and share folders, text files, and other types of
documents when developing software.
• A repo allows software development teams to implement multiple changes to a
software’s program code without compromising the main source code.
• Instead of applying the changes directly to the main branch, they use features
in a repo to edit and review the changes.
• This reduces merging conflict when two or more developers are editing the same
part of the code.
• Developers also use repos to introduce new features or bug fixes without
affecting the production version of the application.
• They create a new branch, or copy of the original source code, as a
local repository to work on.
• By doing so, developers ensure that new changes are properly tested before
being released to customers.
Software Component Repository

• Advantages of Repositories
• Contribution: When we work on an open-source repository It becomes easy
to contribute to the project.
• Documentation: By using repository management tool, it’s easy to develop
robust documentation.
• Create a Portfolio: Are you a developer who’s looking to attract technical
recruiters? Your repository is your best tool. When searching for new
candidates, many companies look at GitHub profiles and repositories.
• Track Changes for Multiple Versions: When multiple people collaborate on
a project, it’s hard to keep track of revisions — who changed what, when
and where those files are stored. However repository managers take care of
this problem by keeping track of all the changes that your collaborators
have pushed to the repository.
• Integration With Other Tools: The repositories that you create on most of
repositories can also integrate with different tools like
Software Component Repository

• Popular examples of Repository


• GitHub is a cloud-based repo that allows developers to store and
work on project codes in an organized manner.
• How does a github repo works?
• What key features a github repo has?( branching, commit, pushing,
pulling, merging….) think about other additional features such as
versioning
• Types of github repos?(bare and non-bare repositories)
• Bitbucket keeping track of all the changes that your collaborators
have pushed to the repository.
• Google colab is a google’s cloud based repo with different resource
advantages
• SourceForge…
Software Component Repository

• Should you Use a Repository?


• Boldly YES!
• A repository is a place where you can store shared
code with friends, co-workers, classmates and even
complete strangers.
• As a result, repositories help individuals and teams
write better code faster.

So, go to some repositories and start using if


you didn’t start yet!
Reminding works to do

• Discussing five software development models


in detail
• Practicing Droopler or other CMS
• Experiencing repositories such as github,
bitbucket, google colab, . . .

You might also like