0% found this document useful (0 votes)
41 views

Modularization Is A Technique To Divide A Software System Into Multiple Discrete and Independent Modules

Uploaded by

elgiecompliza00
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views

Modularization Is A Technique To Divide A Software System Into Multiple Discrete and Independent Modules

Uploaded by

elgiecompliza00
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

Modularization is a technique to divide a software system into multiple

discrete and independent modules, which are expected to be capable of


carrying out task(s) independently.

Advantage of modularization:

 Smaller components are easier to maintain


 Program can be divided based on functional aspects
 Desired level of abstraction can be brought in the program
 Components with high cohesion can be re-used again
 Concurrent execution can be made possible
 Desired from security aspect

Concurrency
Back in time, all software are meant to be executed sequentially. By sequential
execution we mean that the coded instruction will be executed one after
another implying only one portion of program being activated at any given time.
Say, a software has multiple modules, then only one of all the modules can be
found active at any time of execution.

In software design, concurrency is implemented by splitting the software into


multiple independent units of execution, like modules and executing them in
parallel. In other words, concurrency provides capability to the software to
execute more than one part of code in parallel to each other.

It is necessary for the programmers and designers to recognize those modules,


which can be made parallel execution.

Example
 The spell check feature in word processor is a module of software, which
runs along side the word processor itself.

Software design process components

1. Wireframing : Wireframing is crucial for any software


designing process as it helps to enhance a solid
understanding of the structure of a project. This is
completely a systematic procedure that effectively saves time
& effort. Wireframes are simple to modify. So, you can easily
make changes in the wireframes until you achieve ultimate
satisfaction.

2. User Stories: They are casual & raw feature descriptions


of any software. User stories are usually written from the
perspective of the users so that they can navigate the overall
software design conveniently without facing any challenges.
Some of the following points must be included while making
user stories:

 It should be written based on the user’s perspective


 It must be discussed & worked on collaboratively
 It should have a simple and readable format

3. Data Flow Diagram: Data flow diagrams of DFDs are the


visual representations that usually show several levels of
concepts in a software design process. They are mainly 3
types:

 DFD level-0: It’s also called the fundamental system


model or context diagram that shows a full system
requirement in a single process.
 DFD level-1: Multiple processes are shown at the
DFD level-1. You can highlight the major system
functions & break down the DFD level-0 into sub-
processes.
 DFD level-2: DFD level 2 takes DFD level 1 one step
deeper. This is mainly used to record or plan the
necessary information on the software’s functioning.

4. Technical Design

Technical design is one of the important steps for software


development as it describes the process of the functionality
of a software system. It can be considered the project’s
backbone as it assists the entire project implementation. This
is basically a technical blueprint that includes software
requirements, communication interfaces, software
architecture, input/output details, etc. It also offers a proper
description of:

 Hardware components & functionalities


 Functions of software elements
 Order of software aspects
 Data structures & data flow

5. User Interface

The UI always comprises every part of the software design


with which users will interact. While developing a UI, you
have to make sure that the interface will be very user-
friendly. It aims to make the user experience more
pleasurable & enjoyable as well. Three major types of UIs
are:

 Graphical User User Interfaces (GUI): Computer


desktop
 Voice-Controlled User Interfaces (VUI): Amazon’s
Alexa & Apple’s Siri
 Gesture-Based User Interfaces: VR Games

Software Design Levels


Software design yields three levels of results:

 Architectural Design - The architectural design is the highest abstract


version of the system. It identifies the software as a system with many
components interacting with each other. At this level, the designers get
the idea of proposed solution domain.
 High-level Design- The high-level design breaks the ‘single entity-
multiple component’ concept of architectural design into less-abstracted
view of sub-systems and modules and depicts their interaction with each
other. High-level design focuses on how the system along with all of its
components can be implemented in forms of modules. It recognizes
modular structure of each sub-system and their relation and interaction
among each other.
 Detailed Design- Detailed design deals with the implementation part of
what is seen as a system and its sub-systems in the previous two designs.
It is more detailed towards modules and their implementations. It defines
logical structure of each module and their interfaces to communicate with
other modules.
1] Data centered architectures:
 A data store will reside at the center of this architecture
and is accessed frequently by the other components that
update, add, delete, or modify the data present within the
store.
 The figure illustrates a typical data-centered style. The
client software accesses a central repository. Variations of
this approach are used to transform the repository into a
blackboard when data related to the client or data of
interest for the client change the notifications to client
software.
 This data-centered architecture will promote integrability.
This means that the existing components can be changed
and new client components can be added to the
architecture without the permission or concern of other
clients.
 Data can be passed among clients using the blackboard
mechanism.
Advantages of Data centered architecture:
 Repository of data is independent of clients
 Client work independent of each other
 It may be simple to add additional clients.
 Modification can be very easy
2] Data flow architectures:
 This kind of architecture is used when input data is
transformed into output data through a series of
computational manipulative components.
 The figure represents pipe-and-filter architecture since it
uses both pipe and filter and it has a set of components
called filters connected by lines.
 Pipes are used to transmitting data from one component to
the next.
 Each filter will work independently and is designed to take
data input of a certain form and produces data output to
the next filter of a specified form. The filters don’t require
any knowledge of the working of neighboring filters.
 If the data flow degenerates into a single line of transforms,
then it is termed as batch sequential. This structure accepts
the batch of data and then applies a series of sequential
components to transform it.
Advantages of Data Flow architecture:
 It encourages upkeep, repurposing, and modification.
 With this design, concurrent execution is supported.
Disadvantage of Data Flow architecture:
 It frequently degenerates to batch sequential system
 Data flow architecture does not allow applications that
require greater user engagement.
 It is not easy to coordinate two different but related
streams

You might also like