0% found this document useful (0 votes)
52 views4 pages

System Modeling and Software Design Overview

The document discusses different types of system models used in analysis including context models, behavioral models, data models, object models, and structured models. It provides details on context models, behavioral models including data flow and state machine models, data models, object models including inheritance models, and discusses concepts like modularization, concurrency, coupling, and cohesion in software design.

Uploaded by

Harsh Rathore
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)
52 views4 pages

System Modeling and Software Design Overview

The document discusses different types of system models used in analysis including context models, behavioral models, data models, object models, and structured models. It provides details on context models, behavioral models including data flow and state machine models, data models, object models including inheritance models, and discusses concepts like modularization, concurrency, coupling, and cohesion in software design.

Uploaded by

Harsh Rathore
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

SYSTEM MODELS

Used in analysis process to develop understanding of the existing system or new system. Excludes
details. An abstraction of the system
Types of system models
[Link] models
2. Behavioural
models [Link]
models [Link]
models
[Link]
models

CONTEXT MODELS
A type of architectural model. Consists of sub-systems that make up an entire
system First step: Toidentify the subsystem.
Represent the high level architectural model as simple block diagram
• Depict each sub system a named rectangle
• Lines between rectangles indicate associations between subsystems Disadvantages
--Concerned with system environment only, doesn't take into account other systems, which may take
data or give data to the model

The context of an ATM system consists of the following Auto-teller system, Security system,
Maintenance system, Account data base, Branch accounting system, Branch counter system

Behavioral models

Describes the overall behaviour of a system. Two types of behavioural


model [Link] Flow models
[Link] machine models

Data flow models --Concentrate on the flow of data and functional transformation on that data.
Show the processing of data and its flow through a sequence of processing steps. Help analyst
understand what is going on
Advantages
-- Simple and easily understandable
-- Useful during analysis of requirements

State machine models


Describe how a system responds to internal or external events. Shows system states and events that
cause transition from one state to another. Does not show the flow of data within the system. Used
for modeling of real time systems
Exp: Microwave oven
Assumes that at any time, the system is in one of a number of possible states. Stimulus triggers a
transition from on state to another state
Disadvantage
-- Number of possible states increases rapidly for large system models

DATA MODELS
Used to describe the logical structure of data processed by the system. An entity-
relation- attribute model sets out the entities in the system, the relationships between
these entities and the entity attributes. Widely used in database design.

OBJECT MODELS
An object oriented approach is commonly used for interactive systems development.
Expresses the systems requirements using objects and developing the system in an
object oriented PL such as c++ A object class: An abstraction over a set of objects
that identifies common attributes. Objects are instances of object class. Many objects
may be created from a single class.
Analysis process
-- Identifies objects and object classes Object class in UML
--Represented as a vertically oriented rectangle with three sections
(a) The name of the object class in the top section
(b) The class attributes in the middle section
(c) The operations associated with the object class are in lower section.

OBJECT MODELS INHERITANCE MODELS


A type of object oriented model which involves in object classes attributes. Arranges
classes into an inheritance hierarchy with the most general object class at the top of
hierarchy Specialized objects inherit their attributes and services
UML notation
-- Inheritance is shown upward rather than downward
--Single Inheritance: Every object class inherits its attributes and operations from a single
parent class
--Multiple Inheritance: A class of several of several parents.

Software design

Software design is a process to transform user requirements into some suitable form, which helps
the programmer in software coding and implementation. For assessing user requirements, an
SRS (Software Requirement Specification) document is created whereas for coding and
implementation, there is a need of more specific and detailed requirements in software terms.

The output of this process can directly be used into implementation in programming languages.
Software design is the first step in SDLC (Software Design Life Cycle), which moves the
concentration from problem domain to solution domain. It tries to specify how to fulfill the
requirements mentioned in SRS.

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 subsystems 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.
Modularization
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. These modules
may work as basic constructs for the entire software. Designers tend to design modules such that
they can be executed and/or compiled separately and independently.

Modular design unintentionally follows the rules of ‘divide and conquer’ problem solving
strategy this is because there are many other benefits attached with the modular design of a
software.

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.

Coupling and Cohesion


When a software program is modularized, its tasks are divided into several modules based on
some characteristics. As we know, modules are set of instructions put together in order to achieve
some tasks. They are though, considered as single entity but may refer to each other to work
together. There are measures by which the quality of a design of modules and their interaction
among them can be measured. These measures are called coupling and cohesion.

Cohesion
Cohesion is a measure that defines the degree of intra-dependability within elements of a
module. The greater the cohesion, the better is the program design.

There are seven types of cohesion, namely –


 Co-incidental cohesion - It is unplanned and random cohesion, which might be the result of
breaking the program into smaller modules for the sake of modularization. Because it is
unplanned, it may serve confusion to the programmers and is generally not-accepted.
 Logical cohesion - When logically categorized elements are put together into a module, it is
called logical cohesion.
 Temporal Cohesion - When elements of module are organized such that they are processed at
a similar point in time, it is called temporal cohesion.
 Procedural cohesion - When elements of module are grouped together, which are executed
sequentially in order to perform a task, it is called procedural cohesion.
 Communicational cohesion - When elements of module are grouped together, which are
executed sequentially and work on same data (information), it is called communicational
cohesion.
 Sequential cohesion - When elements of module are grouped because the output of one
element serves as input to another and so on, it is called sequential cohesion.
 Functional cohesion - It is considered to be the highest degree of cohesion, and it is highly
expected. Elements of module in functional cohesion are grouped because they all contribute to a
single well-defined function. It can also be reused.

Coupling
Coupling is a measure that defines the level of inter-dependability among modules of a program.
It tells at what level the modules interfere and interact with each other. The lower the coupling,
the better the program.
There are five levels of coupling, namely -
 Content coupling - When a module can directly access or modify or refer to
the content of another module, it is called content level coupling.
 Common coupling- When multiple modules have read and write access to
some global data, it is called common or global coupling.
 Control coupling- Two modules are called control-coupled if one of them
decides the function of the other module or changes its flow of execution.
 Stamp coupling- When multiple modules share common data structure and
work on different part of it, it is called stamp coupling.
 Data coupling- Data coupling is when two modules interact with each other
by means of passing data (as parameter). If a module passes data structure as
parameter, then the receiving module should use all its components.
 Ideally, no coupling is considered to be the best.

Common questions

Powered by AI

Cohesion, specifically functional cohesion, significantly influences module design quality as it ensures that all elements within a module contribute to a single, clearly defined function, which enhances clarity, reusability, and reliability . Modules with high functional cohesion improve program maintainability because each module effectively encapsulates its functionality, thus reducing interdependence and potential side effects during module updates or modifications . This separation of concerns also aids in debugging and testing processes, simplifying problem isolation and resolution.

Single inheritance in object-oriented design simplifies system structure, reducing complexity and promoting clarity by limiting each class to inheriting from one parent, which simplifies debugging and understanding class hierarchies . However, it may restrict extensibility as it forces designers to strictly define class roles within a single lineage . Multiple inheritance can enhance extensibility by allowing a class to inherit features from multiple parent classes, supporting more dynamic and flexible systems. However, it can increase system complexity, creating ambiguity in attribute and method resolution, which may complicate maintenance and increase the risk of errors in system behavior .

Modularization is significant in software design because it simplifies maintenance by breaking down a system into smaller, manageable components that can be independently updated or repaired . This minimizes the risk of errors and facilitates more straightforward debugging. From a security standpoint, modularization isolates system vulnerabilities, preventing issues in one module from affecting others and allowing for targeted security measures . It also enables concurrent execution, which improves system performance and reliability .

Coupling and cohesion are interrelated in that they measure different aspects of system interdependencies; cohesion focuses on internal module integrity while coupling measures inter-module connections . High cohesion within modules combined with low coupling between modules strengthens system robustness by limiting dependencies and minimizing error propagation between modules . This division enforces encapsulation and separation of concerns, enabling easier maintenance and integration while promoting clear and logical interaction within and between system components. A balance of low coupling with high cohesion thus directly contributes to a more stable and efficient system design.

Object modeling using UML contributes to the development of interactive systems by allowing the definition of system requirements in terms of objects enacting specific roles. UML class diagrams facilitate the visualization of these objects, their relationships, and interactions, promoting better design cohesion . Furthermore, inheritance models enhance system modularity and reuse by arranging classes hierarchically and enabling specialized objects to inherit attributes and behaviors from generalized classes, streamlining development and maintenance .

High-level design refines architectural design by breaking down the general system architecture into more detailed subsystems and their interactions, which helps clarify the specific roles and relationships between modules . This approach allows designers to address module implementation considerations early in the design process, fostering a clear pathway from abstract system concepts to concrete module solutions . High-level design emphasizes modularity and interaction, promoting better-defined interfaces and interconnections, which facilitate easier implementation, testing, and maintenance.

Behavioral models like data flow models and state machine models complement each other by addressing different aspects of system behavior. Data flow models focus on the transformation and processing of data, providing insight into the system’s data handling and processing steps . In contrast, state machine models describe system behavior in response to events, showing the transitions between states . For real-time systems, combining these models allows for a comprehensive view of both the dynamic event response (with state machine models) and data processing paths (with data flow models).

Managing state complexity in large-scale systems using state machine models is challenging due to the rapid increase in the number of possible states and transitions as system size grows . This complexity can lead to difficult debugging and testing processes, as more states and interactions increase the potential for unexpected behavior and errors. Moreover, the overwhelming number of transitions makes it challenging to maintain a clear and comprehensive model, potentially leading to oversights and misrepresentations of system behavior . Effective strategies involve careful state reduction and abstraction through hierarchical state machines or state aggregation to simplify the model.

Concurrency enhances system performance by allowing multiple parts of a program to be executed simultaneously, taking full advantage of modern multi-core processors . This parallel execution reduces wait times and improves responsiveness, particularly for applications like word processors where tasks like spell checking can run concurrently . Essential considerations for effective concurrent execution include identifying independent tasks that can be parallelized, ensuring thread safety to prevent race conditions, and managing resource contention to avoid bottlenecks . Proper synchronization and modular design are crucial to exploit concurrency without introducing errors.

Context models focus solely on the system environment and do not account for interactions with external systems that might exchange data. This limitation can significantly impact system design by potentially ignoring critical interdependencies and data flows between subsystems, leading to incomplete models and oversight in areas like data security and system integration .

You might also like