SE Mod 1&2 Notes
SE Mod 1&2 Notes
NATURE OF SOFTWARE
Software is:
1. instructions (computer programs) that when executed provide desired
features, function, and performance;
2. data structures that enable the programs to adequately manipulate
information, and
3. document that describes the operation and use of the programs.
Characteristics of software ➢ Software is developed or engineered, it is not
manufactured in the classical sense. ➢ Software does not wear out. However it
deteriorates due to change. ➢ Software is custom built rather than assembling
existing components. - Although the industry is moving towards component
based construction, most software continues to be custom built
the changing nature of software:
Seven Broad Categories of software are challenges for software engineers
• System software- System software is a collection of programs written to
service other programs. System software: such as compilers, editors, file
management utilities.
• Application software: stand-alone programs for specific needs. This
software are used to controls business needs. Ex: Transaction processing.
• Artificial intelligence software- Artificial intelligence (AI) software
makes use of nonnumeric algorithms to solve complex problems.
Application within this area include robotics, pattern recognition, game
playing. Engineering and scientific software-Engineering and scientific
software have been characterized by "number crunching" algorithm.
1
• Embedded software resides within a product or system. (key pad control
of a microwave oven, digital function of dashboard display in a car)
• Product-line software focus on a limited marketplace to address mass
consumer market. (Word processing, graphics, database management)
• WebApps (Web applications) network centric software. As web 2.0
emerges, more sophisticated computing environments is supported
integrated with remote database and business applications.
SOFTWARE ENGINEERING
• Software engineering is the establishment and use of sound engineering
principles in order to obtain economically software that is reliable and
works efficiently on real machines. • Or
• The IEEE definition: • Software Engineering: (1) The application of a
systematic, disciplined, quantifiable approach to the development,
operation, and maintenance of software; that is, the application of
engineering to software.
SOFTWARE ENGINEERING - LAYERED TECHNOLOGY
Software engineering is a fully layered technology.
• To develop a software, we need to go from one layer to another.
• All these layers are related to each other and each layer demands the
fulfillment of the previous layer.
3
engineering process framework activities are complemented by a number
of umbrella activities.
4
SDLC MODELS
1. WATERFALL MODEL:
Winston Royce introduced the Waterfall Model in 1970.This model has five
phases: Requirements analysis and specification, design, implementation, and
unit testing, integration and system testing, and operation and maintenance. The
steps always follow in this order and do not overlap. The developer must complete
every phase before the next phase begins. This model is named "Waterfall
Model", because its diagrammatic representation resembles a cascade of
waterfalls.
2. Design Phase: This phase aims to transform the requirements gathered in the
SRS into a suitable form which permits further coding in a programming
language. It defines the overall software architecture together with high level and
detailed design. All this work is documented as a Software Design Document
(SDD).
5
modules are tested in isolation initially. After that these modules are tested by
writing some overhead code to check the interaction between these modules and
the flow of intermediate output.
4. Integration and System Testing: This phase is highly crucial as the quality
of the end product is determined by the effectiveness of the testing carried out.
The better output will lead to satisfied customers, lower maintenance costs, and
accurate results. Unit testing determines the efficiency of individual modules.
However, in this phase, the modules are tested for their interactions with each
other and with the system.
• This model is simple to implement also the number of resources that are
required for it is minimal.
• The requirements are simple and explicitly declared; they remain
unchanged during the entire project development.
• The start and end points for each phase is fixed, which makes it easy to
cover progress.
• The release date for the complete product, as well as its final cost, can be
determined before development.
• It gives easy to control and clarity for the customer due to a strict reporting
system.
• In this model, the risk factor is higher, so this model is not suitable for more
significant and complex projects.
• This model cannot accept the changes in requirements during development.
• It becomes tough to go back to the phase. For example, if the application
has now shifted to the coding phase, and there is a change in requirement,
It becomes tough to go back and change it.
• Since the testing done at a later stage, it does not allow identifying the
challenges and risks in the earlier phase, so the risk reduction strategy is
difficult to prepare.
6
SPIRAL MODEL:
1. Objective setting: Each cycle in the spiral starts with the identification of
purpose for that cycle, the various alternatives that are possible for achieving the
targets, and the constraints that exists.
2. Risk Assessment and reduction: The next phase in the cycle is to calculate
these various alternatives based on the goals and constraints. The focus of
evaluation in this stage is located on the risk perception for the project.
7
4. Planning: Finally, the next step is planned. The project is reviewed, and a
choice made whether to continue with a further period of the spiral. If it is
determined to keep, plans are drawn up for the next step of the project.
Advantages
Disadvantages
8
V MODEL:
V-Model also referred to as the Verification and Validation Model. In this, each
phase of SDLC must complete before the next phase starts. It follows a sequential
design process same as the waterfall model. Testing of the device is planned in
parallel with a corresponding stage of development. So V-Model contains
Verification phases on one side of the Validation phases on the other side.
Verification and Validation process is joined by coding phase in V-shape. Thus
it is known as V-Model.
9
There are the various phases of Verification Phase of V-model:
1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed
during the module design phase. These UTPs are executed to eliminate
errors at code level or unit level. A unit is the smallest entity which can
independently exist, e.g., a program module. Unit testing verifies that the
smallest entity can function correctly when isolated from the rest of the
codes/ units.
2. Integration Testing: Integration Test Plans are developed during the
Architectural Design Phase. These tests verify that groups created and
tested independently can coexist and communicate among themselves.
3. System Testing: System Tests Plans are developed during System Design
Phase. Unlike Unit and Integration Test Plans, System Tests Plans are
10
composed by the client’s business team. System Test ensures that
expectations from an application developer are met.
4. Acceptance Testing: Acceptance testing is related to the business
requirement analysis part. It includes testing the software product in user
atmosphere. Acceptance tests reveal the compatibility problems with the
different systems, which is available within the user atmosphere. It
conjointly discovers the non-functional problems like load and
performance defects within the real user atmosphere.
Advantage of V-Model:
1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before coding.
3. This saves a lot of time. Hence a higher chance of success over the waterfall
model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.
Disadvantage of V-Model:
11
ITERATIVE MODEL:
In this Model, you can start with some of the software specifications and develop
the first version of the software. After the first version if there is a need to change
the software, then a new version of the software is created with a new iteration.
Every release of the Iterative Model finishes in an exact and fixed period that is
called iteration.
The Iterative Model allows the accessing earlier phases, in which the variations
made respectively. The final output of the project renewed at the end of the
Software Development Life Cycle (SDLC) process.
2. Design: In the design phase, team design the software by the different diagrams
like Data Flow diagram, activity diagram, class diagram, state transition diagram,
etc.
5. Deployment: After completing all the phases, software is deployed to its work
environment.
6. Review: In this phase, after the product deployment, review phase is performed
to check the behaviour and validity of the developed product. And if there are any
error found then the process starts again from the requirement gathering.
13
GENERIC PROCESS MODELS:
1. Communication:
The software development starts with the communication between customer and
developer.
2. Planning:
It consists of complete estimation, scheduling for project development and
tracking.
3. Modeling:
• Modeling consists of complete requirement analysis and the design of the
project like algorithm, flowchart etc.
• The algorithm is the step-by-step solution of the problem and the flow
chart shows a complete flow diagram of a program.
4. Construction:
• Construction consists of code generation and the testing part.
• Coding part implements the design details using an appropriate
programming language.
• Testing is to check whether the flow of coding is correct or not.
• Testing also check that the program provides desired output.
5. Deployment:
• Deployment step consists of delivering the product to the customer and
take feedback from them.
• If the customer wants some corrections or demands for the additional
capabilities, then the change is required for improvement in the quality
of the software
14
SOFTWARE PROCESS ASSESSMENT:
The scope of a software process assessment can cover all the processes in the
organization, a selected subset of the software processes, or a specific project.
Most of the standard-based process assessment approaches are invariably based
on the concept of process maturity.
When the assessment target is the organization, the results of a process
assessment may differ, even on successive applications of the same method.
There are two reasons for the different results. They are,
• The organization being investigated must be determined. For a large
company, several definitions of organization are possible and
therefore the actual scope of appraisal may differ in successive
assessments.
• Even in what appears to be the same organization, the sample of
projects selected to represent the organization may affect the scope
and outcome.
When the target unit of assessment is at the project level, the assessment should
include all meaningful factors that contribute to the success or failure of the
project. It should not be limited by established dimensions of a given process
maturity model. Here the degree of implementation and their effectiveness as
substantiated by project data are assessed.
15
Process maturity becomes relevant when an organization intends to embark on an
overall long-term improvement strategy. Software project assessments should be
independent assessments in order to be objective.
SCAMPI
17
PRESCRIPTIVE PROCESS MODELS:
The name 'prescriptive' is given because the model prescribes a set of activities,
actions, tasks, quality assurance and change the mechanism for every project.
18
• It is easier to test and debug during the smaller iteration.
• The working software generates quickly and early during the software
life cycle.
• The customers can respond to its functionalities after every increment.
Disadvantages of the incremental model
• The cost of the final product may cross the cost estimated initially.
• This model requires a very clear and complete planning.
• The planning of design is required before the whole system is broken into
small increments.
• The demands of customer for the additional functionalities after every
increment causes problem during the system architecture.
RAD MODEL:
• RAD is a Rapid Application Development model.
• Using the RAD model, software product is developed in a short period of
time.
• The initial activity starts with the communication between customer and
developer.
• Planning depends upon the initial requirements and then the requirements
are divided into groups.
• Planning is more important to work together on different modules.
The RAD model consist of following phases:
1. Business Modeling
• Business modeling consist of the flow of information between various
functions in the project.
• For example what type of information is produced by every function and
which are the functions to handle that information.
• A complete business analysis should be performed to get the essential
business information.
2. Data modeling
• The information in the business modeling phase is refined into the set of
objects and it is essential for the business.
• The attributes of each object are identified and define the relationship
between objects.
19
3. Process modeling
• The data objects defined in the data modeling phase are changed to fulfil
the information flow to implement the business model.
• The process description is created for adding, modifying, deleting or
retrieving a data object.
4. Application generation
• In the application generation phase, the actual system is built.
• To construct the software the automated tools are used.
5. Testing and turnover
• The prototypes are independently tested after each iteration so that the
overall testing time is reduced.
• The data flow and the interfaces between all the components are are fully
tested. Hence, most of the programming components are already tested.
20
integrated into the software. The component-based development model
incorporates many of the characteristics of the spiral model. It is evolutionary in
nature, demanding an iterative approach to the creation of software. However,
the model composes applications from prepackaged software components.
Modeling and construction activities begin with the identification of candidate
components. These components can be designed as either conventional software
modules or object-oriented classes or packages of classes. Regardless of the
technology that is used to create the components, the component-based
development model incorporates the following steps (implemented using an
evolutionary approach):
In some ways the unified process (UP) is an attempt to draw on the best features
and characteristics of conventional software process models, but characterize
them in a way that implements many of the best principles of agile software
development. The unified process recognizes the importance of customer
communication and streamlined methods for describing the customer’s view of
22
a system. It emphasizes the important role of software architecture and helps the
architect focus on the right goals, such as understandability, reliance to future
changes, and reuse. It suggests a process flow that is iterative and incremental,
providing the evolutionary feel that is essential in modern software
development.
UNIFIED PROCESS MODEL:
We'll go through the four different phases, one at a time, here:
1. Inception: The inception phase is similar to the requirements collection and analysis
stage of the waterfall model of software development. In this phase, you'd collect
requirements from the customer and analyze the project's feasibility, its cost, risks,
and profits.
2. Elaboration: In this phase, you'd be expanding upon the activities undertaken in the
inception phase. The major goals of this phase include creating fully functional
requirements (use-cases) and creating a detailed architecture for fulfillment of the
requirements. You'd also prepare a business case document for the customer.
3. Construction: In this phase, you'd be writing actual code and implementing the
features for each iteration. You'd be rolling out the first iteration of the software
depending on the key use-cases that make up the core functionalities of the
software system.
4. Transition: In this phase, you'd be rolling out the next iterations to the customer
and fixing bugs for previous releases. You would also deploy builds of the software
to the customer.
23
PRODUCT AND PROCESS:
S.No. PRODUCT PROCESS
1. Product is the final production While the process is a set of
of the project. sequence steps that have to be
followed to create a project.
2. A product focuses on the final Whereas the process is focused on
result. completing each step being
developed.
3. In the case of products, the In contrast, the process
firm guidelines are followed. consistently follows guidelines.
4. A product tends to be short- Whereas the process tends to be
term. long-term.
5. The main goal of the product While the purpose of the process is
is to complete the work to make the quality of the project
successfully. better.
6. Product is created based on A process serves as a model for
the needs and expectations of producing various goods in a
the customers. similar way.
7. A product layout is a style of When resources with similar
layout design in which the processes or functions are grouped
materials required to make the together, it is referred to as a
product are placed in a single process layout.
line depending on the order of
operations.
8. Product patents are thought to A process patent provides the
offer a greater level of inventor only limited protection.
protection than process
patents.
AGILE MODEL
Agile SDLC model is a combination of iterative and incremental process models
with focus on process adaptability and customer satisfaction by rapid delivery of
working software product. Agile Methods break the product into small
incremental builds. These builds are provided in iterations. Each iteration
typically lasts from about one to three weeks. Every iteration involves cross
functional teams working simultaneously on various areas like −
• Planning
• Requirements Analysis
• Design
• Coding
24
• Unit Testing and
• Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer and
important stakeholders.
What is Agile?
Agile model believes that every project needs to be handled differently and the
existing methods need to be tailored to best suit the project requirements. In
Agile, the tasks are divided to time boxes (small time frames) to deliver specific
features for a release.
Iterative approach is taken and working software build is delivered after each
iteration. Each build is incremental in terms of features; the final build holds all
the features required by the customer.
Here is a graphical illustration of the Agile Model −
The Agile thought process had started early in the software development and
started becoming popular with time due to its flexibility and adaptability.
The most popular Agile methods include Rational Unified Process (1994), Scrum
(1995), Crystal Clear, Extreme Programming (1996), Adaptive Software
Development, Feature Driven Development, and Dynamic Systems Development
25
Method (DSDM) (1995). These are now collectively referred to as Agile
Methodologies, after the Agile Manifesto was published in 2001.
Following are the Agile Manifesto principles −
• Individuals and interactions − In Agile development, self-
organization and motivation are important, as are interactions like
co-location and pair programming.
• Working software − Demo working software is considered the best
means of communication with the customers to understand their
requirements, instead of just depending on documentation.
• Customer collaboration − As the requirements cannot be gathered
completely in the beginning of the project due to various factors,
continuous customer interaction is very important to get proper
product requirements.
• Responding to change − Agile Development is focused on quick
responses to change and continuous development.
Agile methods are being widely accepted in the software world recently.
However, this method may not always be suitable for all products. Here are some
pros and cons of the Agile model.
26
Agile Testing Methods:
o Scrum
o Crystal
o Dynamic Software Development Method(DSDM)
o Feature Driven Development(FDD)
o Lean Software Development
o eXtreme Programming(XP)
27
MODULE II
REQUIREMENTS ENGINEERING
1. Feasibility Study
2. Requirement Elicitation and Analysis
3. Software Requirement Specification
4. Software Requirement Validation
5. Software Requirement Management
28
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:
29
3. Software Requirement Specification:
The models used at this stage include ER diagrams, data flow diagrams (DFDs),
function decomposition diagrams (FDDs), data dictionaries, etc.
o 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.
o 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.
o 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
30
organization and uses three main constructs i.e. data entities, relationships,
and their associated attributes.
New requirements emerge during the process as business needs a change, and a
better understanding of the system is developed.
The business and technical environment of the system changes during the
development.
31
Prerequisite of Software requirements
o Clear
o Correct
o Consistent
o Coherent
o Comprehensible
o Modifiable
o Verifiable
o Prioritized
o Unambiguous
o Traceable
o Credible source
32
UNDERSTANDING SOFTWARE REQUIREMENTS
https://www.youtube.com/watch?v=akI9ww7VyqY
REQUIREMENTS MODELING:
Requirements modelling is the process used in software development projects
where requirements and solutions constantly evolve through collaborative efforts
and teamwork. By using this method of cross-functional and self-organizing
teams, you can ensure that your team meets the exact needs of the stakeholders.
33
iii. Control Specification
• A short term for control specification is CSPEC.
• It represents the behaviour of the system.
• The state diagram in CSPEC is a sequential specification of the
behaviour.
• The state diagram includes states, transitions, events and activities.
• State diagram shows the transition from one state to another state if a
particular event has occurred.
2. Class-based Modeling
• Class based modeling represents the object. The system manipulates the
operations.
• The elements of the class based model consist of classes and object,
attributes, operations, class – responsibility - collaborator (CRS) models.
Classes
Classes are determined using underlining each noun or noun clause and enter it
into the simple table.
34
• Roles: The people like manager, engineer, salesperson are interacting
with the system.
• Organizational units: The division, group, team are suitable for an
application.
• Places: The manufacturing floor or loading dock from the context of the
problem and the overall function of the system.
• Structures: The sensors, computers are defined a class of objects or
related classes of objects.
Attributes
Attributes are the set of data objects that are defining a complete class within
the context of the problem.
For example, 'employee' is a class and it consists of name, Id, department,
designation and salary of the employee are the attributes.
Operations
The operations define the behaviour of an object.
CRS Modeling
• The CRS stands for Class-Responsibility-Collaborator.
• It provides a simple method for identifying and organizing the classes
that are applicable to the system or product requirement.
• Class is an object-oriented class name. It consists of information about
sub classes and super class.
• Responsibilities are the attributes and operations that are related to the
class.
• Collaborations are identified and determined when a class can achieve
each responsibility of it. If the class cannot identify itself, then it needs
to interact with another class.
35
REQUIREMENTS ANALYSIS:
Requirements analysis results in the specification of software’s operational
characteristics, indicates software’s interface with other system elements, and
establishes constraints that software must meet.Requirements analysis allows you
(regardless of whether you’re called a software engineer, an analyst, or a modeler)
to elaborate on basic requirements established during the inception, elicitation,
and negotiation tasks that are part of requirements engineering
The requirements modeling action results in
• Scenario-based models of requirements from the point of view of various
system “actors”
• Data models that depict the info domain for the problem
• Class-oriented models that represent object-oriented classes (attributes
and operations) and the manner in which classes collaborate to achieve
system requirements
• Flow-oriented models that represent the functional elements of the system
and how they transform data as it moves through the system
• Behavioral models that depict how the software behaves as a
consequence of external “events”.
The requirements model must achieve three primary objectives:
• to describe what the customer requires,
• to establish a basis for the creation of a software design,
• to define a set of requirements that can be validated once the software is
built.
• The analysis model bridges the gap between a system-level description
that describes overall system or business functionality as it is achieved by
applying software, hardware, data, human, and other system elements and
a software design that describes the software’s application architecture,
user interface, and component-level structure
36
Analysis Rules of Thumb
• The analysis model should focus on requirements that are visible within
the problem or business domain
• The model should delay the consideration of infrastructure and other non-
functional models until the design phase
• Definition
- Technical literature
- Existing applications
- Current/future requirements
• Outcome of domain analysis
- Class taxonomies
- Reuse standards
- Domain languages
38
A Set of ModelsFlow
• oriented modeling – provides an indication of how data objects are
transformed by a set of processing functions
• Scenario-based modeling – represents the system from the user's point of
view
• Class-based modeling – defines objects, attributes, and relationships
• Behavioral modeling – depicts the states of the classes and the impact of
events on these states
39
Creating a preliminary Use Case
• Contract for behaviorwhat
- to write about (inception and elicitation)
Requirements gathering meeting, QFD, scope, functional
requirements etc.
- how much to write about it
- how detailed to make your description
- how to organize the description?
40
ACTIVITY DIAGRAM:
• Supplements the use case by providing a graphical representation of the
flow of interaction within a specific scenario
• Uses flowchart-like symbols
- Rounded rectangle - represent a specific system function/action
- Arrow - represents the flow of control from one function/action to
another
- Diamond - represents a branching decision
- Solid bar – represents the fork and join of parallel activities
41
SWIMLANE DIAGRAM:
• The UML swimlane diagram is a useful variation of the activity diagram
and allows you to represent the flow of activities described by the use case
and at the same time indicate which actor (if there are multiple actors
involved in a specific use case) or analysis class (discussed later in this
chapter) has responsibility for the action described by an activity rectangle.
• Responsibilities are represented as parallel segments that divide the
diagram vertically, like the lanes in a swimming pool.
42
FLOW-ORIENTED MODELING
• Represents how data objects are transformed at they move through the
system
• data flow diagram (DFD) – complement UML diagrams and provide
additional insight into system requirements and flow
• Considered by many to be an “old school” approach, but continues to
provide a view of the system that is unique
• Input –process-output view of the system
Data objects flow into the system- transformed by processing elements-resultant
data objects flow out of the software
• represented in hierarchical fashion
43
LEVEL 0 DFD
44
LEVEL 1 DFD
LEVEL 2 DFD
45
CLASS DIAGRAM for Safe Home Security Function:
46
Data Flow and Control Flow
• Data Flow Diagram
- Depicts how input is transformed into output as data objects move
through a system
• Process Specification
- Describes data flow processing at the lowest level of refinement in
the data flow diagrams
• Control Flow Diagram
- Illustrates how events affect the behavior of a system through the
use of state diagrams
47
STATE DIAGRAM for Safe Home Security Diagram:
48
7) A potential class should satisfy nearly all (or all) of the selection
characteristics to be considered a legitimate problem domain class.
Class Diagram:
49
• Responsibilities are the attributes and operations that are relevant for the
class.
Classes can be
• Entity class/ model/ business classes (eg. Floor plan/sensors)
• Boundary classes are used to create the interface (e.g., interactive screen
or printed reports) that the user sees and interacts with as the software is
used.
• Controller classes manage a “unit of work” from start to finish. That is,
controller classes can be designed to manage
- the creation or update of entity objects,
- the instantiation of boundary objects as they obtain information
from entity objects,
- complex communication between sets of objects,
- validation of data communicated between objects or between the
user and the application.
Behavioral Modeling
The behavioral model indicates how software will respond to external events or
stimuli.To create the model, one should perform the following steps:
• Evaluate all use cases to fully understand the sequence of interaction
within the system
• Identify events that drive the interaction sequence and understand how
these events relate to specific objects
• Create a sequence for each use case.
• Build a state diagram for the system.
• Review the behavioral model to verify accuracy and consistency.
50
Building a State Diagram
• A state is represented by a rounded rectangle
• A transition (i.e., event) is represented by a labeled arrow leading from
one state to another
- Syntax: trigger-signature [guard]/activity
• The active state of an object indicates the current overall status of the
object as is goes through transformation or processing
- A state name represents one of the possible active states of an
object
• The passive state of an object is the current value of all of an object's
attributes
- A guard in a transition may contain the checking of the passive
state of an object
51
52