Object Oriented Software Engineering Notes BCA Degree 1st Year
Object Oriented Software Engineering Notes BCA Degree 1st Year
Software
Definition : The software (also abbreviated as an SW or S/W) is a collection of data, programs,
procedures, instructions, and documentation that perform various predefined tasks on a computer system or
other electronic device. It enables users to interact with the computer.
It is a non-tangible component of a computer system that enables the hardware to function and perform
various operations. It is a collection of code that is designed to perform a specific task or set of tasks or
operations.
Use of software is increasingly becoming common in our day-to-day life. Most software deal with input of
multiple data types, process it by pre-defined rules, validate the results and produce an output for some
purpose. All software have a goal to achieve.
Software could be intended for
✓ Data processing,
✓ Information processing and sharing,
✓ Communication and control,
✓ Computing and decision making,
✓ Controlling the process based on certain rules and so on.
Types of software :
Software can be categorized into two types : System Software and Application Software.
System software : System software is a type of computer program that is designed to run a computer's
hardware and application programs. A computer system without system software cannot function.
Ex : Operating Systems, Device Drivers, and utility programs that help manage and maintain the system.
The Application software refers to programs that are designed to perform specific tasks for users.
Ex : Word processors, spreadsheets, email clients, web browsers, and video editing software etc.,
Software development is a creative and iterative process that involves developing software from scratch,
adapting existing software, or customizing software to meet specific requirements. It requires a range of
technical skills, including programming languages, software design patterns, and software development
methodologies.
Software can be developed in a variety of programming languages, such as C, C++, Java, Python etc.,
Software can be created using programming languages and tools that enable developers to write and compile
code that can be executed by a computer. Software can also be downloaded or installed from the internet, or
purchased as a physical product such as a CD or USB drive.
Software can be developed by individuals, companies, or open-source communities, and can be distributed
through various channels, such as retail stores, online marketplaces, or direct downloads from the
developer's website. Software can be installed on a local computer or accessed through a web-based
interface.
Components of software : Software is a collection of programs. Any program is a subset of software. The
set of programs become software only if documentation and operating procedure manuals are prepared.
2
Software also includes a set of documents such as the software manuals, meant for users to understand the
software system. Modern software comprises the Source code, Executables, Design Documents,
Operations and System Manuals and Installation Manuals and Implementation Manuals.
Good software :
✓ Software can have number of attributes, which together will decide whether it is good or bad.
✓ The four essential attributes of good software are :
o maintainability, dependability,
o efficiency and usability.
✓ The definition of good software changes with the person who evaluates it. Each one will evaluate the
different attributes differently in order to decide whether the software is good or bad.
✓ The software is required by the customer, used by various end users in the organization and
developed by the software engineer.
3
✓ Good software is software that meets the needs and requirements of its users, reliable, efficient, and easy
to use.
Good software should be secure with built-in protections against threats like hacking and malware,
and it should be compatible with the hardware and software environments. Good software should also be
well-maintained, with regular updates and bug fixes to ensure it continues to function properly over
time.
In addition, good software should be cost-effective. It should be adaptable and must be able to evolve and
meet changing needs over time. Finally, good software should be supported by a helpful and
responsive customer service team that can provide assistance and answer questions as needed.
2. Education Applications: These applications are designed for educational purposes, such as online
learning platforms, virtual classrooms, and Student Information Systems, Student Admission Systems,
student Attendance Management System etc.,
3. Embedded software : Software, when written to perform certain functions under control conditions
and further embedded into hardware as a part of larger systems is called embedded software. It
resides in Read-Only-Memory (ROM) and is used to control the various functions of the products such
as smartphones, smart TVs, washing machines, microwave oven etc.,
4. Design/ Engineering /Scientific software : Design, engineering or scientific softwares deal with
processing requirements in their specific fields. They are used for analysis of engineering data, statistical
data for interpretation and decision-making. CAD (Computer-Aided Design), CAM (Computer-Aided
Manufacturing), CAE (Computer-Aided Engineering) are examples of such software.
5. Healthcare Applications: These applications are designed for healthcare providers and patients, such
as electronic health records (EHRs), telemedicine, and medical billing software.
6. E-commerce Applications: These applications are designed for online shopping, such as shopping
carts, payment gateways, and inventory management systems.
7. Artificial Intelligence (AI) software : It uses non-numerical algorithms, which use the data and
information generated in the system, to solve the complex problems. Expert Systems, Knowledge-based
Systems, image and voice recognition systems, artificial neural networks are examples of AI software.
8. Social Networking Applications: These applications are designed for social interactions, such as
messaging apps, social media platforms, and online communities.
9. Mobile Applications: These applications are designed for mobile devices, such as smart-phones and
tablets, etc.,
10. Gaming Applications: These applications are designed for gaming and can be played on different
platforms such as consoles, computers, and mobile devices.
4
Software Process
Definition :
The Software process refers to the set of activities, methods and techniques that are used to develop,
maintain and improve software. It involves a series of steps that software developers and project teams
follow to design, build, test and deploy software applications. The software process includes a range of
activities to build quality software that satisfies the requirements of stakeholders of the organization.
Framework :
In software engineering, a framework is a
collection of pre-written code, tools, and
libraries that provide a structure and set of
guidelines for building software
applications. Frameworks are designed to be
flexible and customizable allowing developers
to build on top of them to create applications
that meet specific requirements.
Activity :
In software engineering, an activity refers to a
specific task or set of tasks that are performed
to achieve a particular goal in the software
development process. The activities may
include requirements gathering, design, coding,
testing, deployment, and maintenance.
Each activity typically has
o a set of inputs, such as requirements
or design specifications, and
o produces a set of outputs, such as
code or documentation.
Types of activities :
• Generic activities of software process
• Umbrella activities of software process
4. Construction : This activity involves the actual development of the software product using various
programming languages (Java, C, C++, Visual Basic, jQuery, PHP etc.,) and tools, testing the software
product, documenting and integrating the software product.
5. Deployment : Deployment involves preparing the software product for release, including installation,
configuration, and testing in a production environment. It also involves delivering the software product
to the end-users.
6. Maintenance : Maintenance involves modifying the software product to correct defects, improve
performance, or adapt to changing requirements. It also ensure that software should continue to
compatible with new hardware and software environments.
These activities are not performed in a strict sequence, and some activities may overlap or occur
concurrently. The software process is iterative and feedback-driven, meaning that the activities are repeated
until the desired outcome is achieved. Effective management and coordination of these activities are
essential for delivering high-quality software products that meet the stakeholders' requirements.
5. Quality assurance : Quality assurance activities are aimed at ensuring that the software meets the
desired quality standards and is free from defects. It also includes tasks such as software testing, code
reviews and quality audits.
6
6. Software testing : This activity involves verifying that the software product meets the specified
requirements and identifying and fixing any defects or errors. This involves verifying and validating the
software system to ensure that it meets the specified requirements.
8. Deployment : Deployment activities involve deploying the software to the production environment. It
includes tasks such as installation, configuration, and migration of the software.
10. Training : Training activities involve providing training to the developers, users, and other stakeholders
involved in the software development process. It includes tasks such as conducting training sessions,
creating training materials, and providing support to users.
11. Software maintenance : These activities are aimed at managing the changes made to the software
during its development life cycle. They are aimed at modifying and enhancing the software system after
it has been released to fix bugs, add new features, or improve performance. It also includes tasks such as
version control, change control and release management.
These umbrella activities play a crucial role in ensuring the success of the software development process.
They help to ensure that the software is developed efficiently, meets the desired quality standards, and is
delivered on time and within budget.
Software Engineering
Definition :
• According to IEEE, software Engineering is defined as “The application of a systematic, disciplined,
quantifiable approach to the development, operation and maintenance of software”.
• Software engineering can be defined as a systematic approach to develop software within specified time
and budget.
• Software Engineering is an engineering branch associated with the development of software product
using well-defined scientific principles, methods and procedures. The outcome of software engineering
is an efficient and reliable software product.
Definition : Software Engineering is the application of engineering principles, methods and techniques to
the design, development, testing and maintenance of software systems.
SE - Operational Activities :
Software engineering involves a range of activities
o Requirement analysis and definition
o Software scope and determining its boundaries
o Planning, scheduling, executing, monitoring and control of software development
o Testing at all phases for quality assurance as required by the customer
o Documenting the software for its stakeholders
o Implementation through demonstration, installation and execution at customer’s site
Software product will be more effective when the software engineer has
✓ Domain Knowledge of the Software System
✓ Project Management Skills
✓ Higher level Communication skills and leadership qualities
✓ Essential Technology and language skills
7
Software Product : A program is an executable code, which performs a particular task. Software is
considered to be collection of executable programming code, associated libraries and documentations.
Software designed for a specific requirement is called Software Product.
Ex : Telecommunication, Military, Medical sciences, Online shopping, Online Banking, etc.,
The software is the key element in all computer based systems and products. The main objective of
software engineering is to give a framework for building software product with best quality.
Software Engineering - Layered Technology : Software Engineering is a fully layered technology. The
main objective of software engineering layers is to help software developers obtain high-quality software.
There are four types of layers in Software Engineering. To develop software, we need to go from one layer
to another. All these layers are related to each other. It is the application of principles that deals with the
design, development, testing, deployment and management of systems.
ii. Project management tools : These tools are used for project planning, cost and effort estimation,
project scheduling and resource planning. Project management tools help in storing and sharing
project information in real-time throughout the organization.
iii. Process modelling tools : They help the managers to choose a process model or modify it as per
the requirement of software product.
iv. Diagram tools : These tools are used to represent the system structure in a graphical form. They are
also used to represent system components, data and control flow among various software
components.
8
1. Improving software quality : Many software paradigms focus on improving the quality of software
by reducing bugs, improving performance, and increasing reliability.
3. Enhancing productivity : Some software paradigms are designed to help developers work more
efficiently by providing tools and frameworks that simplify the development process.
4. Promoting code reuse : Many software paradigms encourage developers to write reusable code that
can be used across different projects and applications.
✓ The programming problems are decomposed into a number of entities called objects. They built data
and functions around these entities.
✓ Follows bottom-up approach in program design.
✓ Emphasis is on data rather than functions.
✓ Objects may communicate with each other through functions.
✓ New data and functions can be easily added whenever necessary.
Parallel Processing Approach : The processing of program instructions by dividing them among
multiple processors is called parallel processing approach. It contains many number of processors with
the objective of running a program in less time by dividing them into modules. This approach follows
divide and conquer technique.
Examples : Python, MATLAB, Java, R language etc.,
Logic Programming Paradigm : It is a programming paradigm that emphasizes the use of logic and
reasoning to solve problems. It is based on the mathematical concept of predicate logic. Programs are
constructed as sets of logical rules and facts. These rules and facts are used to express the relationships
between objects.
Examples : PROLOG ( PROgramming in LOGic ) ,
Golog ( Goal Language ) specifically designed for robotics and artificial intelligence
applications,
Datalog, Mercury etc.,
Functional Programming Paradigm : Functional programming is a programming paradigm where
software application focuses on development of functions. The Functional Programming paradigm views
all subprograms as functions. They accept zero or multiple arguments and return a single value. It is a
powerful paradigm that is well-suited to a wide range of applications such as data processing, web
development and scientific applications.
Database/Data driven programming approach : In this approach, the database is the primary data
storage and the application is designed to interact with the database to retrieve and manipulate the data.
This approach is mainly used in web applications, where data is stored in a database and accessed through
a web interface. A database program is the heart of business information system and provides file
creation, data entry, update, query and reporting functions.
Examples : Oracle, MySQL, Microsoft SQL Server etc.,
Event-Driven Programming : EDP is a paradigm that emphasizes designing software systems that
respond to events or messages. In an Event-Driven program, when an event occurs the program responds
by executing a corresponding event handler. The software system is designed as a set of loosely coupled
components, where each component responds to events generated by other components. These
components are developed independently, tested separately and modified without affecting the rest of the
system.
Model-Driven Development : MDD is a software design paradigm that focuses on creating software
systems through the use of models. The developers create models that represent various aspects of the
software system, including its functionality, structure, behavior, user interfaces etc., These models can be
created using Unified Modeling Language (UML).
Once these models are created, they can be used to generate the code that make up the software
system. They use automated tools such as model-to-code generators, which take the models as input and
produce executable code as output. MDD improves the productivity and the quality of the software
development while reducing the risk of errors and inconsistencies.
10
Service-Oriented Architecture : SOA is a software design paradigm that emphasizes the use of
services as the building blocks of a software system. It focuses on the development of loosely coupled,
interoperable services that can be combined to form complex applications.
Software development Paradigm : The Software development paradigm is a theoretical framework that
serves as a guide for the development and structure of a software system. It is also known as software
engineering.
Each paradigm has its own strengths and weaknesses, and choosing the right one depends on the
problem domain, the available tools, the goals and specific requirements of the software project.
There are several software processing models that are commonly used in the software development industry.
Some common software processing models include:
1. Waterfall model : This is a linear sequential model where the development process is divided into
different phases such as requirement gathering, design, development, testing, and maintenance. This
model follows a sequential process where each phase must be completed before moving to the next
phase.
2. Spiral Model : The spiral model is a risk-driven process model that combines elements of the
waterfall model and the iterative model. The development process is divided into a series of smaller
cycles called spiral. It looks like a spiral with many loops. The exact number of loops of the spiral is
unknown and can vary from project to project. The exact number of phases needed to develop the
product can be varied by the project manager depending upon the project risks.
o Objective Identification
o Alternative Evaluation
o Product Development
o Next Phase Planning
3. Prototype Model : An initial version of the software system that can be used to obtain feedback
from users and stakeholders, which can then be used to refine and improve the system, is called
Prototype. The prototype model is an iterative process, where multiple prototypes are developed and
refined until the final product meets the desired requirements.
The following are the different categories of prototypes.
• Rapid Throwaway Prototype
• Evolutionary Prototype
• Incremental Prototype
• Extreme Prototype.
4. Iterative model : The Iterative model is similar to the Agile model, in that it involves an iterative
approach to software development. The Iterative model consists of a series of iterative cycles, with each
cycle consisting of planning, design, implementation, and testing. The Iterative model emphasizes
feedback and adaptation, and is often used in complex software development projects.
5. Incremental Model : This is a model where the software development process is broken down into
smaller increments or modules. Each module is developed and tested separately, and then integrated into
the overall system. It is an iterative process model where software is developed in small increments or
iterations. Each increment builds on the previous one, adding more functionality until the software is
complete. This allows early testing and feedback and ensures that the software is delivered in smaller,
more manageable pieces.
6. RAD model : This is a Rapid Application Development model that emphasizes rapid prototyping and
user feedback. It involves an iterative and incremental approach to software development where the
focus is on delivering working software quickly.
7. V-Model : The V-Model is a variation of the Waterfall model, where testing is integrated throughout the
development process. The V-model consists of a series of phases, including requirements analysis,
design, implementation, testing, maintenance and deployment. Each phase has a corresponding testing
phase that verifies and validates the work done in that stage. It ensures that the software meets the
requirements of the previous phase. This ensures that defects are caught early in the development
process.
8. Agile Model : This is an iterative and incremental approach to software development. It emphasizes
flexibility, collaboration, rapid delivery and customer satisfaction. Main objective is on delivering
working software quickly and continuously. It involves breaking the project down into small,
manageable parts, and continuously delivering working software. The software development process is
divided into short cycles called iterations, where each iteration results in a working software product.
Each involves in planning, designing, testing, and releasing a working software product.
These software process models have their own strengths and weaknesses. The choice of model depends on
the specific requirements of the project, team capabilities, and customer needs.
Waterfall Model
The Waterfall Model is software process model developed by Dr. Winston Royce in 1970. It is also called
as a linear-sequential life cycle model. It consists of several distinct phases, where each phase must be
completed before moving on to the next phase. There is no overlapping in the phases.
12
The model is called “waterfall” because the output of one phase serves as the input for the next
phase, and the process flows in a downward direction like a waterfall. It follows iterative and flexible
approaches, as progress flows largely in one direction (“downwards” like a waterfall) through the phases of
requirements gathering, analysis, design, construction, testing, deployment and maintenance.
Requirement Analysis : The requirements gathering and analysis is the first phase in the first phase in the
waterfall model of software development. During this phase, the project team works with the stakeholders
(End-users, Managers, Directors etc., ) to identify and document the requirements for the software project.
System Design : This phase is a critical part, as it sets the foundation for the development of the system.
The design document serves as a blueprint for the developers. It describes the overall system architecture,
the different components of the system and how they interact with each other. The design document serves
as a roadmap for the developers, providing them with a clear understanding of the system architecture and
functionality, and guiding them in the implementation phase.
13
Implementation : The implementation phase is an important phase, where the software takes shape and
becomes a functioning system. During this phase, the software is developed based on the detailed design
document that was created during the design phase. The development team starts coding using programming
languages and tools that are appropriate for the project. The developers must ensure that software is
developed according to the design document and must meet the requirements specified in the SRS (Software
Requirements Specification).
Testing : Testing is a crucial part of the waterfall model, and it is typically done after the implementation
phase. Testing is an iterative process, if any defects are found during testing, they are reported to the
development team, who fixes the issues and re-tests the software. This process continues until the software
meets all the requirements. Once the software has been successfully tested and approved, it can be released
to the end-users.
• Unit testing involves testing individual components of the software.
• Integration testing involves testing the interactions between different components of the software.
• System testing involves testing the entire system as a whole and ensures that it meets all
requirements.
• Acceptance testing involves testing the software with real users.
Deployment : The deployment phase is the key stage in software development process. During this phase,
the software is packaged and prepared for release.
The key activities carried out during this phase include :
o Installation Manuals and configuration procedures are documented.
o The software development teams works closely with the operations team to ensure the software can
be easily deployed.
o Training manuals and necessary support is provided to the end-users.
Maintenance : The maintenance phase is the final phase in the waterfall model of software development.
The software is continuously monitored and updated to ensure that it remains effective and efficient over
long term.
The key activities carried out during this phase include :
o Bug fixing and troubleshooting
o Updates and enhancements
o User support
o Performance optimization
Advantages :
✓ Waterfall model is suitable for software projects that have
o Well-defined set of requirements and
o scope of the project is stable and fixed.
✓ It is particularly useful for large, complex projects where there is need for detailed planning and
documentation.
✓ It provides clear milestones and deliverables, which makes it easier to track progress and identify any
issues or delays.
✓ It places emphasis on documentation (such as requirements documents and design documents) as well as
source code.
Disadvantages :
✓ It requires significant amount of planning and documentation, which can be time-consuming and lead to
inefficient use of resources.
14
✓ Requirement gathering and analysis phase involves collaboration with the customer, but there is limited
customer involvement throughout the rest of the project.
✓ It may not be the best choice for projects where there is changing requirements.
✓ Change in requirements lead to re-design, re-development, re-testing and increased costs.
✓ The waterfall model should move to next phase only when its preceding phase is reviewed and verified.
✓ In less thoroughly designed and documented methodologies, knowledge is lost if team members
leave before the project is completed, and it may be difficult for a project to recover from the loss.
✓ If a fully working design document is present, new team members or even entirely new teams should
be able to familiarize themselves by reading the documents.
Iterative Model
An iterative model is a type of incremental model that involves repetitive processes or steps in
order to develop a software product. The development process is broken down into smaller iterations, and
each iteration focuses on a specific set of tasks. Each iteration consists of Design, Development, Testing and
Review being incorporated into subsequent iterations. The remaining phases, Requirement Gathering and
Analysis, Deployment and Maintenance are one time and doesn't involve in iterations.
In the iterative model, each iteration is a mini-waterfall process that follows the same steps as the
traditional waterfall model. Each iteration is a self-contained project, the output of one iteration is used as
the input for the next iteration.
Requirements Gathering : The development team gathers initial requirements from stakeholders using
techniques such as interviews, surveys and workshops etc., They ensure that all requirements are complete,
consistent and unambiguous. They create a requirements document that outlines all requirements
(Functional and Non-functional ) for the software product.
Analysis : The Analysis phase involves gathering and analyzing information about the client’s
requirements, goals and objectives of the software product. Once the system analysis phase is complete, the
development team moves on to the design phase.
15
After Analysis phase, the iterative development process begins with each iteration consisting of Design,
Deployment, Testing and Review.
Design : The design team creates an architectural design that defines the overall structure of the software
product. It includes system’s components, their interactions and the interfaces between them. They also
create a user interface design that defines how the user will interact with the software product. They create a
database design that defines the structure of the database, including the tables, fields and relationships.
Development : The development process in the iterative model is broken down into a series of iterations.
The software product is developed in increments. Each iteration includes a set of development tasks, which
are carried out by the development team.
Testing : Testing is performed in each iteration to ensure that the product meets the required quality
standards. It is an ongoing process that starts from the first iteration and continues until the final product is
delivered.
Review : During this phase, the development team and stakeholders evaluate the product to determine
whether it meets the specified requirements and whether any changes or improvements are needed. Once the
review phase is complete, they move on to the next iteration, incorporating any necessary changes or
improvements in the next cycle of development. The review phase is repeated for each iteration until the
final product is achieved.
Deployment : The deployment refers to the process of releasing the software product to users after it has
been tested and reviewed. It ensures that the software product is installed, configured and operational in the
target environment.
Maintenance : Maintenance plays a crucial role ensures that software product continues to function
effectively after it has been deployed.
Corrective maintenance : Involves fixing defects or errors that are discovered after software release.
Adaptive maintenance : It involves changes in hardware or operating systems.
Perfective maintenance : It involves improving software functionality, usability without changing
structure.
Preventive maintenance : It involves steps to prevent future problems or defects.
Advantages :
✓ Product is built and improved step by step. So, defect tracking is possible in early phases.
✓ Allows for frequent review from the customer, lead to increased customer satisfaction.
✓ Debugging and testing in a smaller iteration would be easy.
✓ The development team can adapt to changing requirements and respond to feedback from the
customer.
✓ Parallel development can be planned.
✓ It promotes communication and collaboration among team members.
✓ More suitable for agile organizations.
Disadvantages :
✓ Project completion date is not known at the beginning which is a risk.
✓ More resources required.
✓ Not all requirements are gathered in the beginning of the software project.
✓ Limited time spent on documentation and extra time on design.
✓ Not suitable for smaller projects.
✓ Phases overlapping not supported.
16
Spiral Model
The Spiral Model is an iterative software development model that emphasizes risk management throughout
the entire development process. The Spiral Model is a software development process model that combines
elements of both the waterfall model and iterative model. It was introduced by Barry Boehm in 1986 and is
often used in large, complex projects where uncertainty and risk are high.
Risk analysis :
Spiral model is a risk-driven process model, the overall success of a project highly depends on the risk
analysis. It looks like a spiral with many loops. The exact number of loops of the spiral is unknown and can
vary from project to project. The exact number of phases needed to develop the product can be varied by the
project manager depending upon the project risks.
Alternative Evaluation Phase : This is the second quadrant that comes after the Objective Identification
quadrant. The development team creates and evaluates different solutions that address the project goals and
objectives. It includes developing prototypes, models or simulations to test different solutions. They identify
the risks associates with each alternative and evaluates the trade-offs between different solutions.
This quadrant involves the following steps :
o Generate Alternatives
o Evaluate Alternatives
o Identify Risks
o Review and Select Solution
By evaluating alternative solutions, the development team can identify the most feasible solution for
producing high quality software product.
Product Development : It is the third quadrant in the Spiral Model. It comes after the Alternative
Evaluation quadrant. It is critical to the success of the project, as it involves in the actual development and
implementation of the software. This involves coding, testing, integrating different components and
validating the software to ensure that it meets the objectives and requirements identified in the first quadrant.
It involves creating detailed specifications and design documents that outline the functionality,
architecture and features of the product. The development team reviews the product and gathers
feedback from stakeholders. The team uses this feedback to improve the product and make any
necessary changes before moving on to the next quadrant.
Advantages :
✓ The spiral model is more effective in managing risks associated with software development projects.
✓ It follows an iterative approach, which is very flexible and adaptable, so they can be modified to meet
changing requirements.
✓ It encourages customer involvement and feedback throughout the development process. This
ensures that the final product meets the customer's needs and requirements.
✓ It identifies the potential problems before they become major issues.
✓ It is highly flexible and can be customized to suit the specific needs of stakeholders.
✓ It helps in delivering high-quality products, as it emphasizes testing and quality assurance throughout the
development process.
Disadvantages :
✓ The spiral model is not suitable for smaller projects and with limited resources.
✓ The success of the spiral model is heavily dependent on the accuracy of the risk analysis conducted
at each iteration.
✓ It requires lot of planning, analysis and risk management.
✓ It the risks are not identified or managed properly, it can lead to significant problems.
✓ It is more expensive than other software development process models.
✓ It is time-consuming, each iteration can take a significant amount of time to complete.
✓ RAD follows a model-driven approach, where the focus is on developing software prototypes that
can quickly modified based on feedback from end-users.
✓ RAD is useful in situations where speed, collaboration and flexibility are important.
✓ RAD tools provide graphical user interfaces, drag-and-drop components and code generators that help
developers create software applications quickly and easily.
2. Data Modeling Phase : The main objective of this phase is to create a data model for the proposed
system. It serves as a blueprint for the database design and ensures that the software system will meet the
requirements of the stakeholders.
This phase includes the following activities :
o Identifying data entities,
Ex : Order processing system has entities such as Customers, Orders, Products and Employees
o define attributes
Ex :Customer entity has attributes such as custid, name, address, mobile, email etc.,
o identifying relationships such as customers, orders, products and employees
Ex : A “Customer” can place multiple “orders” and An “Order” may have multiple “products”.
o Creating an Entity-Relationship (ER) diagram
o Normalizing the data model
o Creating a Physical data model
o Defining data constraints
o Creating data dictionary
o Reviewing and refining the data model
3. Process Modeling Phase : In this phase, business analysts and the developers work together to create
detailed process flow diagrams and data models that provides a clear blueprint for the
development team. This phase is a key component in the RAD methodology and ensures the success
of the project.
The phase includes the following activities :
o Defining the project scope
20
4. Application Modeling Phase : In this phase the actual application software is developed using the
requirements gathered in the previous phases. The development team uses various tools such as visual
programming languages, code generators and CASE (Computer Aided Software Engineering) tools to
speed up the development process and ensures that it meets the functional requirements of the end-users.
5. Testing Modeling Phase : It is an important phase that occurs after the Application Modeling Phase. It
helps to ensure that the developed application is of high quality and meets the end-user’s requirements.
Testing is carried out at different levels. It involves various types of testing including unit testing,
integration testing, system testing and acceptance testing. Once testing phase is complete, the software is
handed over to the end-users for deployment. The turnover phase involves documenting the software,
preparing user manuals, technical manuals, provide support for maintenance and future development.
RAD - Advantages :
✓ RAD allows for faster development of software applications, because it focus on rapid prototyping,
iterative development and concurrent testing.
✓ RAD is suitable for projects with a high degree of uncertainty or ambiguity.
✓ It enables stakeholders to see working version of the system.
✓ RAD encourages close collaboration between stakeholders, developers and testers.
✓ RAD is a flexible methodology that allows developers to make changes quickly and easily.
RAD - Disadvantages :
✓ The software developed using RAD model can be more complex than software developed using
traditional methodologies.
✓ RAD is ideal for smaller-scale projects, but it may not be suitable for larger and more complex
projects.
✓ RAD requires a highly skilled development team with expertise in multiple areas.
✓ The fast-paced, iterative nature of RAD can lead to a higher risk of errors and bugs, which can
impact the quality of the product.
✓ RAD often prioritizes speed over documentation, which can result in a lack of clear documentation
or technical specifications.
✓ This can make it difficult for other developers to maintain or modify the software over time.
21
Prototype Model
Prototype : An initial version of the software system that can be used to obtain feedback from users
and stakeholders, which can then be used to refine and improve the system, is called Prototype. The
prototype model is an iterative process, where multiple prototypes are developed and refined until the final
product meets the desired requirements.
The prototype model is a software development methodology that emphasizes the creation of a working
model of a software system to demonstrate its functionality to users and stakeholders.
22
Types of Prototypes :
The following are the different categories of prototypes.
• Rapid Throwaway Prototype
• Evolutionary Prototype
• Incremental Prototype
• Extreme Prototype.
Requirements Gathering : During the requirements gathering phase, the development team works closely
with the stakeholders to identify and document the system's functional and non-functional requirements.
These requirements may include features, usability, performance, reliability and other factors that are
important for the success of the software system.
Quick Design : Development team develops the initial prototype of the system with basic requirements.
These features are used in quick design and it may not work exactly in the same manner as the final
software product. The overall look and feel would be same as the original product.
Building prototypes : The primary goal of building a prototype is to test and validate the requirements
before investing significant time and resources into the final product. It's important to keep the prototype
simple, functional and easy to test.
Customer Evaluation : Once the prototype build, it must be sent to customer, stakeholders and clients
for the review. Clients check for the functionality and gives feedback to the development team.
Customer Feedback : Gathering feedback from users and stakeholders, can help to identify common
issues, refine the design and improve the overall user experience. If any review comments or any
improvement suggestions, the development team has to take them and move to quick design phase again.
This feedback helps the developers and designers work on the prototype to incorporate feedback
comments. Once the design modified, again sends for client review. This process will continue
until no review comments from client or gets a client signoff to proceed with design and development.
Design : It is an important phase where the requirements gathered are transformed into a detailed plan for
creating the software. The goal of design phase is to create a blueprint that outlines how the software will
function, how it will be implemented, and how it will meet the user's needs.
Coding : The goal of coding is to create a software application that can perform a specific set of tasks.
Coding is the process of writing instructions in a particular programming language. It is also known as
programming.
Testing : Testing plays a crucial role in ensuring the quality and reliability of the software. During the
testing phase, the focus is on verifying the functionality of the software and identifying any defects or issues
that may affect the software system.
Deployment : The deployment phase is critical to the success of the software system. It typically follows
the testing phase. Deployment refers to the process of making the software application work on a target
device, it may be a test server, production environment or user's computer or mobile device.
Maintenance : It is an important aspect that ensures the prototype is functioning properly and meets the
expectations of stakeholders.
Advantages :
✓ Easy to detect errors in the initial stage.
✓ Flexibility in designing.
✓ Helps in effective team communication.
✓ Easy to identify the missing functionality.
23
Disadvantages :
✓ It is not suitable for small businesses or startups having limited resources.
✓ Documentation is poor.
✓ The process of building a prototype can be time-consuming, if the prototype needs to be developed
and tested multiple times.
✓ Developing multiple prototypes can be costly and slow down the overall development process.
✓ It leads to delays in product launch.
✓ If the prototype is rejected, cost of design and developing prototype becomes waste.
✓ Large amount of change requests are accepted.
Types of Requirements
Definition : The functional and non-functional specifications that the software system must satisfy in
order to meet the needs of its users and stakeholders are called software requirements. The requirements
are identified during the software development process through collaboration between the project team and
stakeholders. These requirements serve as the foundation for the entire software development
process and provide a clear understanding of proposed system, ensuring that all stakeholders have a
shared vision of the project.
The process of defining software requirements involves identifying the needs of all stakeholders,
including end-users, customers, managers and developers. This involves gathering, analyzing,
prioritizing, and documenting the requirements in a clear, concise, and organized manner.
The software requirements play a critical role in ensuring the success of software development
projects to ensure that the final product meets the needs of its users, is delivered on time and within
budget and of high quality.
2. Non-functional requirements : The requirements that does not support functional requirements are
called non-functional requirements. They describe the quality attributes of the software system, such as
performance, scalability, reliability, and security.
Right Way :
• The system should respond in less than 2 seconds.
• The system should be available to the user without any crash.
• The system should run on devices having RAM lower than 1GB.
• The system should store data upto 300GB.
• The system should be able to run on Windows, Linux and Mac OS.
• The system should load a web page within 2 seconds.
Business Requirements : They specify high level goals and objectives and needs of a business that must
satisfy by the software system.
Ex : Increase Sales Revenue by 20% within the next year.
User requirements : They specify the needs and expectations of the end users such as the tasks they need
to perform, the information they need to access and the user interface they must prefer etc.,
Ex : They should provide clear and informative feedback to users when errors or issues occur.
System Requirements : They specify the technical requirements of the system including the hardware,
software and network infrastructure needed to support the system’s functionality.
Ex : The system must be able to operate within specific hardware requirements such as processor speed,
memory and storage capacity.
Interface requirements : They describe the specifications and capabilities of user interface of the
software system.
Ex : The system must be responsive to user inputs with buttons and menus that are easy to click & navigate.
Domain requirements : The requirements that are specific to the domain in which the software system
will be implemented are called domain requirements. They describe the specific characteristics and
constraints of that particular domain.
Ex : In Health Care Management System, the system should allow the patients to access their medical
records and communicate with their healthcare providers.
25
Performance requirements : They specify the system’s performance characteristics such as response
time, throughput and scalability.
Ex : The system maintains good performance, the application can handle high network traffic growth.
Inverse Requirements : Those requirements that describe what the system should not do are called
inverse requirements. They are used to specify constraints and limitations on the software system’s behavior.
Ex : In Banking Application, the system should not allow the users to withdraw more than their available
balance.
Regulatory Requirements : They specify the legal requirements that the system must follow in terms of
data privacy laws, security standards and accessibility.
Ex : The system must describe the labor laws and regulations with minimum working hours.
By identifying and addressing these different types of requirements, software developers can ensure that the
software system they are building meets the needs and expectations of all stakeholders, customers, internal
as well as external users.
Requirement Analysis
The requirement analysis is a critical step in ensuring the success of a software development project. It helps
to ensure that the final product meets the needs of its users, is delivered on time and within budget and is of
high quality.
A Business Analyst is a member of software requirement team whose job is to elicit, analyze,
document, validate and pass the requirements to other team members. He acts as a bridge between the
customer and the development team.
Requirement analysis is critical to the success or failure of software project. It ensure that the final product
meets the needs of its users and also ensures that it is designed and implemented in efficient and effective
manner. The Requirement Analysis typically involves the following steps:
Eliciting requirements (or) Gathering Requirements : Gather requirements from all stakeholders
(users, customers and subject matter experts etc., ) using techniques such as interviews, surveys, workshops
etc., Document these requirements in a consistent and organized manner.
Analyzing requirements : Requirements are analyzed to identify any conflicts, inconsistencies or missing
information. It involves breaking down the requirements into manageable pieces, identifying any conflicts or
ambiguities, and prioritizing the most important requirements.
26
Specifying requirements (or) Documenting the requirements : This involves documenting the
requirements in a clear, concise manner and organized manner, using standardized formats such as use
cases, user stories and functional requirements documents. This helps ensure that everyone has a shared
understanding of the requirements that were negotiated.
Organize the requirements : Organize the requirements in a logical and consistent manner, using
heading, subheadings and bullet points to improve readability.
Validating requirements : Review the requirements with stakeholders and validate them to ensure that
they are complete, accurate and meet the needs of all stakeholders. Test the requirements against real-world
scenarios and verifying that they meet the needs of the business and its users.
Prioritize requirements : Prioritize the requirements based on their importance and relevance to the
project goals. This helps identify the requirements that are most critical and need to be negotiated.
1. Brainstorming :
This technique is used to generate new ideas and find a solution for a specific issue. The members
included for brainstorming can be domain experts, subject matter experts. Multiple ideas and
information give you a repository of knowledge and you can choose from different ideas.
Brainstorming technique is used to answer the below questions :
• What is the expectation of a system?
• What are the risk factors that affect the proposed system development?
• What are the business and organization rules required to follow?
• What are the options available to resolve the current issues?
• What should we do so that this particular issue does not happen in the future? -
There are some basic rules for this technique which should be followed to make it a success:
• The time limit for the session should be predefined.
• Identify the participants in advance.
• One should include 6-8 members for the session.
• The agenda should be clear enough for all the participants.
• Once you get all the information, combine the ideas, and remove the duplicate ideas.
• Once the final list is ready, distribute it among other parties.
27
Benefits :
• Creative thinking is the result of the brainstorming session.
• Plenty of ideas in a short time.
• Promotes equal participation.
Drawbacks :
• Participants can be involved in debating ideas.
• There can be multiple duplicate ideas.
2. Interview : If the interviewer has a predefined set of questions then it’s called a structured
interview. If the interviewer is not having any particular format or any specific questions then it’s
called an unstructured interview. Interview techniques should be used for building strong relationships
between business analysts and stakeholders. The interviewer directs the question to stakeholders to
obtain information. One to one interview is the most commonly used technique.
Basic Rules : The overall purpose of performing the interviews should be clear. Identify the
interviewees in advance. Interview goals should be communicated to the interviewee. Interview
questions should be prepared before the interview. The location of the interview should be predefined.
The time limit should be described. The interviewer should organize the information and confirm the
results with the interviewees as soon as possible after the interview.
Benefits :
• Interactive discussion with stakeholders.
• The immediate follow-up to ensure the interviewer’s understanding.
• Encourage participation and build relationships by establishing rapport with the stakeholder.
Drawbacks :
• Time is required to plan and conduct interviews.
• Commitment is required from all the participants.
• Sometimes training is required to conduct effective interviews.
3. Document Analysis/Review :
This technique is used to gather business information by reviewing/examining the available materials
that describe the business environment. This analysis is helpful to validate the implementation of current
solutions. It includes reviewing the business plans, technical documents, problem reports, existing
requirement documents, etc. This is useful when the plan is to update an existing system. This technique
is useful for migration projects.
Benefits :
• Existing documents can be used to compare current and future processes.
• Existing documents can be used as a base for future analysis.
Drawbacks :
• Existing documents might not be updated.
• Existing documents might be completely outdated.
• Resources worked on the existing documents might not be available to provide information.
• This process is time-consuming.
4. Interface Analysis :
Interface analysis is used to review the system, people, and processes. This analysis is used to identify
how the information is exchanged between the components. An Interface can be described as a
connection between two components.
28
Benefits :
• Provide missed requirements.
• Determine regulations or interface standards.
• Uncover areas where it could be a risk for the project.
Drawbacks :
• The analysis is difficult if internal components are not available.
• It cannot be used as a standalone elicitation activity.
5. Observation :
The main objective of the observation session is to understand the activity, task, tools used and events
performed by others.
During the session, all stakeholders are aware of the purpose of the observation session, the observer
should record all the activities and the time taken to perform the work by others so that he/she can
simulate the same. After the session, the Business Analyst will review the results and will follow up with
the participants. Observation can be either active or passive.
Active observation is to ask questions and try to attempt the work that other persons are doing.
Passive observation is silent observation i.e. you sit with others and just observe how they are doing
their work without interpreting them.
Benefits :
• The observer will get a practical insight into the work.
• Improvement areas can be easily identified.
Drawbacks :
• Participants might get disturbed.
• Participants might change their way of working during observation and the observer might not
get a clear picture.
• Knowledge-based activities cannot be observed.
6. Joint Application Development (JAD)/ Requirement Workshops : This technique is more
process-oriented and formal as compared to other techniques. These are structured meetings involving
end-users, PMs, SMEs. This is used to define, clarify, and complete requirements.
This technique can be divided into the following categories:
Formal Workshops : These workshops are highly structured and are usually conducted with the
selected group of stakeholders. The main focus of this workshop is to define, create, refine, and reach
closure on business requirements. Business Process Improvement Workshops: These are less formal as
compared to the above one. Here, existing business processes are analyzed and process improvements
are identified.
Benefits :
• Documentation is completed within hours and is provided quickly back to participants for
review.
• You can get on the spot confirmation on requirements.
• Successfully gathered requirements from a large group in a short period.
• Consensus can be achieved as issues and questions are asked in the presence of all the
stakeholders.
Drawbacks :
• Stakeholder’s availability might ruin the session.
• The success rate depends on the expertise of the facilitator.
• A workshop motive cannot be achieved if there are too many participants.
29
Analysis Model
Analysis Model : In object-oriented software engineering, Technical representation of the software
system is called Analysis Model. An analysis model is a representation of the requirements of a
software system that captures the needs and constraints of the stakeholders. It acts as a link between
“system description” and “design model”.
Data Dictionary :
A data dictionary is a document or file that provides a detailed description of the entities, their attributes
and relationships used in a database. The Data Dictionary ensures consistency and accuracy of data in the
database. It can be used by data analysts, database administrators, programmers, and other stakeholders to
understand the logical structure of the given system.
30
A data flow diagram can have different levels of detail, ranging from a high-level overview of the
system to a detailed description of individual processes and data elements.
Entities : These are external sources or destinations of data. Entities represent people,
organizations, or other systems that interact with the system being modeled.
Processes : These are activities or actions that transform the data. Processes take input data,
manipulate it and produce output data.
Data flows : These are arrows that represent the movement of data between entities, processes and
data stores. Data flows show the direction in which data moves and the format in which it is transmitted.
Data stores : These are repositories of data that are stored and maintained within the
system. Data stores represent places where data is stored and retrieved.
For example, a customer entity might have attributes such as name, address and phone number.
Entities are connected to each other through relationships, which describe how they are related to each
other. The following are the types of relationships:
one-to-one each entity is connected to only one other entity
one-to-many one entity is connected to multiple instances of another entity
many-to-one multiple instances of one entity are connected to one instance of another entity
many-to-many multiple instances of one entity are connected to multiple instances of another entity
State Transition Diagram : It represents the dynamic model, which shows changes in the state that an
object goes through during its lifetime in response to an event.
It shows various modes of behavior (states) of the system and also shows the transitions from one state to
another state in the system. It also provides the details of how the system behaves due to the consequences
of external events. It represents the behavior of a system by presenting its states and the events that cause the
system to change state. It also describes what actions are taken due to the occurrence of a particular event.
Process Specification :
It stores the description of each function present in the data flow diagram. It describes the input to a
function, the algorithm that is applied for the transformation of input, and the output that is produced. It also
shows regulations and barriers imposed on the performance characteristics that are applicable to the process
and layout constraints that could influence the way in which the process will be implemented.
Control Specification :
It stores additional information about the control aspects of the software. It is used to indicate how the
software behaves when an event occurs and which processes are invoked due to the occurrence of the event.
It also provides the details of the processes which are executed to manage events.