Unit 1 Se
Unit 1 Se
Introduction: Software and its Characteristics, Evolving Role of Software, Software Product,
Software Processes, Software Crisis, ‘Software Engineering’ Evolution, Principles of
Software Engineering, Programming-in-the-small vs. Programming-in-the-large, Software
Components, Software Engineering Processes.
Software Life Cycle (SLC) Models: Water Fall Model, Prototype Model, Spiral Model,
Evolutionary Development Models, Iterative Enhancement Models, Object Oriented Models
and other latest Models.
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.
The term Software Engineering is made of two words, software and engineering.
Software is more than just a program code. A program is an executable code, which serves
some computational purpose. Software is considered to be collection of executable
programming code, associated libraries and documentations. Software, when made for a
specific requirement is called software product.
Engineering on the other hand, is all about developing products, using well defined, scientific
principles and methods. It is the application of scientific and practical knowledge to invent,
design, build, maintain, and improve frameworks, processes, etc.
Software engineering is an engineering branch associated with development of software
product using well-defined scientific principles, methods and procedures. The outcome of
software engineering is an efficient and reliable software product.
The software is a collection of programming codes, procedures, rules, documents, and data
that perform a particular task and fulfil a particular requirement. Software is never exhausted
or worn out. In a computer system, software controls integrate and manage the hardware
components.
Characteristics of Software
The quality of a software product is determined by what it offers and how easily it can be used.
Software is judged by different people on different grounds. Customers, for instance, want software
that meets their specific needs. Similarly, developers engaged in designing, coding, and maintaining
the software determine the quality of the software by assessing its internal characteristics. Let’s check
them out…
1. Functionality
The functionality of software refers to its ability to perform and function according to design
specifications. In simple terms, software systems should function correctly, i.e. perform all the
functions for which they are designed. The functions refer to the features that the end user, as well as
the business, expect as basic facilities from the system. All these functions must be integrated into the
system.
2. Usability (User-friendly)
The user-friendliness of the software is characterized by its ease of use. In other words, learning how
to use the software should require less effort or time. If a software program isn’t user-friendly, users
may have trouble navigating the software and using some of its features. Software should require less
time or effort to learn. Ideally, software should be easy to use even by people with no IT experience.
3. Efficiency
Essentially, it refers to the software’s ability to utilize human and system resources such as time,
effort, CPU, memory, computation power, network bandwidth, files, databases, etc., as effectively and
efficiently as possible. For a software project to succeed, efficiency is crucial. In addition to meeting
the needs for which the software was made, it must also provide excellent features designed to assist
users in completing their tasks faster. Software should make efficient use of storage space and execute
commands according to timing requirements.
In order to be efficient, software must offer users proper value in terms of their time and cash. The
market is filled with products that cater to various industries, but only a handful of products are
efficient enough to benefit individuals and businesses. The medical billing software that Open
Practice Solutions provides, for instance, makes billing processes much more efficient for clients than
those offered by other companies.
4. Flexibility
Software Flexibility refers to the ability of the software solution to adapt to potential or future changes
in its requirements. When evaluating the flexibility of software, look at how simple it is to add,
modify, or remove features without interfering with the current operation.
It is essential to keep up with rapidly changing markets, technologies, and customer needs. In
software development, change is inevitable; it can arise during the development process itself or as
the result of future requirements. Flexibility is therefore highly valued. Consequently, any software
product must be scalable, flexible, and easily adaptable to future technology.
5. Reliability
The reliability of a software product describes the likelihood it will operate without failure over a
specified period of time under certain conditions. It determines the ability of software to maintain its
level of performance (provide desired functionality) under specified conditions for a specified period
of time.
6. Maintainability
Maintainability refers to how easily you can repair, improve and comprehend software code. In some
ways, maintaining is similar to being flexible. Maintainability deals with the modification of errors
and minor alterations to software code, while flexibility focuses on major functional extensions. It
also involves maintaining the services and functionality of the software.
7. Portability
Software portability is a critical factor that cannot be ignored. Portability refers to the ability to use
software in different environments. This is the ease with which software can be ported from one
platform to another without (or with minimal) changes, while obtaining similar results. As simple as it
may sound, it refers to the ability of software to work on different hardware platforms without any (or
little) modifications needed.
8. Integrity
Integrity is key for demonstrating the safety, security, and maintainability of your software.
In addition, software that needs to be compliant with industry regulations and coding
standards requires high code integrity. Achieving software integrity can be difficult. Yet, with
the right practices to improve safety, security, and maintainability, the challenge can be easily
overcome. In these days of increased security threats, all software must include this factor.
Software Evolution
Software evolution refers to the process of adapting, improving, and maintaining software
over time to meet changing user needs, fix issues, and keep up with technological
advancements. Software is not static; it undergoes continuous changes throughout its
lifecycle to remain useful and effective in a dynamic environment.
Software Products
Software Products are nothing but software systems delivered to the customer with the
documentation that describes how to install and use the system. In certain cases, software
products may be part of system products where hardware, as well as software, is delivered
to a customer. Software products are produced with the help of the software process. The
software process is a way in which we produce software.
Software Processes
Software processes refer to the structured steps and methodologies followed to design,
develop, deploy, and maintain software. A well-defined software process ensures quality,
efficiency, and timely delivery of software products.
1. Waterfall Model: Sequential and linear, with clear stages and no overlap.
2. Agile Model: Iterative and incremental, emphasizing flexibility and customer
collaboration.
3. Spiral Model: Combines iterative development with risk analysis.
4. DevOps: Integrates development and operations for continuous delivery and
deployment.
Software Crisis
There are lots of meaning of term software crisis. First of all we go in history and what was
the scenario at that time.
Hardware Oriented World: There was more focus on the hardware and software as people
were more focusing on thathow instructions can be executed fast.Not on how bugs should
be removed frequently.
Cost: Hardware vs Software
Rapid increase in software cost and Rapid fall in hardware cost need more resources and well
defined and systematic model for software development.
Inexperienced Developer:
Developer were hardly one year of experienced old so quite difficult for them to fulfill all
coding based requirement.
Failures in Big project:
Big failure in project cost government billions of dollars like
1) the North East blackout in 2003- has been major power system failures in the history of
north which involves 100 power plants, 50 million customer faced problem, $ 6 million
dollar financial loss.
2) Year 2000(Y2k) refers to the widespread snags in processing date after the Year 2000. In
1960-80 when shortened the four digit date format like 1972 to a 2 digit format like 72
because of "Limited Memory. Because of that 2000 was shortened to 00. Million dollar
were spent to handle this problem.
3) Arian- 5 Space Rocket: In 1996, developed at cost of $7000 Million Dollars over a
period of 10 years was destroyed within less than 1 minutes after its launch. As there was
software bugs in rocket guidance system.
4) "Dollar 924 lakhs": In 1996, US bank credit accounts of nearly 800 customer with dollar
924 lakhs. This problem was due to main programming bug in the banking system.
5)1991 during Gulf War, :The USA use patriot missiles as a defence against Iraqi scud
missile . However, patriot failed to hit the scud many times with cost life of 28 USA
soldiers.In an inquiry it is found that a small bug had resulted in miscalculation of
missile path.
User changing requirement:
As user changes its requirement slightly as world and technology changing rapidly.
The difficulty of writing the code for a computer program which is correct and understandable is referred
to as software crisis.
Programming-in-the-Small
Characteristics:
Programming-in-the-Large
This refers to the development of large-scale, complex software systems. It focuses on the
collaboration of multiple teams and managing the integration of many components.
Characteristics:
Challenges:
Waterfall model
Winston Royce introduced the Waterfall Model in 1970.This model has five phases:
Requirements analysis and specification, design, implementation, and unit testing, integration
and system testing, and operation and maintenance. The steps always follow in this order and
do not overlap. The developer must complete every phase before the next phase begins. This
model is named "Waterfall Model", because its diagrammatic representation resembles a
cascade of waterfalls.
1. Requirements analysis and specification phase: The aim of this phase is to understand
the exact requirements of the customer and to document them properly. Both the customer
and the software developer work together so as to document all the functions, performance,
and interfacing requirement of the software. It describes the "what" of the system to be
produced and not "how."In this phase, a large document called Software Requirement
Specification (SRS) document is created which contained a detailed description of what the
system will do in the common language.
2. Design Phase: This phase aims to transform the requirements gathered in the SRS into a
suitable form which permits further coding in a programming language. It defines the overall
software architecture together with high level and detailed design. All this work is
documented as a Software Design Document (SDD).
3. Implementation and unit testing: During this phase, design is implemented. If the SDD
is complete, the implementation or coding phase proceeds smoothly, because all the
information needed by software developers is contained in the SDD.
During testing, the code is thoroughly examined and modified. Small modules are tested in
isolation initially. After that these modules are tested by writing some overhead code to check
the interaction between these modules and the flow of intermediate output.
4. Integration and System Testing: This phase is highly crucial as the quality of the end
product is determined by the effectiveness of the testing carried out. The better output will
lead to satisfied customers, lower maintenance costs, and accurate results. Unit testing
determines the efficiency of individual modules. However, in this phase, the modules are
tested for their interactions with each other and with the system.
5. Operation and maintenance phase: Maintenance is the task performed by every user
once the software has been delivered to the customer, installed, and operational.
Some Circumstances where the use of the Waterfall model is most suited are:
o This model is simple to implement also the number of resources that are required for
it is minimal.
o The requirements are simple and explicitly declared; they remain unchanged during
the entire project development.
o The start and end points for each phase is fixed, which makes it easy to cover
progress.
o The release date for the complete product, as well as its final cost, can be determined
before development.
o It gives easy to control and clarity for the customer due to a strict reporting system.
o In this model, the risk factor is higher, so this model is not suitable for more
significant and complex projects.
o This model cannot accept the changes in requirements during development.
o It becomes tough to go back to the phase. For example, if the application has now
shifted to the coding phase, and there is a change in requirement, It becomes tough to
go back and change it.
o Since the testing done at a later stage, it does not allow identifying the challenges and
risks in the earlier phase, so the risk reduction strategy is difficult to prepare.
Prototyping Model
The Prototyping Model is one of the most popularly used Software Development Life Cycle
Models (SDLC models). This model is used when the customers do not know the exact
project requirements beforehand. In this model, a prototype of the end product is first
developed, tested, and refined as per customer feedback repeatedly till a final acceptable
prototype is achieved which forms the basis for developing the final product.
In this process model, the system is partially implemented before or during the analysis phase
thereby allowing the customers to see the product early in the life cycle. The process starts by
interviewing the customers and developing the incomplete high-level paper model. This
document is used to build the initial prototype supporting only the basic functionality as
desired by the customer. Once the customer figures out the problems, the prototype is further
refined to eliminate them. The process continues until the user approves the prototype and
finds the working model to be satisfactory.
Step 1: Requirement Gathering and Analysis: This is the initial step in designing a
prototype model. In this phase, users are asked about what they expect or what they want
from the system.
Step 2: Quick Design: This is the second step in the Prototyping Model. This model covers
the basic design of the requirement through which a quick overview can be easily described.
Step 3: Build a Prototype: This step helps in building an actual prototype from the
knowledge gained from prototype design.
Step 4: Initial User Evaluation: This step describes the preliminary testing where the
investigation of the performance model occurs, as the customer will tell the strengths and
weaknesses of the design, which was sent to the developer.
Step 5: Refining Prototype: If any feedback is given by the user, then improving the client’s
response to feedback and suggestions, the final system is approved.
Step 6: Implement Product and Maintain: This is the final step in the phase of the
Prototyping Model where the final system is tested and distributed to production, here the
program is run regularly to prevent failures.
Types of Prototyping Models
There are four types of Prototyping Models, which are described below.
1. Rapid Throwaway Prototyping
This technique offers a useful method of exploring ideas and getting customer feedback
for each of them.
In this method, a developed prototype need not necessarily be a part of the accepted
prototype.
Customer feedback helps prevent unnecessary design faults and hence, the final prototype
developed is of better quality.
2. Evolutionary Prototyping
In this method, the prototype developed initially is incrementally refined based on
customer feedback till it finally gets accepted.
In comparison to Rapid Throwaway Prototyping, it offers a better approach that saves
time as well as effort.
This is because developing a prototype from scratch for every iteration of the process can
sometimes be very frustrating for the developers.
3. Incremental Prototyping
In this type of incremental prototyping, the final expected product is broken into different
small pieces of prototypes and developed individually.
In the end, when all individual pieces are properly developed, then the different
prototypes are collectively merged into a single final product in their predefined order.
It’s a very efficient approach that reduces the complexity of the development process,
where the goal is divided into sub-parts and each sub-part is developed individually.
The time interval between the project’s beginning and final delivery is substantially
reduced because all parts of the system are prototyped and tested simultaneously.
Of course, there might be the possibility that the pieces just do not fit together due to
some lack of ness in the development phase – this can only be fixed by careful and
complete plotting of the entire system before prototyping starts.
4. Extreme Prototyping
This method is mainly used for web development. It consists of three sequential independent
phases:
In this phase, a basic prototype with all the existing static pages is presented in HTML
format.
In the 2nd phase, Functional screens are made with a simulated data process using a
prototype services layer.
This is the final step where all the services are implemented and associated with the final
prototype.
This Extreme Prototyping method makes the project cycling and delivery robust and fast and
keeps the entire developer team focused and centralized on product deliveries rather than
discovering all possible needs and specifications and adding necessitated features.
Spiral Model
The spiral model, initially proposed by Boehm, is an evolutionary software process model
that couples the iterative feature of prototyping with the controlled and systematic aspects of
the linear sequential model. It implements the potential for rapid development of new
versions of the software. Using the spiral model, the software is developed in a series of
incremental releases. During the early iterations, the additional release may be a paper model
or prototype. During later iterations, more and more complete versions of the engineered
system are produced.
Each cycle in the spiral is divided into four parts:
Objective setting: Each cycle in the spiral starts with the identification of purpose for that
cycle, the various alternatives that are possible for achieving the targets, and the constraints
that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these various
alternatives based on the goals and constraints. The focus of evaluation in this stage is located
on the risk perception for the project.
Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking, simulation,
and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice made
whether to continue with a further period of the spiral. If it is determined to keep, plans are
drawn up for the next step of the project.
The development phase depends on the remaining risks. For example, if performance or user-
interface risks are treated more essential than the program development risks, the next phase
may be an evolutionary development that includes developing a more detailed prototype for
solving the risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of approach.
An essential element of the model is that each period of the spiral is completed by a review
that includes all the products developed during that cycle, including plans for the next cycle.
The spiral model works for development as well as enhancement projects.
Advantages
Disadvantages
Evolutionary Model
This evolutionary model concept comes into the picture after the user faces the partially
developed system rather than waiting for the fully developed version. The idea of this
evolutionary model comes from developing the core module and then improving the software
product by using iterative and incremental techniques with appropriate feedback.
In this evolutionary process model, the software product is in the sensitive version, which is
made through many iterations, and then the final product is prepared. This evolutionary
approach also suggests breaking down all the models into maintainable smaller chunks. After
that, we can prioritize all the smaller products. After completing all the products, we can
deliver those chunks one at a time to the users.
It plays a vital role in large projects where we can easily search the module for the
implementation of incremental things. It is also an influential model because it collects
customer feedback throughout the development process, and the customer can use the base
feature of the project before the release of the entire working version.
The evolutionary model is also known as successive versions or incremental models. The
main aim of this evolutionary model is to deliver the products in total processes over time. It
also combines the iterative and collective model of the software development life cycle
(SDLC).
Based on the evolutionary model, we can divide the development model into many modules
to help the developer build and transfer incrementally. On the other hand, we can also
develop the skeleton of the initial product. Also, it refines the project to increase levels of
capability by adding new functionalities in successive versions.
There are so many characteristics of using the evolutionary model in our project. These
characteristics are as follows.
o We can develop the evolutionary model with the help of an iterative waterfall model
of development.
o There are three types of evolutionary models. These are the Iterative model,
Incremental model and Spiral model.
o Many primary needs and architectural planning must be done
o to implement the evolutionary model.
o When the new product version is released, it includes the new functionality and some
changes in the existing product, which are also released with the latest version.
o This model also permits the developer to change the requirement, and the developer
can divide the process into different manageable work modules.
o The development team also have to respond to customer feedback throughout the
development process by frequently altering the product, strategy, or process.
Iterative Model
In this Model, you can start with some of the software specifications and develop the first
version of the software. After the first version if there is a need to change the software, then a
new version of the software is created with a new iteration. Every release of the Iterative
Model finishes in an exact and fixed period that is called iteration.
The Iterative Model allows the accessing earlier phases, in which the variations made
respectively. The final output of the project renewed at the end of the Software Development
Life Cycle (SDLC) process.
2. Design: In the design phase, team design the software by the different diagrams like Data
Flow diagram, activity diagram, class diagram, state transition diagram, etc.
3. Implementation: In the implementation, requirements are written in the coding language
and transformed into computer programmes which are called Software.
4. Testing: After completing the coding phase, software testing starts using different test
methods. There are many test methods, but the most common are white box, black box, and
grey box test methods.
5. Deployment: After completing all the phases, software is deployed to its work
environment.
6. Review: In this phase, after the product deployment, review phase is performed to check
the behaviour and validity of the developed product. And if there are any error found then the
process starts again from the requirement gathering.
7. Maintenance: In the maintenance phase, after deployment of the software in the working
environment there may be some bugs, some errors or new updates are required. Maintenance
involves debugging and new addition options.
The object-oriented life cycle model considers 'objects' as the basis of the software
engineering process. The development team starts by observing and analyzing the system
they intend to develop before defining the requirements. Once the process is over, they focus
on identifying the objects of the system. Now, an object could be anything; it can have a
physical existence like a customer, car, etc. An object also constitutes intangible elements
like a process or a project.
Advantages of Object-Oriented Life Cycle Model
Object-oriented Analysis
Object-oriented Design
Object-oriented Implementation
The object-oriented analysis consists of the process where a development team evaluates the
system and organizes the requirements as objects. Contrary to traditional structural analysis,
the OOA heavily depends on advanced data like Use Cases and Object Models.
Use case
Use Cases are written descriptions about how users will behave when they enter your website
or application. It comprises the goals of each user from the point of their entry to exit.
Object Model
An object model allows the development team to create an architectural software or system
model before implementing or programming. It helps in defining a software/system in objects
and classes. It informs the developers about
The OOA starts with analyzing the problem domain and produce a conceptual model by
thoroughly evaluating the information in the given area. There is an abundance of data
available from various sources like:
Formal document
Requirement statements
Primary data collected through stakeholders
Once the analysis is complete, the development team prepares a conceptual model describing
the system's functionalities and requirements.
Object-oriented Design
It is the next development stage of the object-oriented life cycle model where the analysts
design the desired system's overall architecture. The system is divided into a set of interacting
subsystems. The analyst considers the specifications from the system analysis. It all about
evaluating what the end-users expect from the new system.
As per the object-oriented design, the system is considered a collection of objects, with each
object handling a specific state data. For example, in banking software, each account may
feature some exclusive objects with separate data and functions.
Each programming language comes with several data types, with each type comprising
various variables. Similarly, objects also feature certain predefined data types.
Likewise, in object-oriented programming, developers can use many similar objects to create
blueprints. This is called a class.
Abstraction
Abstraction is the essence used by developers to build classes. Developers observe a set of
similar objects and characteristics of importance to define classes. Abstractions are divided
into two parts- global abstractions and local abstractions.
Global abstractions are static, providing one interface to users for a limited time. Meanwhile,
Local abstractions are responsible for providing a view based on user/developer's
requirements.
Inheritance
The concept of inheritance in object-oriented design defines the process of reusing 'objects.'
Developers can define a new class type using a similar existing class.
Object-oriented Implementation
In this phase, developers translate the class objects and the interrelationships of classes and
code them using a programming language. This is the phase to create databases and establish
functionalities for the system.
Let's consider a smartphone screen as an object and the touch on a specific icon as an event.
Now, when the user touches an icon, the screen opens up an application. This means the
smartphone screen (object) responds to the event (touch) by opening an application.
8 These requirements are vital to These are not always vital requirements.
system operation.
User’s Requirement
A user requirement refers to the needs, goals, and expectations of the end users or
stakeholders regarding the functionality, performance, and usability of a software system.
User requirements are typically expressed in non-technical terms, focusing on what the
software should do rather than how it should be implemented. These requirements are vital
for ensuring that the final product aligns with the users' needs.
1. Functional Requirements
o Describe the specific functions or features the software must have.
o Example: "The system must allow users to log in using their email and
password."
2. Non-Functional Requirements
o Define the quality attributes or constraints of the system, such as performance,
security, and usability.
o Example: "The system should respond to user inputs within 2 seconds."
3. Usability Requirements
o Focus on the user experience, including interface design and ease of use.
o Example: "The interface should be intuitive and accessible to users with visual
impairments."
4. Business Requirements
o Outline the goals and objectives the software must achieve to meet business
needs.
o Example: "The system should increase customer retention by 15% within the
first year."
5. Environmental Requirements
o Specify the conditions under which the software will operate.
o Example: "The system must support mobile devices running Android and
iOS."
3. Relevant
o Requirements should align with the needs and goals of the stakeholders.
4. Feasible
o The requirements should be technically and financially achievable within the
project constraints.
5. Traceable
o Each requirement should be linked to a specific business or user need.
4. Prototyping
o Create mockups or prototypes to validate user expectations early in the
development process.
5. Observation
o Study how users interact with existing systems or workflows.
User Stories: Short, simple descriptions of a feature from the user's perspective.
Example: "As a user, I want to reset my password so that I can regain access to my
account."
Use Case Diagrams: Visual representations of user interactions with the system.
Acceptance Criteria: Specific conditions under which a requirement is considered
met.
System Requirements
System requirements define what a software system should do, how it should perform, and
under what constraints it should operate. These requirements are critical for ensuring the
system's development meets stakeholder expectations and performs as intended. They are
generally divided into two main categories:
1. Functional Requirements
Examples:
User Authentication: The system must allow users to log in with a username and
password.
Data Processing: The system must process customer orders within 5 seconds.
Reporting: The system must generate monthly sales reports.
Business Rules: Validate user input to ensure compliance with organizational
standards.
2. Non-Functional Requirements
Non-functional requirements describe how the system performs the tasks defined in
functional requirements. These address quality attributes and constraints.
Categories of Non-Functional Requirements:
Performance Requirements:
o Response time should be under 2 seconds for 95% of transactions.
o The system must handle 10,000 concurrent users.
Scalability:
o The system should support the addition of new modules with minimal effort.
Security:
o All sensitive data must be encrypted.
o The system must prevent unauthorized access using multi-factor
authentication.
Availability:
o The system should have 99.99% uptime.
Usability:
o The system must support screen readers for accessibility.
Maintainability:
o Codebase should allow adding features without disrupting existing
functionality.
Compliance:
o The system must adhere to GDPR regulations.
3. Domain-Specific Requirements
These depend on the industry or domain the software serves, such as healthcare, finance, or
education. They might include specific regulatory, legal, or operational guidelines.
Examples:
Requirement Engineering
1. Feasibility Study
2. Requirement Elicitation and Analysis
3. Software Requirement Specification
4. Software Requirement Validation
5. Software Requirement Management
1. Feasibility Study:
The objective behind the feasibility study is to create the reasons for developing the software
that is acceptable to users, flexible to change and conformable to established standards.
Types of Feasibility:
The models used at this stage include ER diagrams, data flow diagrams (DFDs), function
decomposition diagrams (FDDs), data dictionaries, etc.
o Data Flow Diagrams: Data Flow Diagrams (DFDs) are used widely for modeling the
requirements. DFD shows the flow of data through a system. The system may be a
company, an organization, a set of procedures, a computer hardware system, a
software system, or any combination of the preceding. The DFD is also known as a
data flow graph or bubble chart.
o Data Dictionaries: Data Dictionaries are simply repositories to store information
about all data items defined in DFDs. At the requirements stage, the data dictionary
should at least define customer data items, to ensure that the customer and developers
use the same definition and terminologies.
o Entity-Relationship Diagrams: Another tool for requirement specification is the
entity-relationship diagram, often called an "E-R diagram." It is a detailed logical
representation of the data for the organization and uses three main constructs i.e. data
entities, relationships, and their associated attributes.
4. Software Requirement Validation:
After requirement specifications developed, the requirements discussed in this document are
validated. The user might demand illegal, impossible solution or experts may misinterpret the
needs. Requirements can be the check against the following conditions -
New requirements emerge during the process as business needs a change, and a better
understanding of the system is developed.
The priority of requirements from different viewpoints changes during development process.
The business and technical environment of the system changes during the development.
Collection of software requirements is the basis of the entire software development project.
Hence they should be clear, correct, and well-defined.
o Clear
o Correct
o Consistent
o Coherent
o Comprehensible
o Modifiable
o Verifiable
o Prioritized
o Unambiguous
o Traceable
o Credible source
Software Requirements: Largely software requirements must be categorized into two
categories: