SE Lecture Notes
SE Lecture Notes
SE Lecture Notes
Characteristics of Software:
1.Software is developed or engineered; it is not manufactured in the classical sense.
Software is developed. But hardware is manufactured.
In both hardware and software, high quality is achieved through good design.
Both activities are dependent on people, but the relationship between people applied and
work accomplished is entirely different.
Changes can be made easily in software compared to hardware.
Software Products:
They are two types
1. Generic products
2. Customized products
Ex: Whatsapp, Windows movie maker. Ex: Library management system for
specific college
2.Application software:
Stand-alone programs that solve a specific business need.
E.g., Zoom, Google Meet, MS word.
2
3.Scientific software:
Software used for scientific purpose
E.g, Computer-aided design, MATLAB, Autocad,etc..
4.Embedded software:
Resides within a product or system.
E.g., Traffic control system found in traffic light, Imaging processing system in medical imaging
equipment etc.
5.Product-line software:
Designed to provide a specific capability for use by many different customers.
E.g., word processing, spreadsheets, computer graphics, multimedia, entertainment
6.Web applications:
Called ―WebApps. Web applications not only provide standalone features but are also
integrated with corporate databases and business applications.
E.g, gmail, yahoo, shopping carts, google apps etc..
3
A Quality Focus:
Any engineering approach (including software engineering) must rest on an organizational
commitment that focus on quality of the product.
Process:
The foundation for software engineering is the process layer.(Technology layer).
A process is a collection of activities, actions or task that performed when some work product is
to be created.
Methods:
Methods includes a broad set of tasks such as communication, requirements analysis, design
modeling, program construction, testing, and support.
SOFTWARE PROCESS
Process:
A process is a collection of activities, actions or task that are performed when some work
product is to be created.
Software process is characterized by
i) Process Framework Activities
ii) Task sets
iii) Umbrella Activities
4
Generic Process Framework Activities: ( Software Development Lifecycle phases) :
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
5
achievethose requirements.
In this phase, the system and software design is prepared from the requirement
specificationswhich were studied in the first phase.
•System Design helps in specifying hardware and system requirements and also helps in
defining overall system architecture. It is actually a blueprint for implementation.
•The system design specifications serve as input for the next phase of the model.
Coding: It is an important phase where design is translated into machine readable form. Simply,
Programs are created in this phase. This is the longest phase of the software development life
cycle.
Testing: After the code is developed it is tested against the requirements to make sure that the
product is actually solving the needs addressed and gathered during the requirements phase.
During this phase unit testing, integration testing, system testing, acceptance testing are done.
Testing ensures the execution of all the paths and functional behaviors.
The purpose of testing is to uncover errors, fix the bugs and meet customer requirements.
(ii) Taskset:
It defines the actual work done in order to achieve the software objectives.
6
(iii) Umbrella Activities:
• Software engineering process framework activities are complemented by a number of
umbrella activities.
• In general, umbrella activities are applied throughout a software project and help a
software team to manage and control progress, quality, change, and risk.
7
Typical umbrella activities include:
Software project tracking and control—allows the software team to assess progress
against the project plan and take any necessary action to maintain the schedule.
Risk management—assesses risks that may affect the outcome of the project or the
quality of the product.
Software quality assurance—defines and conducts the activities required to ensure
software quality
Technical reviews—assesses software engineering work products in an effort to uncover
and remove errors before they are propagated to the next activity.
Measurement—defines and collects process, project, and product measures that assist
the team in delivering software that meets stakeholders‘ needs; can be used in
conjunction with all other framework and umbrella activities.
Software configuration management—manages the effects of change throughout the
software process.
Reusability management—defines criteria for work product reuse (including software
components) and establishes mechanisms to achieve reusable components.
Work product preparation and production—encompasses the activities required to
create work products such as models, documents, logs, forms, and lists.
8
The Waterfall Model
The Waterfall Model is also referred to as a linear-sequential model or classic life cycle
model.
It is a sequential approach to software development that begins with customer
specification of requirements and progresses through planning, modeling,
construction, and deployment, culminating in ongoing support of the completed
software.
9
• Waterfall model works well for smaller projects where requirements are very well
understood.
• Documentation helps for future reference.
V-model
• V- Model means Verification and Validation model.
• A variation in the representation of the waterfall model is called the V-model.
• Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of
processes.
• Each phase must be completed before the next phase begins.
• Testing of the product is planned in parallel with a corresponding phase of development.
10
Phases of V-Model:
Requirements :
• Requirements like BRS and SRS begin the life cycle model just like the waterfall model.
• But, in this model before development is started, a system test plan is created.
11
• Software is developed during the implementation phase, so no early prototypes of the
software are produced.
• If any changes happen in midway, then the test documents along with requirement
documents has to be updated.
Diagram of V-model:
12
When to use the V-model:
• The V-shaped model should be used for small to medium sized projects where
requirements are clearly defined and fixed.
• The V-Shaped model should be chosen when ample technical resources are available
with needed technical expertise.
• High confidence of customer is required for choosing the V-Shaped model approach.
Since, no prototypes are produced, there is a very high risk involved in meeting customer
expectations.
Incremental Model:
• Incremental model combines elements of waterfall model applied in an iterative fashion.
• In incremental model the whole requirement is divided into various builds.
Incremental model delivers series of releases to the customer. These releases are called
increments. More and more functionality is associated with each increment.
First increment is called core product. Basic requirements are included in this
increment. Then, new requirements are added in further increments. The process
continues till the complete system is achieved.
For example:
13
Multiple development cycles take place here, making the life cycle a multi-
waterfall cycle.Cycles are divided up into smaller, more easily managed modules.
Each module passes through the requirements, design, implementation and testing phases.
Example: Word processing package
14
RAD Model/(RAPID APPLICATION DEVELOPMENT MODEL)
RAD model is a type of incremental process model in which there is extremely short
development cycle.
It is a type of incremental model.
In RAD model the components or functions are developed in parallel as if they were
mini projects.
The developments are time boxed, delivered and then assembled into a working
prototype.
This can quickly give the customer something to see and use and to provide
feedback regarding thedelivery and their requirements.
16
Features
• The basic idea here is that instead of freezing the requirements before a design or coding
can proceed, a throwaway prototype is built to understand the requirements.
• This prototype is developed based on the currently known requirements.
• By using this prototype, the client can get an actual feel of the system, since the
interactions with prototype can enable the client to better understand the requirements of the
desired system.
• Prototyping is an attractive idea for complicated and large systems for which there is
no manual process or existing system to help determining the requirements.
• The prototype is usually not complete systems and many of the details are not built in the
prototype. The goal is to provide a system with overall functionality.
17
interaction with end users, are bestsuited for Prototype model.
It might take a while for a system to be built that allows ease of use and
needs minimal training forthe end user.
Prototyping ensures that the end users constantly work with the system and
provide a feedback which is incorporated in the prototype to result in a useable
system.
They are excellent for designing good human computer interface systems.
18
• Planning Phase:
Requirements are gathered during the planning phase.
Requirements like ‛BRS‘ that is ‛Business Requirement Specifications’ and SRS‘
that is System Requirement specifications’ is created.
Risk Analysis:
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 suggestedand implemented.
Engineering Phase:
In this phase software is developed, along with testing at the end of the phase.
Hence in this phase the development and testing is done.
Evaluation phase:
This phase allows the customer to evaluate the output of the project to date
before theproject continues to the next spiral.
19
Advantages of Spiral model:
High amount of risk analysis hence, Hence Risk vcan be
identified and rectified before theyget problematic.
Requirement changes can be made easily at every stage.
Good for large and mission-critical projects.
Strong approval and documentation control.
Additional Functionality can be added at a later date.
Software is produced early in the software life cycle.
20
5. Done
6. Awaiting changes
7. Under revision
Working Principle:
For example, early in a project the communication activity (not shown in the
figure) has completedits first iteration and exists in the awaiting changes state.
The modeling activity (which existed in the inactive state while initial
communication was completed, now makes a transition into the under development
state.
If, however, the customer indicates that changes in requirements must be made,
the modeling activity moves from the under development state into the awaiting
changes state.
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.
Advantages:
It is applicable for all type of software projects
It gives accurate state of current project.
It requires less time compare to other models.
Disadvantages:
Need to keep track of all states simultaneously
Costly model
Need more man power
Because all of the stages are working simultaneously, any changes to
user requirements halts the work on any component dependent on the
component being changed.
This model requires excellent and current communication between all
teams, which is sometimesnot easily feasible.
21
Fig: Concurrent development model
When to use:
When time duration of the project is less
When we want to utilize all resources
22
SPECIALIZED PROCESS MODELS
These specialized process models will take many characteristics of one or more perspective
process model.
Types:
1. Component Based Development
2. The Formal Methods Model
3. Aspect-Oriented Software Development
Advantages:
Component reusability
23
SDLC time will be reduced.
Reduction in projects cost if component is already available.
In this method all specifications and designs are converted into mathematical notations.
All mathematical notations are validated against mathematical proofs.
So this method assures us to produce error free software.
Ambiguity, incompleteness, and inconsistency can be discovered and corrected more easily
throughthe application of mathematical analysis.
When formal methods are used during design, they serve as a basis for program verification
and therefore enable.
A variation of this approach, called clean-room Software engineering is currently applied
bysome software development organizations.
Advantages:
100% error free software.
Ambiguity and complex functionality are removed
Fault tolerance.
Disadvantages:
It is difficult to communicate with technically unsophisticated customers.
It is difficult to convert all specifications into mathematical notations.
24
Aspect-Oriented Software Development (AOSD)
AOSD is a software design solution that helps to address the modularity issues that
are not properly resolved by other software approaches like procedural, structured
and object oriented programming.
Aspect-oriented software development (AOSD), often referred to as aspect-oriented
programming (AOP).
Concerns
Concerns are not program issues but reflect the system requirements and the priorities of the
system stakeholders.
• Examples of concerns are performance, security, specific functionality, etc.
Stakeholder concerns
Functional concerns which are related to specific functionality to be included in a system.
● Quality of service concerns which are related to the non-functional behaviour of a system.
● Policy concerns which are related to the overall policies that govern the use of the system.
25
● System concerns which are related to attributes of the system as a whole such as its
maintainability or its configurability.
● Organizational concerns which are related to organizational goals and priorities such as
producing a system within budget, making use of existing software assets or maintaining the
reputation of an organization.
Cross-cutting concerns
Cross-cutting concerns are concerns whose implementation cuts across a number of program
components.
● This results in problems when changes to the concern have to be made the code to be changed
is not localized but is in different places across the system.
Types of extension
Secondary functional extensions ->Add extra functional capabilities to the core system
26
Policy extensions-> Add functional capabilities to support an organizational policy such as
security
QoS extensions -> Add functional capabilities to help attain quality of service requirements
Infrastructure extensions-> Add functional capabilities to support the implementation of the
system on some platform
An AOSD process
27
Level One:Initial
Level One deals with performed processes.
Performed processes are unpredictable, poorly controllable.
Advantage:
Cost saving in terms of lesser effort due to less defects and less rework
On-Time Deliveries
Increased Customer Satisfaction
Overall increased Return on Investment
Decreased Costs
Improved Productivity
Disadvantage:
It may not be suitable for every organization.
It may add overhead in terms of documentation.
May require a considerable amount of time and effort for implementation.
INTRODUCTION TO AGILITY
Agile Process:
Agile software development refers to a group of software development methodologies based
on iterative development, where requirements and solutions evolve through collaboration
between self-organizing cross-functional teams.
The ultimate value in Agile development is that it enables teams to deliver value faster, with
greater quality and predictability, and greater aptitude to respond to change.
The Agile methodology is a way to manage a project by breaking it up into several phases.
It involves constant collaboration with stakeholders and continuous improvement at every
stage.
Once the work begins, teams cycle through a process of planning, executing, and evaluating.
29
Continuous collaboration is vital, both with team members and project stakeholders.
EXTREME PROGRAMMING
Definition:
Extreme Programming (XP) is an agile software development framework that aims to
produce higher quality software, and higher quality of life for the development team.
Extreme Programming emphasizes teamwork. Managers, customers, and developers are
all equal partners in a collaborative team.
Advantages:
Extreme Programming solves the following problems often faced in the software development
projects.
• Slipped schedules − and achievable development cycles ensure timely deliveries.
• Cancelled projects − Focus on continuous customer involvement ensures transparency
with the customer and immediate resolution of any issues.
• Costs incurred in changes − Extensive and ongoing testing makes sure the changes do
not break the existing functionality. A running working system always ensures sufficient time
for accommodating changes such that the current operations are not affected.
• Misunderstanding the business and/or domain − Making the customer a part of the
team ensures constant communication and clarifications.
• Business changes − Changes are considered to be inevitable and are accommodated at
any point of time.
• Staff turnover − Intensive team collaboration ensures enthusiasm and good will.
30
Extreme Programming Values
Extreme Programming (XP) is based on the five values −
Communication
Simplicity
Feedback
Courage
Respect
Communication
Communication plays a major role in the success of a project. Problems with projects
often arise due to lack of communication. Many circumstances may lead to the
breakdown in communication.
Some of the common problemsare −
A developer may not tell someone else about a critical change in the design.
A developer may not ask the customer the right questions, and so a critical domain
decision is blown.
A manager may not ask a developer the right question, and project progress is
misreported.
A developer may ignore something important conveyed by the customer.
Extreme Programming emphasizes continuous and constant communication among the
team members, managers and the customer.
Simplicity
Extreme Programming believes in ‘it is better to do a simple thing today and pay a
little more tomorrow to change it’ than ‘to do a more complicated thing today that may
never be used anyway’.
Do what is needed and asked for, but no more.
''Do the simplest thing that could possibly work'' The DTSTTCPW principle.
Implement a new capability in the simplest possible way. Also known as the KISS principle
‘Keep It Simple, Stupid!’
31
Take small simple steps to your goal and mitigate failures as they happen.
Never implement a feature you do not need now i.e. You Aren‘t Going to Need It‘
(YAGNI) principle.
Feedback
Every iteration commitment is taken seriously by delivering working software. The
software is delivered early to the customer and a feedback is taken so that necessary
changes can be made if needed.
In Extreme Programming, feedback is ensured at all levels at different time scales −
Customers tell the developers what features they are interested in so that the
developers can focus only onthose features.
Unit tests tell the developers the status of the system.
The system and the code provide feedback on the state of development to the
managers, stakeholders andthe customers.
Frequent releases enable the customer to perform acceptance tests and provide
feedback and developers towork based on that feedback.
When the customers write new features/user stories, the developers estimate the
time required to deliver the changes, to set the expectations with the customer and
managers.
Courage
Extreme Programming provides courage to the developers in the following way −
To focus on only what is required
To communicate and accept feedback
To tell the truth about progress and estimates
To refactor the code
To adapt to changes whenever they happen
To throw the code away (prototypes)
32
Respect
Respect is a deep value, one that lies below the surface of the other four values.
In Extreme Programming,
Everyone respects each other as a valued team member.
Everyone contributes value such as enthusiasm.
Developers respect the expertise of the customers and vice versa.
Management respects the right of the developers to accept the responsibility and receive
authority over their own work.
Rapid Feedback
Rapid feedback is to get the feedback, understand it, and put the learning back into the
system as quickly as possible.
The developers design, implement and test the system, and use that feedback in
seconds or minutes insteadof days, weeks, or months.
The customers review the system to check how best it can contribute, and give
feedback in days or weeksinstead of months or years.
Assume Simplicity
Assume Simplicity means do a good job of solving today's job today and trust your
ability to add complexity in the future where you need it.
‘In Extreme Programming, you are told to do a good job (tests, refactoring, and
33
communication) focusing on what is important today.
With good unit tests, you can easily refactor your code to do additional tests.
Follow YAGNI.
Follow the DRY(Don‘t Repeat Yourself) principle.
For example,
Do not have multiple copies of identical (or very similar) code.
Do not have redundant copies of information.
No wastage of time and resources on what may not be necessary.
Incremental Change
In any situation, big changes made all at once just do not work. Any problem is
solved with a series of the smallestchange that makes a difference.
In Extreme Programming, Incremental Change is applied in many ways.
The design changes a little at a time.
The plan changes a little at a time.
The team changes a little at a time.
Embracing Change
The best strategy is the one that preserves the most options while actually solving your most
pressing problem.
Quality Work
Everyone likes doing a good job. They try to produce the quality that they are proud of. The
team
Works well
Enjoys the work
Feels good in producing a product of value
34
They are −
Coding
Coding is the phase during which the actual code is created by implementing specific XP
practices such as coding standards, pair programming, continuous integration, and collective
code ownership
Testing
Testing is the core of extreme programming. It is the regular activity that involves both unit
tests and acceptance tests
Listening
Listening is all about constant communication and feedback.
Designing
Designing is actually a part of the planning process. A good design brings logic and
structure to the system and allows avoiding unnecessary complexities and redundancies.
35
Releases
This is also referred to as the Commitment phase.
Release planning sessions provide inputs for iteration cycles.
In this activity −
The whole team gathers so that −
Progress is reviewed.
New requirements can be added and/or existing requirements can be changed or
removed.
Customer presents stories.
Stories are discussed.
Iterations
This is also referred to as the Steering phase.
Iteration planning sessions provide inputs for task cycles.
The iteration Plan is the primary deliverable of this activity.
Tasks
Task development provides inputs for development episodes.
The developers Sign- up for the tasks and begin development episodes to
implement the stories. They ensure the tasks for the iteration are complete. The
developers also ensure that the stories for the iteration are complete with
acceptance tests.
Development
Development produces the product.
Feedback
Pairs constantly communicate within themselves and outward to the team as
well. On-line customer is also involved in the communication on a continuous
basis.
36
PANIMALAR INSTITUTE OF TECHNOLOGY
DEPARTMENT OF INFORMATION TECHNOLOGY
CS8494- SOFTWARE ENGINEERING
LECTURE NOTES
SYLLABUS
UNIT II
REQUIREMENTS ANALYSIS AND SPECIFICATION
Software Requirements: Functional and Non-Functional, User requirements, System requirements, Software
Requirements Document – Requirement Engineering Process: Feasibility Studies, Requirements elicitation
and analysis, requirements validation, requirements management-Classical analysis: Structured system
Analysis, Petri Nets- Data Dictionary.
Software Requirements: It is a field within software engineering that deals with establishing
the needs of stakeholders that are to be solved by software.
The requirements for a system are the descriptions of what the system should do— the
services that it provides and the constraints on its operation. These requirements reflect the needs of
customers for a system that serves a certain purpose such as con-trolling a device, placing an order, or
finding information. The process of finding out, analyzing, documenting and checking these services
and constraints is called requirements engineering (RE).
Types of requirements:
Types of requirements
The functional requirements for a system describe what the system should do.
These are statements of services the system should provide, how the system should react to
particular inputs, and how the system should behave in particular situations.
For example, functional requirements for the MHC-PMS system, used to maintain information
about patients receiving treatment for mental health problems:
1. A user shall be able to search the appointments lists for all clinics.
2. The system shall generate each day, for each clinic, a list of patients who are expected to
attend appointments that day.
3. Each staff member using the system shall be uniquely identified by his or her eight-digit
employee number.
Non-functional requirements are requirements that are not directly concerned with the specific
services delivered by the system to its users.
They may define constraints on the system implementation such as the capabilities of I/O
devices or the data representations used in inter-faces with other systems.
Non-functional requirements, such as performance, security, or availability, usually specify or
constrain characteristics of the system as a whole. Failing to meet a non-functional requirement can
mean that the whole system is unusable.
For example, if an aircraft system does not meet its reliability requirements, it will not be certified
as safe for operation; if an embedded control system fails to meet its performance requirements, the
control functions will not operate correctly.
Fig: Types of Non-Functional Requirements
1. Product requirements - These requirements specify or constrain the behavior of the software.
Examples include performance requirements on how fast the system must execute and how
much memory it requires, reliability requirements that set out the acceptable failure rate,
security requirements, and usability requirements.
2. Organizational requirements - These requirements are broad system requirements derived
from policies and procedures in the customer’s and developer’s organization.
Examples include operational process requirements that define how the sys-tem will be used,
development process requirements that specify the programming language, the development
environment or process standards to be used, and environmental requirements that specify the
operating environment of the system.
3. External requirements - Requirements that are derived from factors external to the system and
its development process. These may include regulatory requirements that set out what must be
done for the sys-tem to be approved for use by a regulator, such as a central bank; legislative
requirements that must be followed to ensure that the system operates within the law; and
ethical requirements that ensure that the system will be acceptable to its users and the general
public.
Fig: Examples of Non – Functional Requirements
Figure shows examples of product, organizational, and external requirements taken from the MHC-
PMS.
Domain Requirements
Domain requirements are derived from the application domain of the system rather than from
the specific needs of system users.
Domain requirements reflect the environment in which the system operates so, when we talk
about an application domain we mean environments such as train operation, medical records,
e-commerce etc.
Domain requirements are important because they often reflect fundamentals of the application
domain. If these requirements are not satisfied, it may be impossible to make the system work
satisfactorily.
2.2.3 Requirements Specification
Requirements specification is the process of writing down the user and system requirements in
a requirements document.
Ideally, the user and system requirements should be clear, unambiguous, easy to understand,
complete, and consistent.
The user requirements for a system should describe the functional and non-functional
requirements so that they are understandable by system users without detailed technical
knowledge.
They should only specify the external behavior of the system and should avoid system design
characteristics.
Various problems can arise when requirements are written in natural language sentences in a
text document:
1. Lack of clarity - It is sometimes difficult to use language in a precise and unambiguous way
without making the document wordy and difficult to read.
2. Requirements confusion - Functional requirements, non-functional requirements, system goals
and design information may not be clearly distinguished.
3. Requirements amalgamation - Several different requirements may be expressed together as a
single requirement.
Figure 1 illustrates this confusion. This example is taken from an actual requirements document for a
CASE tool for editing software design models. The user may specify that a grid should be displayed so
that entities may be accurately positioned in a diagram.
Figure 2 illustrates how these guidelines may be used. It includes two requirements for the embedded
software for the automated insulin pump
System requirements are expanded versions of the user requirements that are used by software
engineers as the starting point for the system design.
They add detail and explain how the user requirements should be provided by the system.
Ideally, the system requirements should simply describe the external behavior of the system
and its operational constraints. They should not be concerned with how the system should be
designed or implemented.
Fig:3 System Requirements Specification using a Standard Form
The software requirements document (sometimes called the software requirements specification or
SRS) is an official statement of what the system developers should implement.
It should include both the user requirements for a system and a detailed specification of the system
requirements.
1. INTRODUCTION
1.1 Purpose
The purpose of developing attendance management system is to computerized the tradition way of
taking attendance. Another purpose for developing this software is to generate the report automatically
at the end of the session or in the between of the session. The purpose of this document is that the
requirements mentioned in it should be utilized by software developer to implement the system.
1.2 Scope
This system allows the teacher to maintain attendance record of the classes to which it is teaching.
With the help of this system Teacher should be in a position to send e-mail to the students who remain
absent for the class. The system provides a cumulative report at every month end for the corresponding
class.
1.3 Overview
This system provides an easy solution to the teacher to keep track of student attendance, and statistics
2. General Description
This attendance maintenance system replaces the traditional, manual attendance system by which a lot
of paper work will be reduced. The teacher should able to view photograph of student along with his
attendance in his laptop. This is the primary feature of this system. Another feature is that Teacher can
be allowed to edit particular record at desired time. The system should produce monthly attendance
report. And there should be facility to send an e-mail/warning to the student remaining absent in the
class. Every Teacher should have laptop with wireless internet connection. A teacher may teach to
different classes and a separate record for the corresponding classes should be maintained.
3. FUNCTIONAL REQUIREMENTS
The identity of student is verified and then marked present at particular date and time. The system
should display student photograph along with their names for the corresponding class. The student
may be marked present or absent students. A statistical report should display individuals report or a
cumulative report whenever required.
3.1 Description
The identity of student is verified and then marked present at particular date and time. The system
should display student photograph along with their names for that corresponding class. The student
may be marked present or absent depending upon his display individuals report or a cumulative report
whenever requirement.
3.2 Technical Issues
The system should be implemented in VC++.
4. Interface Requirements
4.1 GUI
GUI 1: Main menu should provide option such as File, Edit, Report, help.
GUI 2: In File menu one can create a new record file or can open an existing record file.. GUI 3: The
display of record
GUI 4: Report option should display statistical report. It may be particular student or for the whole
class.
GUI 5: Help option should describe functionality of the system. It should be written in simple HTML.
4.2 Hardware Interface
Hardware Interface 1: The system should be embedded in the laptops.
Hardware Interface 2: The laptop should use wireless Ethernet Card to send departmental database
server.
4.3 Software Interface:
Software Interface 1 : Attendance maintenance system.
Software Interface 2 : The attendance database should be transmitted to departmental database server.
Software Interface 3 : E-mail message generator which generates standard message of absence.
Software Interface 4 : Report generators.
5. Performance Requirements
• This system should work concurrently on multiple processors between college hours. The
system should support 50 users.
• The email should be send within one hour after class gets over.
• The system should support taking attendance of maximum 10 students per class.
6. Design Constraints
The system should be designed within 6 months.
There will be student database, teacher database. The student database will contain students name,
class, attendance, email address, address, and phone number. The teacher database will contain
teachers name, class taught, e-mail address, phone number.
9. Preliminary Schedule
The system has to be implemented within 6 months.
The goal of the requirements engineering process is to create and maintain a system
requirements document.
The overall process includes four high-level requirements engineering sub-processes.
These are concerned with assessing whether the system is useful to the business (feasibility
study); discovering requirements (elicitation and analysis); converting these requirements into
some standard form (specification); and checking that the requirements actually define the
system that the customer wants (validation).
The below figure illustrates the relationship between these activities. It also shows the documents
produced at each stage of the requirements engineering process. The activities are concerned with the
discovery, documentation and checking of requirements.
Fig: The Requirements Engineering Process
For all new systems, the requirements engineering process should start with a feasibility study.
The input to the feasibility study is a set of preliminary business requirements, an outline
description of the system and how the system is intended to support business processes.
The results of the feasibility study should be a report that recommends whether or not it is
worth carrying on with the requirements engineering and system development process.
A feasibility study is a short, focused study that aims to answer a number of questions:
1. Does the system contribute to the overall objectives of the organization?
2. Can the system be implemented using current technology and within given cost and
schedule constraints?
3. Can the system be integrated with other systems which are already in place?
After an initial feasibility study, the next stage of the requirements engineering process is
requirements elicitation and analysis.
In this activity, software engineers work with customers and system end-users to find out about
the application domain, what services the system should provide, the required performance of
the system, hardware constraints, and so on.
Requirements elicitation and analysis may involve a variety of different kinds of people in an
organization.
A system stakeholder is anyone who should have some direct or indirect influence on the
system requirements.
Stakeholders include end-users who will interact with the system and anyone else in an
organization who will be affected by it.
Other system stakeholders might be engineers who are developing or maintaining other related
systems, business managers, domain experts, and trade union representatives.
Eliciting and understanding requirements from system stakeholders is a difficult process for several
reasons:
1. Stakeholders often don’t know what they want from a computer system except in the most
general terms; they may find it difficult to articulate what they want the system to do; they
may make unrealistic demands because they don’t know what is and isn’t feasible.
2. Stakeholders in a system naturally express requirements in their own terms and with
implicit knowledge of their own work.
3. Different stakeholders have different requirements and they may express these in different
ways. Requirements engineers have to discover all potential sources of requirements and
discover commonalities and conflict.
4. Political factors may influence the requirements of a system.
5. The economic and business environment in which the analysis takes place is dynamic.
Requirements Discovery
Requirements discovery is the process of gathering information about the required system and
existing systems, and distilling the user and system requirements from this information.
Sources of information during the requirements discovery phase include documentation,
system stakeholders, and specifications of similar systems.
Viewpoints
A viewpoint is a way of organizing the requirements for a software system, based on some perspective
such as an end-user perspective or a manager's perspective.
1. Interactor viewpoints that represent people or other systems that interact directly with the
system. In the bank ATM system, examples of interactor viewpoints are the bank’s customers
and the bank’s account database.
2. Indirect viewpoints that represent stakeholders who do not use the system themselves but who
influence the requirements in some way. In the bank ATM system, examples of indirect
viewpoints are the management of the bank and the bank security staff.
3. Domain viewpoints that represent domain characteristics and constraints that influence the
system requirements. In the bank ATM system, an example of a domain viewpoint would be
the standards that have been developed for inter-bank communications.
Interactor viewpoints represent stakeholders that interact directly with the system; indirect viewpoints
represent stakeholders that are affected by the system but who are not end-users; domain viewpoints
represent requirements that come from the application domain.
Interviewing
Formal or informal interviews with system stakeholders are part of most requirements
engineering processes.
In these interviews, the requirements engineering team puts questions to stakeholders about the
system that they currently use and the system to be developed.
Requirements are derived from the answers to these questions.
Scenarios
Scenarios can be particularly useful for adding detail to an outline requirements description.
A scenario starts with an outline of the interaction.
During the elicitation process, details are added to this to create a complete description of that
interaction.
A scenario may include:
1. A description of what the system and users expects when the scenario starts.
2. A description of the normal flow of events in the scenario.
3. A description of what can go wrong and how this is handled.
4. Information about other activities that might be going on at the same time.
5. A description of the system state when the scenario finishes.
Scenario-based elicitation involves working with stakeholders to identify scenarios and to capture
details to be included in these scenarios.
Scenarios may be written as text, supplemented by diagrams, screen shots, etc.
As an example of a simple text scenario, consider how the MHC-PMS may be used to enter data for a
new patient shown in figure. When a new patient attends a clinic, a new record is created by a medical
receptionist and personal information (name, age, etc.) is added to it. A nurse then interviews the
patient and collects medical history. The patient then has an initial consultation with a doctor who
makes a diagnosis and, if appropriate, recommends a course of treatment. The scenario shows what
happens when medical history is collected.
Use-Cases
Use cases are documented using a high-level use case diagram. The set of use cases represents all of
the possible interactions that will be described in the system requirements. Actors in the process, who
may be human or other systems, are represented as stick figures. Each class of interaction is
represented as a named ellipse. Lines link the actors with the interaction.
Ethnography
Ethnography is an observational technique that can be used to understand operational processes and
help derive support requirements for these processes.
Ethnography is particularly effective for discovering two types of requirements:
1. Requirements that are derived from the way in which people actually work, rather than the
way in which process definitions say they ought to work. For example, air traffic
controllers may switch off a conflict alert system that detects aircraft with intersecting
flight paths, even though normal control procedures specify that it should be used.
2. Requirements that are derived from cooperation and awareness of other people’s activities.
For example, air traffic controllers may use an awareness of other controllers’ work to
predict the number of aircrafts that will be entering their control sector. They then modify
their control strategies depending on that predicted workload. Therefore, an automated
ATC system should allow controllers in a sector to have some visibility of the work in
adjacent sectors.
Ethnography can be combined with prototyping. The ethnography informs the development of the
prototype so that fewer prototype refinement cycles are required. Furthermore, the prototyping focuses
the ethnography by identifying problems and questions that can then be discussed with the
ethnographer.
Requirements validation is the process of checking that requirements actually define the system that
the customer really wants.
Requirements validation is important because errors in a requirements document can lead to extensive
rework costs when these problems are discovered during development or after the system is in service.
During the requirements validation process, different types of checks should be carried out on the
requirements in the requirements document. These checks include:
1. Validity checks - A user may think that a system is needed to perform certain functions.
However, further thought and analysis may identify additional or different functions that
are required. Systems have diverse stakeholders with different needs and any set of
requirements is inevitably a compromise across the stake-holder community.
2. Consistency checks - Requirements in the document should not conflict. That is, there
should not be contradictory constraints or different descriptions of the same system
function.
3. Completeness checks - The requirements document should include requirements that define
all functions and the constraints intended by the system user.
4. Realism checks - Using knowledge of existing technology, the requirements should be
checked to ensure that they can actually be implemented. These checks should also take
account of the budget and schedule for the system development.
5. Verifiability - To reduce the potential for dispute between customer and contractor, system
requirements should always be written so that they are verifiable. This means that you
should be able to write a set of tests that can demonstrate that the delivered system meets
each specified requirement.
There are a number of requirements validation techniques that can be used individually or in
conjunction with one another:
1. Requirements reviews - A requirements review is a manual process that involves people from
both client and contractor organizations.
They check the requirements document for anomalies and omissions. The review process may
be managed in the same way as program inspections.
Requirements reviews can be informal or formal. Informal reviews simply involve contractors
discussing requirements with as many system stakeholders as possible.
In a formal requirements review, the development team should ‘walk’ the client through the
system requirements explaining the implications of each requirement. The review team should
check each requirement for consistency and should check the requirements as a whole for
completeness.
2. Prototyping - In this approach to validation, an executable model of the system in question is
demonstrated to end-users and customers. They can experiment with this model to see if it
meets their real needs.
3. Test-case generation - Requirements should be testable. If the tests for the requirements are
devised as part of the validation process, this often reveals requirements problems. If a test is
difficult or impossible to design, this usually means that the requirements will be difficult to
implement and should be reconsidered.
The requirements for large software systems are always changing. One reason for this is that these
systems are usually developed to address ‘wicked’ problems—problems that cannot be completely
defined. Because the problem cannot be fully defined, the soft-ware requirements are bound to be
incomplete.
During the software process, the stake-holders’ understanding of the problem is constantly changing.
The system requirements must then also evolve to reflect this changed problem view.
Once a system has been installed and is regularly used, new requirements inevitably emerge. It is hard
for users and system customers to anticipate what effects the new system will have on their business
processes and the way that work is done.
2. Volatile requirements - These are requirements that are likely to change during the
system development process or after the system have been become operational.
Examples of volatile requirements are requirements resulting from government health-
care policies or healthcare charging mechanisms.
Harker and others (Harker et al., 1993) suggested that volatile requirements fall into five classes as
shown in the following table:
Requirement
Description
type
Requirements that change because of changes to the environment in which
Mutable the organization is operating. For example, in hospital systems, the
requirements funding of patient care may change and thus require different treatment
information to be collected.
Requirements that emerge as the customer's understanding of the system
Emergent
develops during the system development. The design process may reveal
requirements
new emergent requirements.
Requirements that result from the introduction of the computer system.
Consequential Introducing the computer system may change the organizations processes
requirements and open up new ways of working which generate new system
requirements.
Requirements that depend on the particular systems or business processes
Compatibility
within an organization. As these change, the compatibility requirements on
requirements
the commissioned or delivered system may also have to evolve.
Planning is an essential first stage in the requirements management process. The planning stage
establishes the level of requirements management detail that is required. During the requirements
management stage, you have to decide on:
Traceability is the property of a requirements specification that reflects the ease of finding related
requirements.
1. Source traceability information links the requirements to the stakeholders who proposed
the requirements and to the rationale for these requirements. When a change is proposed,
you use this information to discover the stakeholders so that they can be consulted about
the change.
2. Requirements traceability information links dependent requirements within the
requirements document. You use this information to assess how many requirements are
likely to be affected by a proposed change and the extent of consequential requirements
changes that may be necessary.
3. Design traceability information links the requirements to the design modules where these
requirements are implemented. You use this information to assess the impact of proposed
requirements changes on the system design and implementation.
Requirements management needs automated support and the software tools for this should be chosen
during the planning phase. You need tool support for:
Change management is essential because you need to decide if the benefits of implementing new
requirements are justified by the costs of implementation. The advantage of using a formal process for
change management is that all change proposals are treated consistently and changes to the
requirements document are made in a controlled way.
1. Problem analysis and change specification - The process starts with an identified requirements
problem or, sometimes, with a specific change proposal. During this stage, the problem or the
change proposal is analyzed to check that it is valid. This analysis is fed back to the change
requestor who may respond with a more specific requirements change proposal, or decide to
withdraw the request.
2. Change analysis and costing - The effect of the proposed change is assessed using traceability
information and general knowledge of the system requirements. The cost of making the change
is estimated both in terms of modifications to the requirements document and, if appropriate, to
the system design and implementation. Once this analysis is completed, a decision is made
whether or not to proceed with the requirements change.
3. Change implementation - The requirements document and, where necessary, the system design
and implementation, are modified. You should organize the requirements document so that you
can make changes to it without extensive rewriting or reorganization. As with programs,
changeability in documents is achieved by minimizing external references and making the
document sections as modular as possible. Thus, individual sections can be changed and
replaced without affecting other parts of the document.
The SafeHome security function enables the homeowner to configure the security system when it is
installed, monitors all sensors connected to the security system, and interacts with the homeowner
through the Internet, a PC, or a control panel.
During installation, the SafeHome PC is used to program and configure the system. Each sensor is
assigned a number and type, a master password is programmed for arming and disarming the system,
and telephone number(s) are input for dialing when a sensor event occurs.
When a sensor event is recognized, the software invokes an audible alarm attached to the system.
After a delay time that is specified by the homeowner during system configuration activities, the
software dials a telephone number of a monitoring service, provides information about the location,
reporting the nature of the event that has been detected. The telephone number will be redialed every
20 seconds until telephone connection is obtained. The homeowner receives security information via a
control panel, the PC, or a browser, collectively called an interface. The interface displays prompting
messages and system status information on the control panel, the PC, or the browser window.
DFD level 1
DFD level 2
DFD level 2
Example 4:Food Ordering System
DFD level 0
DFD level 1
DFD level 2
Petri Nets:
Petri nets are a well-known formal model which combines a rich mathematical theory with a
useful graphical notation.
Notations:
Example:
Advantages:
• Precise definition of problem
• Represent graphical overflow
• Useful in allocating resources to tasks
Name : Passenger
Alias : none
Where used/how used : Passenger query (input),Ticket (ticket).
Description:
Passenger = Passenger_name + Passenger_address
Passenger _name = Passenger_last name + Passenger_First name +
Passenger_Middlename
Passenger_address = Local _address + Community_address
Local _address = House_nmae + Street_nmae
Community_address = City_name + State_nmae
Advantages:
• Support name management and avoid duplication.
• Store of linking analysis, design and implementation
• Automated tools (CASE) can be used to maintain data dictionary.