SoftwareEnggNotes
SoftwareEnggNotes
1
6) Explain the components of Software Engineering?
Functionality
Reliability.
Efficiency.
Usability.
Maintainability.
Portability.
7) Explain the phases of SDLC?
It's typically divided into six to eight steps: Planning, Requirements, Design, Build,
Document, Test, Deploy, Maintain. Some project managers will combine, split, or omit
steps, depending on the project's scope. These are the core components recommended for
all software development projects.
8) Define customized Product?
Customer software development is done to develop a software product as per the needs
of particular customer.
In this development process, the the end-user requirements can be aggregated by
communicating by them.
Prototype is a working model of software with some limited functionality. The prototype
does not always hold the exact logic used in the actual software application and is an
extra effort to be considered under effort estimation.
Following is a stepwise approach explained to design a software prototype.
4
5) What are the problems during installation of software?
6) What are the phases of system engineering process?
Incorrect calculations - This is seen in functions such as
financial and datecalculations. The key determinant is
whenever mathematical functions and mathematical
operators are involved.
Incorrect data edits - This is when the software does not
apply existing dataedits correctly
Ineffective data edits - This is when data edits are in
place and working correctly, yet still fail to prevent
5
The Systems Engineering Process is a comprehensive, iterative and recursive
problem solving process, applied sequentially top-down by integrated teams. It
transforms needs and requirements into a set of system product and process
descriptions, generate information for decision makers, and provides input for the
next level of development. The process is applied sequentially, one level at a time,
adding additional detail and definition with each level of development.
The four (4) steps that comprise the SE Process are:
Step 1: Requirements Analysis
Step 2: System Analysis Control
Step 3: Functional Analysis/Allocation
Step 4: Design Synthesis
6
Chapter-3 Software Requirement Specification Document
1) What is requirement?
The software requirements are description of features and functionalities of the
target system. Requirements convey the expectations of users from the
software product. The requirements can be obvious or hidden, known or
unknown, expected or unexpected from client’s point of view.
2) Define Software requirement specification?
A software requirements specification (SRS) is a document that captures
complete description about how the system is expected to perform. It isusually
signed off at the end of requirements engineering phase.
3) What are functional requirements?
In software engineering and systems engineering, a functional
requirement defines a function of a system or its component, where
a function is described as a specification of behavior between outputs and
inputs. .... As defined in requirements engineering, functional
requirements specify particular results of a system.
4) What are non-functional requirements?
These are basically the quality constraints that the system must satisfy
according to the project contract. The priority or extent to which these factors
are implemented varies from one project to other. They are alsocalled non-
behavioral requirements.
5) What are the components of SRS?
Functional Requirements. Functional requirements specify what
output should be produced from the given inputs. Performance Requirements
(Speed Requirements) This part of an SRS specifies the performance
constraints on the software system. Design Constraints. External Interface
Requirements.
(iii)Overview –
In this, description of product is explained. It’s simply summary or
overall review of product.
General description :
In this, general functions of product which includes objective of user, a
user characteristic, features, benefits, about why its importance is
mentioned. It also describes features of user community.
Functional Requirements:
In this, possible outcome of software system which includes effects due
to operation of program is fully explained. All functional requirements
which may include calculations, data processing, etc. are placed in a
ranked order.
Interface Requirements:
In this, software interfaces which mean how software program
communicates with each other or users either in form of any language,
code, or message are fully described and explained. Examples can be
shared memory, data streams, etc.
Performance Requirements :
In this, how a software system performs desired functions under specific
condition is explained. It also explains required time, required memory,
maximum error rate, etc.
8
Design Constraints :
In this, constraints which simply means limitation or restriction are
specified and explained for design team. Examples may include use of a
particular algorithm, hardware and software limitations, etc.
Non-Functional
Functional Attributes :
In this, non
non-functional attributes are explained that are required by
software system for better performance. An example may include
Security, Portability, Reliability, Reusability, Application compatibility,
Data integrity, Scalability capacity, etc.
Appendices :
In this, additional information like references from where information is
gathered, definitions of some specific terms, acronyms, abbreviations,
etc. are given and explained.
9
agreeing on requirements so that engineering teams always have current and
approved requirements.
It includes various activities:
Planning requirement phase
Establishing the requirements process
Controlling requirement changes
Minimizing the addition of new requirements
Tracking progress
Resolving issues
Holding requirement reviews
The following are the key requirement skills:
Analyze the problem
Understand stakeholders
Define the system
Manage the scope of the system
Refine the system definition
Manage changing requirements
10
1) Inheritance model:
Inheritance in the object model is a means of defining one class in terms of another.
This is common usage for most of us. For example, a conifer is a type of tree. There
are certain characteristics that are true for all trees, yet there are specific
characteristics for conifers.
2) Object Aggregation:
Behavior of a system is explained and represented with the help of a diagram. This diagram
is known as State Transition Diagram. It is a collection of states and events. It
11
usually describes overall states that a system can have and events which are responsible
for a change in state of a system.
So, on some occurrence of a particular event, an action is taken and what action needs to
be taken is represented by State Transition Diagram.
12
Chapter 4 Software Prototyping
1) Define Prototype?
The project is divided into various components and work on one component is done at
once. It becomes easy to test each component due to modularity.
Coupling:
Coupling refers to the extent of interdependence between software modules and how
closely two modules are connected. Low coupling is a feature of good design. With low
coupling, changes can be made in each module individually, without changing the other
modules.
Abstraction:
The process of identifying the essential behavior by separating it from its
implementation and removing irrelevant details is known as Abstraction. The inability to
separate essential behavior from its implementation will lead to unnecessary coupling.
Anticipation of change:
The demands of software keep on changing, resulting in continuous changes in
requirements as well.
Simplicity:
The aim of good software design is simplicity. Each task has its own module, which can
be utilized and modified independently. It makes the code easy to use and minimizes the
number of setbacks.
Sufficiency and completeness:
A good software design ensures the sufficiency and completeness of the software
concerning the established requirements. It makes sure that the software has been
adequately and wholly built.
A particular area provided by design principle for the judgments of particular aspects ofdesign.
We have three types of principles which are explained below:
15
1. Division of problems - The base of these principles is to divide a big problem in to little
parts. Every little part developed by different programs individually. Every little part can
be individually altered.
o This helps the system to become more sufficient.
o This principle reduce the size of the problem and make simple and easy to service
or maintenance.
o Leads to hierarchy in the design.
For the solution of big problem it is necessary to became proper coordination between
these small pieces of problems.
2. Abstraction - To get the information in concerned to software parts from the outside is
called the abstraction.
3. Top down and bottom up design planning - According to this principle a big problem
divided in two little parts which is called modules and solved these modules one by one
individually so that no one module can effected each other. We have two types of
approaches. The top down approach goes from high level to the lower level. On the
16
other side the bottom up approach goes the opposite that mean it goes lower level to top
level.
Modularity- Dividing a large software project into smaller portions/modules is known
as modularity.
The project is divided into various components and work on one component is done at
once. It becomes easy to test each component due to modularity.
15) Explain various levels of cohesion ?
Cohesion is a measure that defines the degree of intra
intra-dependability
dependability within elements of a
module. The greater the cohesion, the better is the program design.
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 onal 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
well-defined function. It can also be reused.
17
Chapter 6 – Object Oriented Design & Function Oriented Design
5) Define inheritance?
In object-oriented programming, inheritance is the mechanism of basing an object or class
upon another object (prototype-based inheritance) or class (class- based
inheritance), retaining similar implementation. An inherited class is called a subclass of
its parent class or super class.
6) Describe object identification?
Object identification in object models means that every object instance has a unique,
unchanging identity.
Object identification is often referred to as an OID. OIDs are used to reference
object instances. Characteristics of OIDs: OIDs are independent of data contained in the
object.
7) What is function oriented design?
Function Oriented Design is an approach to software design where the design is
decomposed into a set of interacting units where each unit has a clearly defined
function.
Generic Procedure:
Start with a high level description of what the software / program does. Refine each
part of the description one by one by specifying in greater details the functionality of
each part. These points lead to Top-Down Structure.
Function Oriented Design Strategies:
Function Oriented Design Strategies are as follows:
1. Data Flow Diagram (DFD):
A data flow diagram (DFD) maps out the flow of information for any process or
system. It uses defined symbols like rectangles, circles and arrows, plus short text labels, to
show data inputs, outputs, storage points and the routes between each destination.
2. Data Dictionaries:
Data dictionaries are simply repositories to store information about all data items defined in
DFDs. At the requirement stage, data dictionaries contains data items. Data dictionaries
include Name of the item, Aliases (Other names for items), Description / purpose, Related
data items, Range of values, Data structure definition / form.
3. Structure Charts:
It is the hierarchical representation of system which partitions the system into black boxes
(functionality is known to users but inner details are unknown). Components are read from
top to bottom and left to right. When a module calls another, it views the called module as
black box, passing required parameters and receiving results.
Pseudo Code:
Pseudo Code is system description in short English like phrases describing the function. It
19
use keyword and indentation. Pseudo codes are used as replacement for flow charts. It
decreases the amount of documentation required.
20
from remote, unattended weather stations and other data sources such as weather
observers, balloons and satellites.
Weather stations transmit their data to the balloons and satellites. Weather stations
transmit their data to the area computer in response to a request from that machine. The
area computer system validates the collected data and integrates it with the data from
different sources.
The integrated data is archived and, using data from this archive and a digitized map
database a set of local weather maps is created.
21
22
23
Chapter- 7 and 8 User Interface Design
User interface is the front-end application view to which user interacts in order to use the
software. User can manipulate and control the software as well as hardware by means of user
interface.
24
7) Explain GUI design Activity?
There are a number of activities performed for designing user interface. The process of
GUI design and implementation is alike SDLC. Any model can be used for GUI
implementation among Waterfall, Iterative or Spiral Model.
GUI Requirement Gathering - The designers may like to have list of all functional and
non-functional requirements of GUI. This can be taken from user and their existing
software solution.
User Analysis - The designer studies who is going to use the software GUI. The target
audience matters as the design details change according to the knowledge and competency
level of the user. If user is technical savvy, advanced and complex GUI can be
incorporated. For a novice user, more information is included on how-to of software.
Task Analysis - Designers have to analyze what task is to be done by the software solution.
Here in GUI, it does not matter how it will be done. Tasks can be representedin
hierarchical manner taking one major task and dividing it further into smaller sub- tasks.
Tasks provide goals for GUI presentation. Flow of information among sub-tasks
determines the flow of GUI contents in the software.
GUI Design & implementation - Designers after having information about requirements,
tasks and user environment, design the GUI and implements into code andembed the GUI
with working or dummy software in the background. It is then self- tested by the
developers.
Testing - GUI testing can be done in various ways. Organization can have in-house
inspection, direct involvement of users and release of beta version are few of them. Testing
may include usability, compatibility, user acceptance etc.
8). What are the characteristics of GUI?
GUI Characteristics
Characteristics Descriptions
Menus Commands are selected from a menu rather than typed in a command
language.
25
Pointing A pointing device such as a mouse is used for selecting choices from a
menu or indicating items of interests in a window.
Graphics Graphics elements can be mixed with text or the same display.
26
Chapter 8 Reliability and Reusability
Reliability of software is maintained until any fault find in hardware which affects the path
of the data. Reliability of a software refers to the probability of a failing
hardware part and the calculation of time for the maintenance of hardware parts. Physically
errors always find in software system.
27
6). What is MTBF?
Software availability is measured in terms of mean time between failures(MTBF).
MTBF consists of mean time to failure (MTTF) and mean time to repair (MTTR). MTTF
is the difference of time between two consecutive failures and MTTR is the time required
to fix the failure.
7). What is POFOD?
POFOD is described as the probability that the system will fail when a service is requested.
It is the number of system deficiency given several systems inputs. POFOD is the
possibility that the system will fail when a service request is made.
8) . Define AVAIL?
Availability is defined as the probability that the system is operating properly when it is
requested for use. In other words, availability is the probability that a system is not failed
or undergoing a repair action when it needs to be used.
Statistical testing permits one to focus on testing those elements of the system that ar
presumably to be used. the primary step of applied mathematics testing is to work outthe
operation profile of the software package. a successive step is to get a group of check
knowledge reminiscent of the determined operation profile. The third step is touse the
check cases to the software package and record the time between every failure. once a
statistically important range of failures are ascertained, the undependable may be
computed.
28
Chapter 9 Software verification and validation
Define Failure?
A failure is the inability of a software system or component to perform its required functions
within specified performance requirements. When a defect reaches the end customer it is called
a Failure. During development Failures are usually observed by testers
2 )Define Fault and Bug?
Software fault is also known as defect, arises when the expected result don't match with the
actual results. It can also be error, flaw, failure, or fault in a computer program.
3) Define Bug?
A bug is the result of a coding error. An Error found in the development environment before the
product is shipped to the customer. A programming error that causes a program to work poorly,
produce incorrect results or crash. An error in software or hardware that causes a program to
malfunction. Bug is terminology of Tester.
4) Define Verification?
Verification is the process of evaluating work-products of a development phase to determine
whether they meet the specified requirements. verification ensures that the product is built
according to the requirements and design specifications.
5) Define validation?
Validation is the process of checking whether the software product is up to the mark or in other
words product has high level requirements. It is the process of checking the validation ofproduct
i.e. it checks what we are developing is the right product.
6). Define Test case?
A test case is a document, which has a set of test data, preconditions, expected results and
postconditions, developed for a particular test scenario in order to verify compliance against a
specific requirement.
7). Define Test Plan?
Test planning, the most important activity to ensure that there is initially a list of tasks and
milestones in a baseline plan to track the progress of the project. It also defines the size of the
test effort.
It is the main document often called as master test plan or a project test plan and usually
developed during the early phase of the project.
8). Explain test plan activity?
To determine the scope and the risks that need to be tested and that are NOT to be tested.
Documenting Test Strategy.
Making sure that the testing activities have been included.
Deciding Entry and Exit criteria.
Evaluating the test estimate.
29
Planning when and how to test and deciding how the test results will be evaluated, and
defining test exit criterion.
The Test artefacts delivered as part of test execution.
Defining the management information, including the metrics required and defect
resolution and risk issues.
Ensuring that the test documentation generates repeatable test assets.
30
improves and probability of finding errors also increase. For example – If valid range is 10 to
100 then test for 10,100 also apart from valid and invalid inputs.
4. Cause effect Graphing – This technique establishes relationship between logical input
called causes with corresponding actions called effect. The causes and effects are represented
using Boolean graphs. The following steps are followed:
1. Identify inputs (causes) and outputs (effect).
2. Develop cause effect graph.
3. Transform the graph into decision table.
4. Convert decision table rules to test cases.
White Box Testing is software testing technique in which internal structure, design and coding
of software are tested to verify flow of input-output and to improve design, usability andsecurity.
In white box testing, code is visible to testers so it is also called Clear box testing, Openbox testing,
Transparent box testing, Code-based testing and Glass box testing.
A major White box testing technique is Code Coverage analysis. Code Coverage analysis
eliminates gaps in a Test Case suite. It identifies areas of a program that are not exercised by a set
of test cases.
Statement Coverage:- This technique requires every possible statement in the code to be tested
at least once during the testing process of software engineering.
Branch Coverage - This technique checks every possible path (if-else and other conditional
loops) of a software application.
Condition Coverage
Multiple Condition Coverage
Finite State Machine Coverage
Path Coverage
Control flow testing
Data flow testing
Interface Testing is defined as a software testing type which verifies whether the communication
between two different software systems is done correctly.
31
Formal specification:
The computer code to be developed is formally given. A state-transition model that
shows system responses to stimuli is employed to precise the specification.
Incremental development:
The computer code is partitioned off into increments that area unit developed and valid
on individual basis mistreatment the white room method.
Structured programming:
Only a restricted range of management and information abstraction constructs area unit
used. The program development method is that the method of stepwise refinement of
the specification.
Static verification:
The developed computer code is statically verified mistreatment rigorous computer
code inspections. there’s no unit or module testing method for code parts.
Static Program Analysis Tool is such a program analysis tool that evaluates and computes various
characteristics of a software product without executing it. Normally, static program analysis tools
analyze some structural representation of a program to reach a certain analytical conclusion.
Basically some structural properties are analyzed using static program analysis tools.
1. Whether the coding standards have been fulfilled or not.
2. Some programming errors such as uninitialized variables.
3. Mismatch between actual and formal parameters.
4. Variables that are declared but never used.
Dynamic Program Analysis Tools:
Dynamic Program Analysis Tool is such type of program analysis tool that require the program
to be executed and its actual behavior to be observed. A dynamic program analyzer basically
implements the code. It adds additional statements in the source code to collect the traces of
program execution. When the code is executed, it allows us to observe the behavior of the
software for different test cases.
32
Once the software is tested and its behavior is observed, the dynamic program analysis
tool performs a post execution analysis and produces reports which describe the
structural coverage that has been achieved by the complete testing process for the
program.
For example, the post execution dynamic analysis report may provide data on extent
statement, branch and path coverage achieved.
The results of dynamic program analysis tools are in the form of a histogram or a pie
chart. It describes the structural coverage obtained for different modules of the
program. The output ofa dynamic program analysis tool can be stored and printed easily
and provides evidence that complete testing has been done. The result of dynamic
analysis is the extent of testing performed as white box testing. If the testing result is
not satisfactory then more test cases are designed and added to the test scenario. Also
dynamic analysis helps in elimination of redundant test cases.
33