Uploaded by drkmkr

UNIT I & II Software Engineering

advertisement

"We already have a book that is full of standards and procedures for
building software. Won't that provide my people with everything they
need to know?"
 Not used, not up to date, not complete, not focused on quality, time, and
money

"If we get behind, we can add more programmers and catch up"
 Adding people to a late software project makes it later
 Training time, increased communication lines

"If I decide to outsource the software project to a third party, I can just
relax and let that firm build it"
 Software projects need to be controlled and managed
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath

"A general statement of objectives is sufficient to begin writing
programs – we can fill in the details later"
 Ambiguous statement of objectives spells disaster

"Project requirements continually change, but change can be easily
accommodated because software is flexible"
 Impact of change depends on where and when it occurs in the software
life cycle (requirements analysis, design, code, test)
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath

"Once we write the program and get it to work, our job is done"
 60% to 80% of all effort expended on software occurs after it is delivered

"Until I get the program running, I have no way of assessing its
quality
 Formal technical reviews of requirements analysis documents, design
documents, and source code (more effective than actual testing)

"The only deliverable work product for a successful project is the
working program"
 Software, documentation, test drivers, test results

"Software engineering will make us create voluminous and
unnecessary documentation and will invariably slow us down"
 Creates quality, not documents; quality reduces rework and provides
software on time and within the budget
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath

Tools
Methods
Processes
Quality Focus
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath

Process






Provides the glue that holds the layers together;
enables rational and timely development;
provides a framework for effective delivery of technology;
forms the basis for management;
provides the context for technical methods, work products, milestones,
quality measures, and change management
Methods
 Provide the technical "how to" for building software; rely on a set of basic
principles;
 encompass a broad array of tasks;
 include modeling activities

Tools
 Provide automated or semi-automated support for the process and methods
(i.e., CASE tools)
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath

Communication
 Involves communication among the customer and other stake holders;
encompasses requirements gathering

Planning
 Establishes a plan for software engineering work; addresses technical tasks,
resources, work products, and work schedule

Modeling (Analyze, Design)
 Encompasses the creation of models to better understand the requirements and
the design

Construction (Code, Test)
 Combines code generation and testing to uncover errors

Deployment
 Involves delivery of software to the customer for evaluation and feedback
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath


The Capability Maturity Model Integration,
or CMMI, is a process model that provides a
clear definition of what an organization
should do to promote behaviors that lead to
improved performance.
It was developed at Carnegie Mellon
University.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath


9/7/2019
Initial Level (Level 1)
 Characterized as ad hoc, and occasionally even chaotic
 Few processes are defined, and success depends on individual
effort
Managed (Level 2)
 Basic project management processes are established to track cost,
schedule, and functionality
 The necessary process discipline is in place to repeat earlier
successes on projects with similar applications
Software Engineering
Dr. K.M. Karthick Raghunath

Defined (Level 3)
 The software process for both management and engineering
activities is documented, standardized, and integrated into a
standard software process for the organization
 All projects use an approved, tailored version of the organization's
standard software process for developing and maintaining software

Quantitatively Managed (Level 4)
 Detailed measures of the software process and product quality are
collected
 Both the software process and products are quantitatively
understood and controlled
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath

9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
The Waterfall Model was the first Process Model to be introduced.
It is also referred to as a linear-sequential life cycle model.
In a waterfall model, each phase must be completed before the next phase can
begin and there is no overlapping in the phases.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
S.No. Phase
Activities Performed
1
Requirement
Analysis
1. Capture all the requirements.
RUD ( Requirements
2. Do brainstorming and
Understanding Document)
walkthrough to understand the
requirements.
3. Do the requirements feasibility
test to ensure that the requirements
are testable or not.
2
System Design
1. As per the requirements, create
the design
2. Capture the hardware / software
requirements.
3. Document the designs
9/7/2019
Software Engineering
Deliverables
HLD ( High Level Design
document)
LLD (Low level design
document)
Dr. K.M. Karthick Raghunath
3
Implementation 1. As per the design create the
programes / code
2. Integrate the codes for the next
phase.
3. Unit testing of the code
Programs
Unit test cases and results
4
System Testing 1. Integrate the unit tested code
and test it to make sure if it
works as expected.
2. Perform all the testing activities
(Functional and non functional)
to make sure that the system
meets the requirements.
3. In case of any anomaly, report it.
4. Track your progress on testing
through tools like traceability
metrics.
5. Report your testing activities.
Test cases
Test reports
Defect reports
Updated matrices.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
5 System
1. Make sure that the environment is up
Deployment 2. Make sure that the test exit criteria are
met.
3. Deploy the application in the respective
environment.
4. Perform a sanity check in the environment
after the application is deployed to ensure the
application does not break.
6 System
1. Make sure that the application is up and
maintenance running in the respective environment.
2. Incase user encounters and defect, make
sure to note and fix the issues faced.
3. Incase any issue is fixed; the updated code
is deployed in the environment.
4.The application is always enhanced to
incorporate more features, update the
environment with the latest features
9/7/2019
Software Engineering
User Manual
Environment definition /
specification
User Manual
List of production tickets
List of new features
implemented.
Dr. K.M. Karthick Raghunath
ADVANTANGES:
This model is simple and easy to understand and use.
It is easy to manage due to the rigidity of the model – each phase has specific
deliverables and a review process.
In this model phases are processed and completed one at a time. Phases do not
overlap.
Waterfall model works well for smaller projects where requirements are clearly
defined and very well understood.
DISADVANTAGES:
Once an application is in the testing stage, it is very difficult to go back and change
something that was not well-thought out in the concept stage.
No working software is produced until late during the life cycle.
High amounts of risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a moderate to high risk of
changing.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Incremental Model is a process of software development where
requirements are broken down into multiple standalone modules of
software development cycle.
Incremental development is done in steps from analysis design,
implementation, testing/verification, maintenance.
Each iteration passes through the requirements, design, coding
and testing phases. And each subsequent release of the system
adds function to the previous release until all designed
functionality has been implemented.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
The system is put into production when the first increment is delivered. The first
increment is often a core product where the basic requirements are addressed, and
supplementary features are added in the next increments. Once the core product is
analyzed by the client, there is plan development for the next increment.
System development is broken down into many mini development projects
Partial systems are successively built to produce a final total system
Highest priority requirement is tackled first
Once the requirement is developed, requirement for that increment are frozen
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Incremental Phases Activities performed in incremental
phases
9/7/2019
Requirement
Analysis
•Requirement and specification of the
software are collected
Design
•Some high-end function are designed
during this stage
Code
•Coding of software is done during this
stage
Test
•Once the system is deployed, it goes
through the testing phase
Software Engineering
Dr. K.M. Karthick Raghunath
Advantages
Disadvantages
•The software will be generated quickly •It requires a good planning designing
during the software life cycle
•It is flexible and less expensive to
change requirements and scope
•Problems might cause due to system
architecture as such not all
requirements collected up front for the
entire software lifecycle
•Thought the development stages
changes can be done
•Each iteration phase is rigid and does
not overlap each other
•This model is less costly compared to
others
•Rectifying a problem in one unit
requires correction in all the units and
consumes a lot of time
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
• Evolutionary models are iterative type models.
• They allow developing more complete versions of the
software.
Following are the evolutionary process models.
1. The prototyping model
2. The spiral model
3. Concurrent development model
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
• Prototype is defined as first or preliminary
form using which other forms are copied or
derived.
• Prototype model is a set of general
objectives for software.
• It does not identify the requirements like
detailed input, output.
• It is software working model of limited
functionality.
• In this model, working programs are quickly
produced.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
1. Communication
In this phase, developer and customer meet and discuss the overall objectives of the software.
2. Quick design
• Quick design is implemented when requirements are known.
• It includes only the important aspects like input and output format of the software.
• It focuses on those aspects which are visible to the user rather than the detailed plan.
• It helps to construct a prototype.
3. Modeling quick design
• This phase gives the clear idea about the development of software because the software is
now built.
• It allows the developer to better understand the exact requirements.
4. Construction of prototype
The prototype is evaluated by the customer itself.
5. Deployment, delivery, feedback
• If the user is not satisfied with current prototype then it refines according to the
requirements of the user.
• The process of refining the prototype is repeated until all the requirements of users are
met.
• When the users are satisfied with the developed prototype then the system is developed on
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
the basis of final prototype.
Advantages of Prototyping Model
• Prototype model need not know the detailed input, output, processes, adaptability
of operating system and full machine interaction.
• In the development process of this model users are actively involved.
• The development process is the best platform to understand the system by the
user.
• Errors are detected much earlier.
• Gives quick user feedback for better solutions.
• It identifies the missing functionality easily. It also identifies the confusing or
difficult functions.
Disadvantages of Prototyping Model:
• The client involvement is more and it is not always considered by the developer.
• It is a slow process because it takes more time for development.
• Many changes can disturb the rhythm of the development team.
• It is a thrown away prototype when the users are confused with it.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
• Spiral model is a risk driven process
model.
• It is used for generating the software
projects.
The framework activities of the spiral
model are as shown in the following
figure.
• In spiral model, an alternate solution is
provided if the risk is found in the risk
analysis, then alternate solutions are
suggested and implemented.
• It is a combination of prototype and
sequential model or waterfall model.
• In one iteration all activities are done,
for large projects the output is small.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
The phase of the spiral model has four quadrants, and each of them represents some
specific stage of software development. The functions of these four quadrants are listed
below:
• Planning objectives or identify alternative solutions: In this stage, requirements are
collected from customers and then the aims are recognized, elaborated as well as
analyzed at the beginning of developing the project. If the iterative round is more than
one, then an alternative solution is proposed in the same quadrant.
• Risk analysis and resolving: As the process goes to the second quadrant, all likely
solutions are sketched, and then the best solution among them gets select. Then the
different types of risks linked with the chosen solution are recognized and resolved
through the best possible approach. As the spiral goes to the end of this quadrant, a
project prototype is put up for the most excellent and likely solution.
• Develop the next level of product: As the development progress goes to the third
quadrant, the well-known and mostly required features are developed as well as
verified with the testing methodologies. As this stage proceeds to the end of this third
quadrant, new software or the next version of existing software is ready to deliver.
• Plan the next Phase: As the development process proceeds in the fourth quadrant,
the customers appraise the developed version of the project and reports if any further
changes
are required. At
last,Engineering
planning for theDr.subsequent
phase is initiated.
9/7/2019
Software
K.M. Karthick Raghunath
Advantages of Spiral Model
•It reduces high amount of risk.
•It is good for large and critical projects.
•It gives strong approval and documentation control.
•In spiral model, the software is produced early in the life cycle
process.
Disadvantages of Spiral Model
•It can be costly to develop a software model.
•It is not used for small projects.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Concurrency is achieved in two ways:
(1) system and component activities occur
simultaneously and can be modeled using the
state-oriented approach described previously;
(2) a typical client/server application is
implemented with many components, each of
which can be designed and realized
concurrently.
• Concurrent modeling defines a series of
events that will trigger transitions from
state to state for each of the software
engineering activities, actions, or tasks.
• The concurrent development model is
called as concurrent model.
• The communication activity has completed
in the first iteration and exits in the
awaiting changes state.
9/7/2019
Software Engineering
•
The modeling activity completed its
initial communication and then go to the
underdevelopment state.
• If the customer specifies the change in
the requirement, then the modeling
activity moves from the under
development state into the awaiting
Dr. K.M. Karthick Raghunath
change state.
Advantages of the concurrent development model
• This model is applicable to all types of software development
processes.
• It is easy for understanding and use.
• It gives immediate feedback from testing.
• It provides an accurate picture of the current state of a project.
Disadvantages of the concurrent development model
• It needs better communication between the team members.
This may not be achieved all the time.
• It requires to remember the status of the different activities.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Special process models take many features from one or
more conventional models. However these special models
tend to be applied when a narrowly defined software
engineering approach is chosen.
Types in Specialized process models:
1. Component based development
2. The formal methods model
3. Aspect oriented software development
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
•
•
The component based development model incorporates many of the characteristics
of the spiral model. These components provide targeted functionality with welldefined interfaces that enable the component to be integrated into the Software.
It is evolutionary in nature, demanding an iterative approach to the creation of
software. However, the model focuses on prepackaged software components. It
promotes software reusability.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
1. Available component based products are researched and
evaluated for the application domain.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate the
components.
4. Components are integrated into the architecture.
5. Comprehensive testing is conducted to ensure proper
functionality.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
• Based on studies of reusability
• Component-based development leads to a:
• Around 70% reduction in development cycle time;
• Around 84% reduction in project cost;
• Productivity increases
• Faster development and testing
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
• Enables a software engineer to specify, develop, and verify a
computer-based system by applying a rigorous, mathematical
notation.
• Ambiguity,
incompleteness, and inconsistency can be
discovered and corrected more easily through mathematical
analysis.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
The formal method comprises two approaches
• Property-based Specification
-- The operations performed on the system
-- In addition, it describes the relationship that exists
among these operations
 Signatures - which determine the syntax of operations
 An equation - which defines the semantics of the
operations through a set of equations known as axioms
• Model-based Specification
-- Utilizes the tools of set theory, function theory, and logic
to develop an abstract model of the system.
-- It specifies the operations performed on the abstract
model.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Advantages:
• Offers the promise of defect-free software
• Used often when building safety-critical systems
Disadvantages:
• The development of formal models is currently quite time-consuming and
expensive.
• Because few software developers have the necessary background to
apply formal methods, extensive training is required.
• It is difficult to use the models as a communication mechanism for
technically unsophisticated customers.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
•
•
•
Aspect-oriented software development (AOSD) is a new approach to software
development that addresses limitations inherent in other approaches, including
object-oriented programming.
AOSD is also known as aspect-oriented programming (AOP).
Aspect-oriented software development (AOSD) is a software design solution that
helps address the modularity issues that are not properly resolved by other software
approaches, like procedural, structured and object-oriented programming (OOP).
Advantages:
•
This results in better support for modularization hence reducing development,
maintenance and evolution costs.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
The Unified Process (UP), or Unified Software Development Process, is a iterative
and incremental software development framework from which a customized
process can be defined. The framework contains many components and has been
modified a number of times to create several variations.
The key characteristics of the Unified Process are:
• It is an iterative and incremental development framework
• It is architecture-centric with major work being done to define and validate an
architectural design
• It is risk-focused and emphasizes that highest-risk factors be addressed in the
earliest deliverables possible
• It is use-case and UML model driven with nearly all requirements being
documented in one of those forms
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
The Unified Process divides the project into four phases:
• Inception
• Elaboration (milestone)
• Construction (release)
• Transition (final production release)
Inception phase
Inception is the smallest phase in the project, and ideally it should be quite short.
It is used to prepare basis for the project, including
• preparation of business case,
• establishing project scope and setting boundaries,
• outlining key requirements, and possible architecture solution together with
 design tradeoffs,
 identifying risks, and
 development of initial project plan
—schedule with main milestones and cost estimates.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
During this phase the project team is expected to capture a majority of
system’s requirements (e.g., in the form of use cases),
 To perform identified risk analysis and make a plan of risk management to
reduce or eliminate their impact on final schedule and product.
 To establish design and architecture (e.g., using basic class
diagrams, package diagrams, and deployment diagrams), to create a plan
(schedule, cost estimates, and achievable milestones) for the next
(construction) phase.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
During this phase, the design of the system is finalized and refined and the
system is built using the basis created during elaboration phase.
 The construction phase is divided into multiple iterations, for each
iteration to result in an executable release of the system.
 The final iteration of construction phase releases fully completed system
which is to be deployed during transition phase
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
The final project phase which delivers the new system to its end-users.
Transition phase includes also data migration from legacy systems and user
trainings.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Each phase and its iteration consists of a set of predefined activities. These activities
are referred as disciplines—a discipline is a set of activities and related artifacts in
one subject area (e.g., the activities within requirements analysis). They are
 Business modeling—domain object modeling and dynamic modeling of the
business processes,
 Requirements—requirements analysis of system under consideration. Includes
activities like writing use cases and identifying nonfunctional requirements,
 Analysis and design—covers aspects of design, including the overall
architecture,
 Implementation—programming and building the system (except the
deployment),
 Test—involves testing activities such as test planning, development of test
scenarios, alpha and beta testing, regression testing, acceptance testing, and
 Deployment—the deployment activities of developed system.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Software Requirements
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
What is the Requirement?
A requirement is a description of the service that
software must offer. A requirement can range from the
high-level abstract statement of the sender's necessity
to detailed mathematical functional requirement
specifications.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
• In software engineering, a functional requirement defines a
system or its component. It describes the system behavior
under specific conditions.
• A function is nothing but inputs, its behavior, and outputs. It
can be a calculation, data manipulation, business process,
user interaction, or any other specific functionality which
defines what function a system is likely to perform.
• Functional software requirements help you to capture the
intended behavior of the system. This behavior may be
expressed as functions, services or tasks or which system is
required to perform.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Here, are the pros/advantages of creating a typical functional requirement
document• Helps you to check whether the application is providing all the
functionalities that were mentioned in the functional requirement of that
application
• A functional requirement document helps you to define the functionality
of a system or one of its subsystems.
• Functional requirements along with requirement analysis help identify
missing requirements. They help clearly define the expected system
service and behavior.
• Errors caught in the Functional requirement gathering stage are the
cheapest to fix.
• Support user goals, tasks, or activities for easy project management
• Functional requirement can be expressed in Use Case form or user story
as they exhibit externally visible functional behavior.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
•
Nonfunctional requirements describe how a system must
behave and establish constraints of its functionality. This type
of requirements is also known as the system’s quality attributes.
They represent a set of standards used to judge the specific
operation of a system.
Example, how fast does the website load?
•
Non-functional Requirements allows you to impose constraints
or restrictions on the design of the system across the various
agile backlogs.
Example, the site should load in 3 seconds when the
number of simultaneous users are > 10000.
Description of non-functional requirements is just as
critical
as a functionalDr.requirement.
9/7/2019
Software Engineering
K.M. Karthick Raghunath
Benefits/pros of Non-functional testing are:
• The nonfunctional requirements ensure the software system follow legal
and compliance rules.
• They ensure the reliability, availability, and performance of the software
system
• They ensure good user experience and ease of operating the software.
• They help in formulating security policy of the software system.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Parameters
Functional Requirement
Non-Functional
Requirement
What it is
Verb
Attributes
Requirement
It is mandatory
Capturing type
It is captured in use case.
End-result
Capturing
Product feature
Easy to capture
Helps you verify the
functionality of the
software.
It is non-mandatory
It is captured as a quality
attribute.
Product properties
Hard to capture
Helps you to verify the
performance of the
software.
Objective
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Parameters
Functional Requirement
Non-Functional Requirement
Area of focus
Focus on user requirement
Concentrates on the user's
expectation.
Describe what the product
does
Functional Testing like
Type of Testing System, Integration, End to
End, API testing, etc.
Test Execution is done before
Test Execution
non-functional testing.
Documentation
Product Info
9/7/2019
Product Features
Software Engineering
Describes how the product works
Non-Functional Testing like
Performance, Stress, Usability,
Security testing, etc.
After the functional testing
Product Properties
Dr. K.M. Karthick Raghunath
The user requirements for a system should describe the functional
and non-functional requirements so that they are understandable
by users who don’t have technical knowledge.
User requirements, often referred to as user needs, describe
what the user does with the system, such as what activities
that users must be able to perform. User requirements are
generally documented in a User Requirements Document (URD)
using narrative text.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
The User Requirements Specification describes the business needs for what users
require from the system.
The URS should include:
Introduction – including the scope of the system, key objectives for the project,
and the applicable regulatory concerns
Program Requirements – the functions and workflow that the system must be
able to perform
Data Requirements – the type of information that a system must be able to
process
Life Cycle Requirements – including how the system will be maintain and users
trained
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath


System requirements talk about the solution domain, the world of the software
logic. They describe what the software must do. They are the responsibility of the
technical system alone.
System requirements are all of the requirements at the system level that describe
the functions which the system as a whole should fulfill to satisfy the stakeholder
needs.
System requirements play major roles in systems engineering, as they:
•
•
•
•
Form the basis of system architecture and design activities.
Form the basis of system integration and verification activities.
Act as reference for validation and stakeholder acceptance.
Provide a means of communication between the various technical staff that interact
throughout the project.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Functional and supplemental requirements for software were
documented in the software requirements specification (SRS).
The SRS is the principal deliverable that analysts use to
communicate detailed requirements information to developers,
testers, and other project stakeholders.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Hardware Interfaces
Specify the logical characteristics of each interface between the software product and the
hardware components of the system. This includes configuration characteristics. It also
covers such matters as what devices are to be supported, how they are to be supported
and protocols.
Software Interfaces
Specify the use of other required software products and interfaces with other application
systems.
For each interface, provide:
• Discussion of the purpose of the interfacing software as related to this software
product
• Definition of the interface in terms of message content and format
Communications Interfaces
Specify the various interfaces to communications such as local network protocols, etc.
These are protocols you will need to directly interact with.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
•
Requirement engineering is a process
that involves all the activities required to
create and maintain a system requirement
document.
• Requirement engineering provides the
appropriate mechanism for understanding
what the customer wants, analyzing need,
assessing feasibility, negotiating a
reasonable solution, specifying the
solution, validating the specification and
managing the requirements as they are
transformed into an operational system.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
The software engineering process involves the following
activities:
 Feasibility study.
 Requirements elicitation.
 Requirement analysis.
 Requirements validation,
 Requirements management
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Report Format
The feasibility study takes into consideration.
An outline description of the system.
How the system will be used within an organization.
A feasibility study is a short descriptive study. The aim of the feasibility study
is to answer number of questions:



Does the overall objectives of the organization are covered contributed by
the system.
Can the implementation of the system be done using current technology and
within the given cost and schedule constraints.
Can the system be integrated with the other system which already exists?
Carrying out feasibility involves the following phases:
Information assessment
Information collection
Report writing.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
1.
2.
3.
4.
9/7/2019
How would the organization cope if this system was
not implemented?
What direct contribution will the system make to the
business objectives?
Does the system require technology which has not
previously been used in the organization?
What must be supported by the system and what need
not be supported?
Software Engineering
Dr. K.M. Karthick Raghunath
From Information
Source
Some instances of possible questions that may be put are as
follows:
Information Collection




9/7/2019
managers
software engineers
technology experts
end-users
Software Engineering
Report writing




scope
budget
schedule
high-level requirements
Dr. K.M. Karthick Raghunath
Requirement Elicitation Process
Requirement Elicitation Techniques
Interviews






Structured (closed) interviews
Non-structured (open) interviews
Oral interviews
Written interviews
One-to-one interviews
Group interviews
9/7/2019
Software Engineering
Surveys
Questionnaires
Task analysis
Domain Analysis
Brainstorming
Prototyping
Observation
Dr. K.M. Karthick Raghunath
After requirement specifications are developed, the requirements
mentioned in this document are validated. User might ask for illegal,
impractical solution or experts may interpret the requirements incorrectly. This
results in huge increase in cost if not nipped in the bud. Requirements can be
checked on following categories –





Validity checks
Consistency checks
Completeness checks
Realism checks
Verifiability
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
b
a
Project Team Members
Communication
& Changes
Requirements
Management




&

9/7/2019
Collecting,
Analyzing (a),
Refining (b), and
Prioritizing product requirements (c)
then planning for their delivery
Software Engineering
Dr. K.M. Karthick Raghunath
c
Stakeholders
System modeling is the process of developing abstract models of a system, with
each model presenting a different view or perspective of that system.
 An external perspective (System’s Context/Environment)
 An interaction perspective (between a system and its environment,
or between the components of a system)
 A structural perspective
 A behavioral perspective (System/Data Architecture)
System modeling helps the analyst to understand the functionality of the system
and models are used to communicate with customers.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath

Context models are used to illustrate the operational context of a system they show what lies outside the system boundaries.

Social and organizational concerns may affect the decision on where to
position system boundaries.

Architectural models show the system and its relationship with other
systems.

System boundaries are established to define what is inside and what is
outside the system.

Defining a system boundary is a political judgment – There may be
pressures to develop system boundaries that increase / decrease the
influence or workload of different parts of an organization.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
• User interaction
• System-to-System interaction
• Component interaction
• Eg: Use case diagrams and sequence diagrams
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
 Structural models of software display
the organization of a system in terms
of the components that make up that
system and their relationships.
 Structural models may be static
models, which show the structure of
the system design, or dynamic
models, which show the organization
of the system when it is executing.
 Structural models of a system are
created during the discussion and
designing part of the system
architecture.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Data modeling is the process of creating a data model for the data to be stored
in a Database. This data model is a conceptual representation of
• Data objects
• The associations between different data objects
• The rules.
Types of Data Models
• Conceptual
• Logical
• Physical
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath

This Data Model defines WHAT the system contains. This model is typically
created by Business stakeholders and Data Architects. The purpose is to organize,
scope and define business concepts and rules.

The main aim of this model is to establish the entities, their attributes, and their
relationships. In this Data modeling level, there is hardly any detail available of the
actual Database structure.
The 3 basic tenants of Data Model are
Entity: A real-world thing
Attribute: Characteristics or properties of an entity
Relationship: Dependency or association between two entities
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath

Defines HOW the system should be implemented regardless of the DBMS. This
model is typically created by Data Architects and Business Analysts. The purpose is
to developed technical map of rules and data structures.

Logical data models add further information to the conceptual model elements. It
defines the structure of the data elements and set the relationships between them.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
•
This Data Model describes HOW the system will be implemented using a specific
DBMS system. This model is typically created by DBA and developers. The purpose is
actual implementation of the database.
•
A Physical Data Model describes the database specific implementation of the data
model. It offers an abstraction of the database and helps generate schema.
9/7/2019
Software Engineering
Dr. K.M. Karthick Raghunath
Download
Random flashcards
State Flags

50 Cards Education

Countries of Europe

44 Cards Education

Art History

20 Cards StudyJedi

Sign language alphabet

26 Cards StudyJedi

Create flashcards