S.E Notes
S.E Notes
Chapter 1
Introduction to software Engineering
1) What is software and software products? Explain types of software products.
Ans: It is collection programs and associated documentation. Software products may be
developed for a particular customer or may be developed for a general market.
1
Written By: Mahesh , Nitin, Sunil.
Software Engineering
1) Requirement phase:- The system service, constraints and goals are established by
consultation with system users. Both user and development staff define it in an understandable
manner.
- All possible requirements of the system to be developed are captured in this phase and
documented in a requirement specification doc.
2) Design phase:- The system design is either software or hardware system. It establishes
overall system architecture. Software design represents software functions.
- The requirement specifications from the first phase are studied in this phase and system
design is prepared. System Design helps in specifying hardware and system requirements and
also helps in defining overall system architecture.
3) Implementation:- During this stage, software design realized as a set of the program unit.
Unit testing involves verifying each unit meets its specification.
- With inputs from system design, the system is first developed in small programs called units,
which are integrated into the next phase. Each unit is developed and tested for its functionality
which is referred to as Unit Testing.
4) Integration:- The individual program units are integrated a complete system to ensure that
the software requirements have been meeting.
- All the units developed in the implementation phase are integrated into a system after testing
of each unit. Post integration the entire system is tested for any faults and failures.
5) Validation: - A complete system has to be tested and to ensure that the software
requirements have been meeting.
6) Deployment: - After the test, the software system is delivered to the customer.
- Once the functional and non functional testing is done, the product is deployed in the
customer environment or released into the market.
2
Written By: Mahesh , Nitin, Sunil.
Software Engineering
- This model is divided into a number of frameworks activities, also called tasks regions
typically they are between three and six tasks regions.
2) Planning: - Task required defining resources, timelines, and other projects related
information.
- Requirements are gathered during the planning phase. Requirements like ‗BRS‘ that is
‗Business Requirement Specifications‘ and ‗SRS‘ that is ‗System Requirement specifications‘.
3) Risk analysis: - Task required to access both technical and management risks.
- In the risk analysis phase, a process is undertaken to identify risk and alternate solutions. A
prototype is produced at the end of the risk analysis phase. If any risk is found during the risk
analysis then alternate solutions are suggested and implemented.
5) Construction and realize: - Task required constructing, tasking, installing and providing
user support (e.g documentation and training).
6) Customer evaluation:- Task required to obtain customer feedback based on the evolution
of software representation created during the engineering stage.
- Product maintenances
- Product enhancement project
- New product development projects
- Concept development projects.
Advantages of Spiral model:
i) The high amount of risk analysis hence, avoidance of Risk is enhanced.
ii) Good for large and mission-critical projects.
iii) Strong approval and documentation control.
iv) Additional Functionality can be added at a later date.
Disadvantages of Spiral model:
i) Can be a costly model to use.
ii) Risk analysis requires highly specific expertise.
iii) Doesn‘t work well for smaller projects.
When to use Spiral model:
- When costs and risk evaluation is important
- For medium to high-risk project.
3
Written By: Mahesh , Nitin, Sunil.
Software Engineering
Chapter – 2
Computer Based System Engineering
This process follows a ―waterfall‖ model because of the need for parallel development of
different parts of the system.
3 types of Requirements:
a) Abstract functional Requirement:- The basic function that the system must provide are
defined at an abstract level.
b) System properties Requirement:- These are non-functional properties such as
availabilities, performance, and safety. These properties affect the Requirement for sub-
system.
c) Characteristics that the system must not exhibit:- It is imp to specify what the system
must not do as it is to specify would do.
2) System Design:- It is concerned with how the system functionally is to be provided by the
components of the system.
4
Written By: Mahesh , Nitin, Sunil.
Software Engineering
a) Partition Requirement:- We analyze the requirement and organize them into groups.
b) Identify Sub-system:- We should identify sub-system that can individually or collectively
meet the requirements.
c) Assign requirements to subsystem: - We assign the Requirements to the system in
principle, this should be straight forward if the requirement pertaining used to derive the
subsystem identification.
d) Specify sub-system functionality: - you should Specify the specific functions provided by
each subsystem. This may be seen as part of the system design phase.
e) Define sub-system interfaces:- we define the interface that provided & required by each
sub-system once their interface has been agreed upon, it become possible to develop.
3) Subsystem Design:- Typically parallel projects developing the hardware, software, and
communication. May involve some COTS (Commercial off the shelf) systems procurement.
4) System Integration:- The process of putting hardware, software, and people together make
a system. Should be tackled inclemently so that sub-system are integrated one at a time.
6) System Evolution:- the large system has a long lifetime they must evolve to meet
changing requirements. Evolution is inherently costly; changes must be evolved from
technical and business perspective. Subsystems interact so unanticipated problem can arise.
There is rarely a rationale for original design decisions.
7) System decommissioning: - taking the system out of service after its useful lifetime
5
Written By: Mahesh , Nitin, Sunil.
Software Engineering
6
Written By: Mahesh , Nitin, Sunil.
Software Engineering
Chapter – 3
Requirements and Specifications
- The requirement engineering process is carried out such that a requirement Specification
serves as the basis for an agreement to be signed between the clients and the software
developers.
b) Requirements Analysis: - Here in this phase, software development ,staff counsel end—
users and customers to find out the services the software system should provide.
- They also gather information such as conditions under which the software must perform,
hardware constraints, required performance of the system etc, through a series of discussions
with potential users, and observing the performance of existing software systems.
c) Requirements Definition: - Here in this phase, the requirements are defined in terms of a
document by translating the necessary information gathered during requirements analysis
phase.
- Requirement document would reflect customer needs and must be understood both by the
end—user and customer of the software system 'being developed.
7
Written By: Mahesh , Nitin, Sunil.
Software Engineering
e) The Software Requirements Document: - From our previous discussions, we know that
requirements of the software system to be developed or in short software specifications are
detailed in a Software Requirements Document.
8
Written By: Mahesh , Nitin, Sunil.
Software Engineering
9
Written By: Mahesh , Nitin, Sunil.
Software Engineering
10
Written By: Mahesh , Nitin, Sunil.
Software Engineering
- Data flow models are valuable because tracking and documenting how the data associated
with a particular process moves through the system helps analysts understand what is going
on.
Advantages of viewpoint
1) In interactive to systems, it is quite natural to assume end users as receivers of the system
services.
2) It is external to the system.
3) If there is no interaction then it is not a viewpoint.
4) It is useful for structuring non-functional requirements.
- The requirements specification activity will produce the SRS software Requirements
Specification, a final document based on the problem being analyzed in the first activity i.e.
Requirement Analysis. Also, the SRS is now ready to undergo Validation process.
- Thus, the requirements specification is intended to convey in a precise way the functions
which the software system must provide.
- Therefore, such specifications are sometimes called Functional specifications. The
Requirements specifications may be prepared and finalized (approved) on the basis of a
contract.
11
Written By: Mahesh , Nitin, Sunil.
Software Engineering
- SRS intended to specify the return document of the system to b e developed, fourth software
developers. Indeed SRS should not be ambiguous or informal has such the confusions or
ambiguity would generate a wrong interpretation of the system.
Characteristics of SRS
1) Correct: - Genuine requirements must be part of an SRS.
2) Complete: - Software system must perform each & every function as specified in SRS.
3) Unambiguous: - Non- confusing, if every requirement has specified in SRS carry one
meaning.
4) Verifiable: - Review/cross checking to clarify the SRS is understood & software performs
intended functions.
5) Consistent: - Stable due to Non-conflicting requirements.
6) Modifiable: - The necessary change can be made without affecting completeness.
12
Written By: Mahesh , Nitin, Sunil.
Software Engineering
Chapter- 4
Software Prototyping
1. Evolutionary Prototyping
- The evolutionary prototyping is intended to deliver a working system to end—users. —
- However, the evolutionary approach begins with a limited understanding of the system
requirements. But the system is updated and modified further as and when new requirements
are discovered.
- Accordingly, whenever it is difficult to establish a detailed system specification and user
requirements are not clear the evolutionary prototyping is recommended.
2) Throw-Away Prototyping.
- The throw-away prototyping is intended to derive (discover) and validate the system
requirements (system specifications).
- Here the function of the prototype is to clarify requirements and supply the necessary
information for managers to validate process risks.
- Accordingly, after evaluation the prototype is thrown away has the name itself indicates &
it's not used as a basis for further development of the system.
13
Written By: Mahesh , Nitin, Sunil.
Software Engineering
14
Written By: Mahesh , Nitin, Sunil.
Software Engineering
Chapter- 5
System Design
Two characteristics that serve as a guide for the evaluation of a good design
1. The design must implement all of the explicit requirements contained in the analysis model,
and it must accommodate all of the implicit requirements desired by the customer.
2. The design must be a readable, understandable guide for those who generate code and for
those who test and subsequently support the software.
1) A design should exhibit an architectural structure that (1) has been created using
recognizable design patterns, is composed of components that exhibit good design
characteristics.
2). A design should be modular; that is the software should be logically partitioned into
elements that perform specific functions and sub-functions.
3). A design should contain distinct representations of data -architecture, interfaces, and
components (modules).
4). A design should lead to data structures that are appropriate for the objects to be
implemented and are drawn from recognizable data patterns.
5). A design should lead to components that exhibit independent functional characteristics.
Types of coupling
1) Content coupling: - When module can directly access or modify or refer to the content of
another module.
2) Data coupling: - It is when two modules interact with each other by means of passing data
(parameter).
15
Written By: Mahesh , Nitin, Sunil.
Software Engineering
- If a module passes data structure as a parameter, then the receiving module should use all its
components.
3) Stamp Coupling: - When multiple modules share common data structure & work on
different part of it.
4) Common Coupling: - When multiple modules have read & write access to some global
data, it is called as common or global coupling.
5) Control Coupling: - When two modules are controlled coupled if one of them decides the
function of the other module or changes its flow of execution.
Types of Cohesion
1) Coincidental cohesion: - it takes place when different. elements within a module are not
related but joined together to form a single module.
2) Logical cohesion : - It takes place when there exist some logical relationship among
different elements of a module and such elements or components perform similar functions
like only input, only outputs, error handling etc.
3) Temporal cohesion: - It takes place when all of the logically related elements of a module
act upon together at the same time. For instance start up or Shut Down routines.
5) Communicational cohesion: - It takes place when all the elements of a module act upon
the same input data or reference the same output data.
6) Sequential cohesion: - It takes place when the output from one element in a module serves
as input to another element within that module.
7) Functional cohesion: - It takes place when each and every element of a module is essential
to execute a single function. Examples of functionally cohesive modules include "compute the
logarithm of x "compute square root" "sorting and searching procedures" etc.
16
Written By: Mahesh , Nitin, Sunil.
Software Engineering
Characteristics
a) Completeness: All necessary components available it means code calls a subroutine from
an external source, it should be provided.
b) Conciseness: minimise the redundant information on processing. This is important where
memory capacity is limited. It is a good practice to keep the limits of code minimum.
c) Probability: Ability to run on multiple computer configurations. It should run on P.C as
well as smartphone & it should run on the different system.
d) Maintainability: The software product that is maintainable should be well documented
should not be compiler & should have space capacity for memory storage.
e) Reliability: Ability to perform its intended functions satisfactorily. We can rely on such
system product is required to perform correctly in whatever the condition it finds itself.
f) Efficiency: Fulfillment if purpose without waste of resources, such as memory space &
process utilisation.
System Structuring
- System structuring activity performs decomposition of a system into a set of interacting
principal sub-systems.
- Where in a principal sub-system is an independent software unit (a decision-making control
module or superordinate or a principal worker module)?
- Further this activity identifies communication between various such sub-systems.
- Architectural design interns of system structuring may be presented as a block diagram that
represents an overview of the system structure.
17
Written By: Mahesh , Nitin, Sunil.
Software Engineering
- Sub-systems exchanging up a system must exchange information so that they can work
together effectively.
- There are two fundamental ways in which this can be done:
1) All shared data held in a central database that can be accessed by all sub-systems.
2. Each sub-system maintains its own database. Data is interchanging them to with other sub-
systems by passing messages to them
- The majority of systems that use large amounts of data are organised around a shared
database or repository.
- This model is therefore suited to applications where data is generated by one sub-system and
used by another.
Advantages.
1) The efficient way to share large amounts of data.
2) Sub-systems need not be concerned with how data is produced centralised management e.g.
backup, security, etc.
3) Sharing model is published as the repository schema.
Disadvantages
1) Data evolution is difficult and expensive
2) No space for specific management‘s policies
18
Written By: Mahesh , Nitin, Sunil.
Software Engineering
- This is multi-user, web based system to provide a film photography library. In this system,
several servers manage & display the different types of media.
- Distributed system model which shows how data and processing are distributed across' a
range of components.
- Set of stand-alone servers, which provide specific services such as printing, data
management etc.
- Set of clients which call on these services.
- Network which allows clients to access servers.
Advantages
1) Distribution of data is straightforward
2) Easy to add new servers.
b) The design should be traceable to the analysis model:- Because a single element of the
design model often traces to multiple requirements, it is necessary to have a means for
tracking how requirements have been satisfied by the design model.
19
Written By: Mahesh , Nitin, Sunil.
Software Engineering
c) The design should not reinvent the wheel: - Systems are constructed using a set of design
patterns, many of which have likely been encountered before.
d) The design should "minimize the intellectual distance" between the software and the
problem as it exists in the real world: - That is the structure of the software design should
(whenever possible) mimic the structure of the problem domain.
7) Explain Modularity?
Ans: - Modularity means the software is divided into separately addressable components,
often called ‗Modules‘ that are integrated to satisfy problem requirements.
- It has been stated that "modularity is the single attribute of software that allows a program to
be intellectually manageable".
- Monolithic software (i.e. a large program composed of a single module) cannot be easily
grasped by a reader.
- The number of control paths, a span of reference, the number of variables, and overall
complexity would make understanding close to impossible.
- To illustrate this point, consider the following argument based on observations of human
problem solving.
- Let C(x) be a function that defines the perceived complexity of a problem x, and E(x) be a
function that defines the effort in time) required to solve a problem x. For two problems, p1
and p2, if C(p1) > C(p2) - 5.1 (a) it follows that
E (p1) > E(p2) (13-1b) 5 .1 (b) As a general case, this result is intuitively obvious. It does
take more time to solve a difficult problem. Another interesting characteristic has been
uncovered through experimentation in human problem solving. That is, C (pl + p2) > C(pl) +
C(p2) 5.2
Expression (5.2) implies that the perceived complexity of a problem that combines p1 and p2
are greater than the perceived complexity when each problem is considered separately.
Object Models
- Structure the system into a set of loosely coupled objects with well-defined interfaces.
20
Written By: Mahesh , Nitin, Sunil.
Software Engineering
21
Written By: Mahesh , Nitin, Sunil.
Software Engineering
Chapter – 6
Object Oriented and Functional Design
Object-oriented Development
1) Object-oriented analysis, design, and programming are related but distinct.
2) Object Oriented Analysis (00A) is concerned with developing an object model of the
application domain.
3) Object Oriented Design (OOD) is concerned with developing an object oriented system,
model to implement requirements
4) Object Oriented Programming (OOP) is concerned with realizing an OOD using a 00
programming language such as Java or C++.
22
Written By: Mahesh , Nitin, Sunil.
Software Engineering
Chapter – 7
User Interface Design
i) User Familiarity: The interface should use terms and concepts, which are drawn from the
experience of the people who will make the most use of the system.
ii) Consistency: The system should display an appropriate level of consistency commands
and menus should have the same format, command punctuation should be similar, etc..
iii) Recoverability: The system should provide some resilience to user errors and allow the
user to recover from errors.
iii) Minimal surplus: Users should never be surprised by the behavior of a system.
iv) User guidance: The interface should include mechanisms to allow users to recover from
errors.
v) User diversity: The interface should provide appropriate interaction facilities for different
types of the system user.
GUI Advantages:
1) They are easy to learn and use - Users without experience can learn to use the system
quickly.
2) The user may switch quickly from one task to another and can interact with several
different applications.
3) Information remains visible in its own window when attention is switched. Fast full screen
interaction is possible with immediate access to anywhere on the screen
23
Written By: Mahesh , Nitin, Sunil.
Software Engineering
Disadvantages:
1) May be more difficult to program.
2) Not suitable for small graphics.
3) Direct manipulation interfaces can be complex to program and make heavy demands on the
computer system.
Advantages:
i) Users need not remember command names as they are always presented with a list of valid
commands
ii) Typing effort is minimal.
iii) User errors are trapped by the interface.
iv) Context-dependent help can be provided.
Disadvantages:
- Actions which involve logical conjunction (and) or disjunction (or) are awkward to
represent.
- Menu systems are best suited to presenting a small number of choices. If there are many
choices, some menu structuring facility must be used.
24
Written By: Mahesh , Nitin, Sunil.
Software Engineering
a) Static Information: This is fixed and it cannot be changed. It is initialized at the beginning
of a session. It does not change during the session.
- It is may be either numeric or textual.
b) Dynamic information: Changes during a session and the changes must be communicated
to the system user and it may be either numeric or textual.
- This is alterable information. The user can alter the information during Run-Time.
Interface evaluation:
- Some evaluation of a user interface design should be carried out to assess its suitability.
- Full-scale evaluation is very expensive and impractical for most systems.
- Ideally, an interface should be evaluated against a usability specification.
Chapter – 8
Software Reliability & Reusability
Matrices are:
a) POFOD- Probability of failure on demand:- The system will fail when a service request
is made. For example, a POFOD of 0.001 means that 1 out of a thousand service requests may
result in failure.
- This is the probability that the system will fail when a service request is made.
- Appropriate for protection systems where services are demanded & where there are serious
consequences if the service is not available.
b) ROCOF – Rate of Failure occurrence: Rate of failure occurrence is 0.002 (i.e 2/100).
- an ROCOF of 2/100 means that 2 failures are likely me to occur in each 100 operational
time units.
- This metric is sometimes called the failure intensity.
- ROCOF of 0.002 means 2 failures are likely in each 1000 operational time units.
Ex: Credit cards processing system, airline booking system.
c) MTTF – Mean time to failure: MTTF of 500 means that 1 failure can be expected every
500-time units. It is reciprocal of ROCOF for stable systems.
- Relevant for systems with long transactions.
d) AVIL – Availability: The probability that the system is available for use at given time.
For ex: an availability of 0.998 means that in every 1000 time units, the systems is likely to be
available for 998 units.
- Relevant for Non-stop, continuously running system.
26
Written By: Mahesh , Nitin, Sunil.
Software Engineering
- Fault Tolerance is required where there are high availability requirements or where failure
costs are very high.
- Fault Tolerance means that the system can continue in operation in spite of software failure.
Software Reusability
Benefits of Re-usability:
i) Increased reliability & dependability.
ii) Reduced process risk.
iii) Effective use of specialists.
iv) Standard compliances.
v) Accelerated development
vi) Reliability & safety
Disadvantages of Re-use:
1) Increased maintenance cost
2) Lack of tool support.
3) Finding & adapting of reusable components is difficult.
27
Written By: Mahesh , Nitin, Sunil.
Software Engineering
Chapter – 9
Software Verification & Validation
- The above figure illustrates the model of system that is assumed in the black-box testing.
- The tester presents inputs to the components or the system & examines the corresponding
outputs.
- Black box testing method can be applied to detect error in the following types:
i) Initialization & termination errors
ii) Performance error.
iii) Interface errors in modules.
28
Written By: Mahesh , Nitin, Sunil.
Software Engineering
29
Written By: Mahesh , Nitin, Sunil.