You are on page 1of 9

Mod 4 OOSE

Importance of modelling
 Models help us to visualize a system as it is or as we want it to be.
 Models permit us to specify the structure or behaviour of a system.
 Models gives us a template that guides us in constructing a system.
 Models document the decisions we have made.

1. Visualization: Models offer a visual representation of software systems for better


understanding.
2. Abstraction: Models simplify complex systems, aiding in manageable development.
3. Analysis: Models are analysed for correctness, identifying potential issues early.
4. Requirements Elicitation: Models capture interactions to clarify system needs.
5. Design: Models serve as blueprints, guiding the creation of software architectures.
6. Documentation: Models document design decisions and constraints for future
reference.
7. Code Generation: Models can be transformed into executable code, speeding up
implementation.
8. Prototyping: Models enable creation of prototypes for early feedback and refinement.
Conceptual Model of the Unified Modelling Language (UML)
A conceptual model of the language underlines the three major elements:
 The Building Blocks
 The Rules
 Some Common Mechanisms
Once you understand these elements, you will be able to read and recognize the models as
well as create some of them.
Diagrams are all in the notebook.
Design Concepts

1. Abstraction
2. Architecture
3. Design patterns
4. Modularity
5. Information hiding
6. Functional independence
7. Refinement
8. Refactoring
9. Object oriented design concept
Analysis Model
Analysis Model is a technical representation of the system. It acts as a link between the
system description and the design model. In Analysis Modelling, information, behaviour, and
functions of the system are defined and translated into the architecture, component, and
interface level design in the design modelling.

Elements of Analysis Model


 Data Dictionary: Centralized repository
detailing all data objects used or
produced by the software, crucial for
analysis model.
 Entity Relationship Diagram (ERD):
Illustrates relationships between data
objects, foundational for data modeling.
 Data Flow Diagram (DFD): Visualizes
data transformation functions and flow,
aiding in functional and information
domain modeling simultaneously.
 State Transition Diagram: Depicts
system behavior and transitions between
states, reflecting responses to external events.
 Process Specification: Describes input, algorithm, and output of each function in DFD,
including performance regulations and layout constraints.
 Control Specification: Specifies software behavior and processes invoked by events,
managing event execution.
 Data Object Description: Provides comprehensive information on data objects and
their attributes, integrating with the ERD.
Key principles of Analysis model
 Abstraction: Focuses on capturing essential system aspects while omitting
unnecessary details, ensuring relevance to requirements.
 Modularity: Breaks down the system into manageable parts, facilitating
understanding, assessment, and modification.
 Consistency: Ensures harmony within analysis models and across project artifacts,
enhancing stakeholder comprehension and alignment.
 Traceability: Enables linking of analysis models to other project components, aiding
in requirement tracking and impact analysis.
 Precision: Demands accuracy and clarity in depicting system needs and behaviours,
minimizing miscommunication and implementation issues.
 Separation of Concerns: Divides system components into distinct representations
based on functionality, facilitating focused modelling and comprehension.
Design Modelling
Design modelling in software engineering represents the features of the software that helps
engineer to develop it effectively, the architecture, the user interface, and the component
level detail. It is mainly classified into four categories –
 Data design,
 architectural design,
 interface design,
 and component-level design.
Data Design: Data design involves representing data objects and their relationships in an
entity-relationship diagram, showcasing the structure of data through tables and depicting
various types of relationships such as one-to-one, one-to-many, and many-to-many.
Architectural Design: This process defines the relationship between major structural
elements of software, decomposing the system into interacting components expressed
through block diagrams. It outlines the system's structure, properties of involved
components, and their inter-relationships.
User Interface Design: User interface design determines how the software interacts with
users, focusing on behavior and usability. It encompasses designing interfaces for various
products like military systems, vehicles, and computer peripherals, ensuring optimal
interaction through usability testing and refinement.
Component Level Design: Component level design translates software architecture into
procedural descriptions of software components. It facilitates efficient data sharing and
allows components to focus on their specific functionality without concerning themselves
with centralized data management issues like backup and security.
Principles Of Software Design :
1. Should not suffer from “Tunnel Vision” –
While designing the process, it should not suffer from “tunnel vision” which means
that is should not only focus on completing or achieving the aim but on other effects
also.
2. Traceable to analysis model –
The design process should be traceable to the analysis model which means it should
satisfy all the requirements that software requires to develop a high-quality product.
3. Should not “Reinvent The Wheel” –
The design process should not reinvent the wheel that means it should not waste time
or effort in creating things that already exist. Due to this, the overall development will
get increased.
4. Minimize Intellectual distance –
The design process should reduce the gap between real-world problems and software
solutions for that problem meaning it should simply minimize intellectual distance.
5. Exhibit uniformity and integration –
The design should display uniformity which means it should be uniform throughout
the process without any change. Integration means it should mix or combine all parts
of software i.e. subsystems into one system.
6. Accommodate change –
The software should be designed in such a way that it accommodates the change
implying that the software should adjust to the change that is required to be done as
per the user’s need.
7. Degrade gently –
The software should be designed in such a way that it degrades gracefully which
means it should work properly even if an error occurs during the execution.
8. Assessed or quality –
The design should be assessed or evaluated for the quality meaning that during the
evaluation, the quality of the design needs to be checked and focused on.
9. Review to discover errors –
The design should be reviewed which means that the overall evaluation should be
done to check if there is any error present or if it can be minimized.
10. Design is not coding and coding is not design –
Design means describing the logic of the program to solve any problem and coding is a
type of language that is used for the implementation of a design.
Software Design Document
Software Design Document is a written document that provides a description of a software
product in terms of architecture of software with various components with specified
functionality.
The design specification addresses different aspects of the design model and is completed as
the designer refines his representation of the software. These design documents are written
by software engineers/designers or project managers and further passed to the software
development team to give them an overview of what needs to be built and how.
Software design
Software design is a mechanism to transform user requirements into some suitable form,
which helps the programmer in software coding and implementation. It deals with
representing the client's requirement, as described in SRS (Software Requirement
Specification) document, into a form, i.e., easily implementable using programming
language.

Objectives of Software Design


 Correctness: Software design should be correct as per requirement.
 Completeness: The design should have all components like data structures, modules,
and external interfaces, etc.
 Efficiency: Resources should be used efficiently by the program.
 Flexibility: Able to modify on changing needs.
 Consistency: There should not be any inconsistency in the design.
 Maintainability: The design should be so simple so that it can be easily maintainable
by other designers.
Data design
It is the process of translating raw data into aesthetically appealing and understandable
formats that allow individuals to see patterns, correlations, and trends. At its core, data
design seeks to reduce complexity and improve understanding.

You might also like