Module 3 - Software Modeling
Module 3 - Software Modeling
FUNDAMENTALS OF
SOFTWARE
ENGINEERING
Module 3: Software Modeling
Learning Objectives
• Software Design
• What is Architectural Modeling?
• Software Design Notation
• Software Design Concept
• Software Design Strategy/Approaches
• Two Approaches for Analysis & Design
• Data Flow Diagram (DFD) created using Structured Analysis Technique
• Structure Charts - Invocation / Call
• OOAD methods Three major steps
Module 3: Software Modeling 2
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.
Module 3: Software Modeling 3
Software Design Levels
• Software design yields three levels of results:
i. 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.
ii. 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.
iii. 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.
Module 3: Software Modeling 4
What is Architectural Modeling?
• Recall that we have characterized architecture as the set of principal design decisions
made about a system
• We can define models and modeling in those terms
• An architectural model is an artifact that captures some or all of the design decisions
that comprise a system’s architecture
• Architectural modeling is the reification and documentation of those design
decisions
• How we model is strongly influenced by the notations we choose:
• An architectural modeling notation is a language or means of capturing design
decisions.
5
How do We Choose What to Model?
6
Stakeholder-Driven Modeling
• Stakeholders identify
aspects of the system they
are concerned about
• Stakeholders decide the
relative importance of these
concerns
• Modeling depth should
roughly mirror the relative
importance of concerns
8
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
What do We Model? (cont’d)
• Elements of the architectural style
• Inclusion of specific basic elements (e.g., components, connectors, interfaces)
• Component, connector, and interface types
• Constraints on interactions
• Behavioral constraints
• Concurrency constraints
• …
9
What do We Model? (cont’d)
• Static and Dynamic Aspects
• Static aspects of a system do not change as a system
runs
• e.g., topologies, assignment of components/connectors to
hosts, …
• Dynamic aspects do change as a system runs
• e.g., state of individual components or connectors, state of a
data flow through a system, …
10
What do We Model? (cont’d)
• Functional and non-functional aspects of a system
• Functional
• “The system prints medical records”
• Non-functional
• “The system prints medical records quickly and confidentially.”
• Architectural models tend to be functional
• It is often important to capture non-functional decisions
• Even if they cannot be automatically or deterministically interpreted or
analyzed
11
Important Characteristics of Models
• Ambiguity
• A model is ambiguous if it is open to more than one interpretation
• Accuracy and Precision
• Different, but often conflated concepts
• A model is accurate if it is correct, conforms to fact, or deviates from correctness within
acceptable limits
• A model is precise if it is sharply exact or delimited
12
Software Design Components
• Principle
• Criteria (this lecture)
• Techniques (this lecture)
• Communicational
• Procedural
• Temporal
• Logical
• Coincidental
• Low
• Generate invoice
• Get and edit input data.
• A module will be cohesive if most of the methods defined in a class use most of the data
members most of the time.
• If we find different subsets of data within the same module being manipulated by separate
groups of functions then the module is not cohesive and should be broken down as shown
below.
i. Extensibility:- Extendibility is the ease of adapting software products to changes of
specification.
ii. Extensibility:- For small programs change is usually not a difficult issue; but as software
grows bigger, it becomes harder and harder to adapt. A large software system often looks
to its maintainers as a giant house of cards in which pulling out any one element might
cause the whole structure to collapse
• It represents that control module can select any of the sub module on
the basis of some condition.
• An object can be defined as a data field that has unique attributes and
behavior.
• OOP focuses on the objects that developers want to manipulate
rather than the logic required to manipulate them.
• This approach to programming is well-suited for programs that are
large, complex and actively updated or maintained.
• The main aim of Object Oriented Design (OOD) is to improve the
quality and productivity of system analysis and design by making it
more usable.
i. Classes
ii. Objects
iii. Methods
iv. Attributes