Professional Documents
Culture Documents
Unit-2 Software Engg.
Unit-2 Software Engg.
Unit-2
a) Feasibility Study
b) Requirement Elicitation and Analysis
c) Software Requirement Specification
d) Software Requirement Validation
e) Software Requirement Management
1. Feasibility Study:
The objective behind the feasibility study is to create the reasons for developing the software
that is acceptable to users, flexible to change and conformable to established standards. Types
of Feasibility:
The models used at this stage include ER diagrams, data flow diagrams (DFDs), function
decomposition diagrams (FDDs), data dictionaries, etc.
Data Flow Diagrams: Data Flow Diagrams (DFDs) are used widely for modeling the
requirements. DFD shows the flow of data through a system. The system may be a
company, an organization, a set of procedures, a computer hardware system, a
software system, or any combination of the preceding. The DFD is also known as a
data flow graph or bubble chart.
Data Dictionaries: Data Dictionaries are simply repositories to store information
about all data items defined in DFDs. At the requirements stage, the data dictionary
should at least define customer data items, to ensure that the customer and developers
use the same definition and terminologies.
Entity-Relationship Diagrams: Another tool for requirement specification is the
entity-relationship diagram, often called an "E-R diagram." It is a detailed logical
representation of the data for the organization and uses three main constructs i.e. data
entities, relationships, and their associated attributes.
After requirement specifications developed, the requirements discussed in this document are
validated. The user might demand illegal, impossible solution or experts may misinterpret the
needs. Requirements can be the check against the following conditions -
Analysis Model is a technical representation of the system. It acts as a link between system
description and design model. In Analysis Modelling, information, behavior, and functions of
the system are defined and translated into the architecture, component, and interface level
design in the design modeling.
Objectives of Analysis Modelling:
Data Dictionary: It is a repository that consists of a description of all data objects used or
produced by the software. It stores the collection of data present in the software. It is a very
crucial element of the analysis model. It acts as a centralized repository and also helps in
modeling data objects defined during software requirements.
Entity Relationship Diagram (ERD): It depicts the relationship between data objects and
is used in conducting data modeling activities. The attributes of each object in the Entity-
Relationship Diagram can be described using Data object description. It provides the basis for
activity related to data design.
Data Flow Diagram (DFD): It depicts the functions that transform data flow and it also
shows how data is transformed when moving from input to output. It provides the additional
information which is used during the analysis of the information domain and serves as a basis
for the modeling of function. It also enables the engineer to develop models of functional and
information domains at the same time.
State Transition Diagram: It shows various modes of behavior (states) of the system and
also shows the transitions from one state to another state in the system. It also provides the
details of how the system behaves due to the consequences of external events. It represents
the behavior of a system by presenting its states and the events that cause the system to
change state. It also describes what actions are taken due to the occurrence of a particular
event.
Process Specification: It stores the description of each function present in the data flow
diagram. It describes the input to a function, the algorithm that is applied for the
transformation of input, and the output that is produced. It also shows regulations and barriers
imposed on the performance characteristics that are applicable to the process and layout
constraints that could influence the way in which the process will be implemented.
Control Specification: It stores additional information about the control aspects of the
software. It is used to indicate how the software behaves when an event occurs and which
processes are invoked due to the occurrence of the event. It also provides the details of the
processes which are executed to manage events.
Data Object Description: It stores and provides complete knowledge about a data object
present and used in the software. It also gives us the details of attributes of the data object
present in the Entity Relationship Diagram. Hence, it incorporates all the data objects and
their attributes.
If the system is having hierarchical architecture, the program structure can easily be
partitioned both horizontally and vertically, figure (a), represents this view. In given figure
(a), horizontal division defines the individual branches of the modular hierarchy for every
major program function. Control modular (shown by rectangles) are used to coordinate
communication between tasks. The three partitions are done in simple horizontal partitions
i.e., input, data transformation (processing) and output. The following benefits are provided
by horizontal partitioning –
On the other hand, vertical segmentation, also known as “factoring”, states that control and
function must be distributed across the program structure, top to bottom. The top-level
modules have to carry out control functions and perform fewer modules in the structure are
laborious, performing all input, processing and output tasks.
Figure (b), represents vertical partitioning. Due to the nature of changes in program
structures, vertical segmentation is required. Observing the figure (b), it can be said that a
change in the control module would make its subordinates more likely to cause the spread of
side effects. Generally, changes are- changes to input, computation or transformation, and
output.
The basic behavior of the program is much less likely to change. That is why, vertically
partitioned structures are less susceptible to side effects due to changes and thus be more
maintainable, which is its key quality factor.
IV. Prototyping methods and tools
A software prototype is a simulation of how the actual project will look, work, and feel
and would not have an exact logic involved in the software development phase. Software
development team members use it for designing user feedback and user testing. And they
come in various levels of sophistication. Software prototyping refers to the process that
starts by creating an idea, sketching it, and making it into a clickable prototype that
mimics real software.
The prototype can offer simulation for the entire software or mobile application as per the
requirement of the user. Basically, prototyping in software development is just like a
scale building model that is utilized in designing architecture. In that case, creating a
sophisticated prototype is necessary as it enables making a complex project look easy. It
enables the customers to see the exact plan of the software development and by having a
look at that, they can provide feedback to the software designer.
The best part of a software prototype is that it is cheaper and easier as changes can be
made in the middle of the software development process instead of making changes after
its completion. Therefore, while creating software, an engineer prefers to develop an
initial prototype that he/she can use to gather feedback from the project owner.
V. Specification principles, Representation, the software requirements
specification and reviews Analysis Modeling
VI. Data Modeling, Functional modeling and information flow
VII. Data flow diagrams, Behavioral Modeling
VIII. The mechanics of structured analysis
IX. Creating entity/ relationship diagram, data flow model, control flow
model
X. The control and process specification, The data dictionary
XI. Other classical analysis methods.
XII. System Design: Design concepts and principles, the design process
XIII. Design and software quality, design principles
XIV. Design concepts: Abstraction, refinement, modularity, software
architecture, control hierarchy, structural partitioning
XV. Data structure, software procedure, information hiding; Effective
modular design
XVI. Functional independence, Cohesion, Coupling
XVII. Design Heuristics for effective modularity, The design model, Design
documentation.