Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 11

CHAPTER 1

1.What is Software ?
ANS. Software is a set of instructions, programs, or data used to operate computers and
execute specific tasks. It is intangible and contrasts with hardware, which refers to the
physical components of a computer system.
Definition: Software refers to a collection of programs, data, and routines that instruct a
computer on how to perform specific tasks.
Types of Software:
System Software: Controls and manages the hardware and provides a platform for
running application software. Examples include operating systems, device drivers, and
utility programs.
Application Software: Helps users perform specific tasks. Examples include word
processors, web browsers, and graphic design programs.
Development Process: Software is typically developed using programming languages
and tools. The process involves writing code, testing, debugging, and maintaining the
software to ensure it meets the desired requirements.
Importance: Software is essential for the functionality of modern devices and systems. It
enables computers to perform tasks efficiently, automate processes, and provide
solutions for various industries and sectors.
Evolution: Software has evolved over time, from simple programs to complex systems.
Advances in technology have led to the development of sophisticated software that
powers a wide range of applications and services.
Challenges: Software development faces challenges such as bugs, security
vulnerabilities, and compatibility issues. Developers work to address these challenges
through testing, updates, and security measures.
Future Trends: The future of software development is likely to be influenced by trends
such as artificial intelligence, machine learning, and the Internet of Things. These
technologies will drive innovation in software design and functionality, shaping the
digital landscape.

2.What is software engineering ?


ANS. A software engineering paradigm refers to a method or approach used in the
development of software. It encompasses a set of principles, practices, and techniques
that guide the process of software development. Different paradigms emphasize
different aspects of software development, such as requirements analysis, design,
coding, testing, and maintenance. Common software engineering paradigms include:
Waterfall Model: A linear sequential approach where each phase must be completed
before moving on to the next. It includes phases such as requirements, design,
implementation, testing, and maintenance.
Iterative and Incremental Development: This approach breaks the software
development process into smaller, more manageable iterations. Each iteration includes
planning, requirements analysis, design, implementation, and testing, with each
iteration building upon the previous one.
Agile Development: A flexible and iterative approach that emphasizes collaboration,
customer feedback, and the ability to respond to change. It includes practices such as
Scrum, Kanban, and Extreme Programming (XP).
DevOps: A paradigm that combines software development (Dev) with IT operations
(Ops) to shorten the systems development life cycle and provide continuous delivery of
high-quality software.
Model-Driven Engineering: Focuses on using models to design and develop software
systems. It involves creating models that represent various aspects of the software,
which can then be used to generate code or documentation.
Component-Based Development: A paradigm that emphasizes the use of reusable
software components to build systems. It involves assembling pre-built components to
create larger software systems.
Definition of Software Engineering:
Software engineering is the systematic application of engineering approaches to the
development, operation, and maintenance of software. It involves the use of disciplined,
quantifiable, and systematic processes to develop software products efficiently and
reliably. Software engineering encompasses a wide range of activities, including
requirements analysis, design, coding, testing, and maintenance. The goal of software
engineering is to produce high-quality software that meets the needs of users, is
delivered on time and within budget, and is maintainable and scalable.

3.Linear Sequential Model /Waterfall Model/SDLC Model


The waterfall model is useful in situations where the project requirements are well-
defined and the project goals are clear. It is often used for large-scale projects with long
timelines, where there is little room for error and the project stakeholders need to have
a high level of confidence in the outcome.
Features of the SDLC Waterfall Model
Sequential Approach: The waterfall model involves a sequential approach to software
development, where each phase of the project is completed before moving on to the next
one.
Document-Driven: The waterfall model relies heavily on documentation to ensure that
the project is well-defined and the project team is working towards a clear set of goals.
Quality Control: The waterfall model places a high emphasis on quality control and
testing at each phase of the project, to ensure that the final product meets the
requirements and expectations of the stakeholders.

Advantages of the SDLC Waterfall Model


1.Easy to Understand: The Classical Waterfall Model is very simple and easy to
understand.
2.Individual Processing: Phases in the Classical Waterfall model are processed one at a
time.
3.Properly Defined: In the classical waterfall model, each stage in the model is clearly
defined.
4.Clear Milestones: The classical Waterfall model has very clear and well-understood
milestones.
5.Properly Documented: Processes, actions, and results are very well documented.
Disadvantages of the SDLC Waterfall Model
1.No Feedback Path: In the classical waterfall model evolution of software from one
phase to another phase is like a waterfall. It assumes that no error is ever committed by
developers during any phase. Therefore, it does not incorporate any mechanism for
error correction.
2.Difficult to accommodate Change Requests: This model assumes that all the customer
requirements can be completely and correctly defined at the beginning of the project,
but the customer’s requirements keep on changing with time. It is difficult to
accommodate any change requests after the requirements specification phase is
complete.
3.No Overlapping of Phases: This model recommends that a new phase can start only
after the completion of the previous phase. But in real projects, this can’t be
maintained. To increase efficiency and reduce cost, phases may overlap.
Applications of SDLC Waterfall Model
1.Large-scale Software Development Projects: The Waterfall Model is often used for
large-scale software development projects, where a structured and sequential approach
is necessary to ensure that the project is completed on time and within budget.
2.Safety-Critical Systems: The Waterfall Model is often used in the development of
safety-critical systems, such as aerospace or medical systems, where the consequences of
errors or defects can be severe.
3.Government and Defense Projects: The Waterfall Model is also commonly used in
government and defense projects, where a rigorous and structured approach is
necessary to ensure that the project meets all requirements and is delivered on time.
Phases
1. Feasibility Study:
The main goal of this phase is to determine whether it would be financially and
technically feasible to develop the software.
The feasibility study involves understanding the problem and then determining the
various possible strategies to solve the problem. These different identified solutions are
analyzed based on their benefits and drawbacks, The best solution is chosen and all the
other phases are carried out as per this solution strategy.
2. Requirements Analysis and Specification:
The requirement analysis and specification phase aims to understand the exact
requirements of the customer and document them properly. This phase consists of two
different activities.
Requirement gathering and analysis: Firstly all the requirements regarding the
software are gathered from the customer and then the gathered requirements are
analyzed. The goal of the analysis part is to remove incompleteness (an incomplete
requirement is one in which some parts of the actual requirements have been omitted)
and inconsistencies (an inconsistent requirement is one in which some part of the
requirement contradicts some other part).
Requirement specification: These analyzed requirements are documented in a software
requirement specification (SRS) document. SRS document serves as a contract between
the development team and customers. Any future dispute between the customers and
the developers can be settled by examining the SRS document.
3. Design:
The goal of this phase is to convert the requirements acquired in the SRS into a format
that can be coded in a programming language. It includes high-level and detailed design
as well as the overall software architecture. A Software Design Document is used to
document all of this effort (SDD).
4. Coding and Unit Testing:
In the coding phase software design is translated into source code using any suitable
programming language. Thus each designed module is coded. The unit testing phase
aims to check whether each module is working properly or not.
5. Integration and System testing:
Integration of different modules is undertaken soon after they have been coded and unit
tested. Integration of various modules is carried out incrementally over several steps.
During each integration step, previously planned modules are added to the partially
integrated system and the resultant system is tested. Finally, after all the modules have
been successfully integrated and tested, the full working system is obtained and system
testing is carried out on this.
System testing consists of three different kinds of testing activities as described below.
Alpha testing: Alpha testing is the system testing performed by the development team.
Beta testing: Beta testing is the system testing performed by a friendly set of customers.
Acceptance testing: After the software has been delivered, the customer performs
acceptance testing to determine whether to accept the delivered software or reject it.
6. Maintenance:
Maintenance is the most important phase of a software life cycle. The effort spent on
maintenance is 60% of the total effort spent to develop a full software. There are three
types of maintenance.
Corrective Maintenance: This type of maintenance is carried out to correct errors that
were not discovered during the product development phase.
Perfective Maintenance: This type of maintenance is carried out to enhance the
functionalities of the system based on the customer’s request.
Adaptive Maintenance: Adaptive maintenance is usually required for porting the
software to work in a new environment such as working on a new computer platform or
with a new operating system.

4.Rapid application development model (RAD)


The critical feature of this model is the use of powerful development tools and
techniques. A software project can be implemented using this model if the project can be
broken down into small modules wherein each module can be assigned independently to
separate teams. These modules can finally be combined to form the final product.
Development of each module involves the various basic steps as in the waterfall model
i.e. analyzing, designing, coding, and then testing, etc. as shown in the figure. Another
striking feature of this model is a short period i.e. the time frame for delivery(time-box)
is generally 60-90 days.

Objectives of Rapid Application Development Model (RAD)


1. Speedy Development
Accelerating the software development process is RAD’s main goal. RAD prioritizes
rapid prototyping and iterations to produce a working system as soon as possible. This
is especially helpful for projects when deadlines must be met.
2. Adaptability and Flexibility
RAD places a strong emphasis on adapting quickly to changing needs. Due to the
model’s flexibility, stakeholders can modify and improve the system in response to
changing requirements and user input.
3. Stakeholder Participation
Throughout the development cycle, RAD promotes end users and stakeholders’ active
participation. Collaboration and frequent feedback make it possible to make sure that
the changing system satisfies both user and corporate needs.
Advantages of Rapid Application Development Model (RAD)
1.The use of reusable components helps to reduce the cycle time of the project.
2.Feedback from the customer is available at the initial stages.
3.Reduced costs as fewer developers are required.
4.The use of powerful development tools results in better quality products in
comparatively.
5.The progress and development of the project can be measured through the various
stages.
Disadvantages of Rapid application development model (RAD)
1.The use of powerful and efficient tools requires highly skilled professionals.
2.The absence of reusable components can lead to the failure of the project.
3.The team leader must work closely with the developers and customers to close the
project on time.
4.The systems which cannot be modularized suitably cannot use this model.
5.Customer involvement is required throughout the life cycle.
Applications of Rapid Application Development Model (RAD)
1.This model should be used for a system with known requirements and requiring a
short development time.
2.It is also suitable for projects where requirements can be modularized and reusable
components are also available for development.
3.The model can also be used when already existing system components can be used in
developing a new system with minimum changes.
4.This model can only be used if the teams consist of domain experts. This is because
relevant knowledge and the ability to use powerful techniques are a necessity.
5.The model should be chosen when the budget permits the use of automated tools and
techniques required.

5.Spiral Model
The Spiral Model is a Software Development Life Cycle (SDLC) model that provides a
systematic and iterative approach to software development. In its diagrammatic
representation, looks like a spiral with many loops. The exact number of loops of the
spiral is unknown and can vary from project to project. Each loop of the spiral is called
a Phase of the software development process.
PHASES
1. Planning
The first phase of the Spiral Model is the planning phase, where the scope of the project
is determined and a plan is created for the next iteration of the spiral.
2. Risk Analysis
In the risk analysis phase, the risks associated with the project are identified and
evaluated.
3. Engineering
In the engineering phase, the software is developed based on the requirements gathered
in the previous iteration.
4. Evaluation
In the evaluation phase, the software is evaluated to determine if it meets the customer’s
requirements and if it is of high quality.
5. Planning
The next iteration of the spiral begins with a new planning phase, based on the results of
the evaluation.
The Spiral Model is often used for complex and large software development projects, as
it allows for a more flexible and adaptable approach to software development. It is also
well-suited to projects with significant uncertainty or high levels of risk.
The Radius of the spiral at any point represents the expenses(cost) of the project so far,
and the angular dimension represents the progress made so far in the current phase.
Advantages of the Spiral Model
1.Risk Handling: The projects with many unknown risks that occur as the development
proceeds, in that case, Spiral Model is the best development model to follow due to the
risk analysis and risk handling at every phase.
2.Good for large projects: It is recommended to use the Spiral Model in large and
complex projects.
3.Flexibility in Requirements: Change requests in the Requirements at a later phase can
be incorporated accurately by using this model.
4.Customer Satisfaction: Customers can see the development of the product at the early
phase of the software development and thus, they habituated with the system by using it
before completion of the total product.
5.Iterative and Incremental Approach: The Spiral Model provides an iterative and
incremental approach to software development, allowing for flexibility and adaptability
in response to changing requirements or unexpected events.
Disadvantages of the Spiral Model
1.Complex: The Spiral Model is much more complex than other SDLC models.
2.Expensive: Spiral Model is not suitable for small projects as it is expensive.
3.Too much dependability on Risk Analysis: The successful completion of the project is
very much dependent on Risk Analysis. Without very highly experienced experts, it is
going to be a failure to develop a project using this model.
4.Difficulty in time management: As the number of phases is unknown at the start of the
project, time estimation is very difficult.
5.Complexity: The Spiral Model can be complex, as it involves multiple iterations of the
software development process.

6.Capability Maturity Model (CMM)


It is based on profound feedback and development practices adopted by the most
successful organizations worldwide. This model describes a strategy for software
process improvement that should be followed by moving through 5 different levels.
Each level of maturity shows a process capability level. All the levels except level 1 are
further described by Key Process Areas (KPA).
Optimization of Resources: CMM helps businesses make the best use of all of their
resources, including money, labor, and time. Organizations can improve the
effectiveness of resource allocation by recognizing and getting rid of unproductive
practices.
Comparing and Evaluating: A formal framework for benchmarking and self-evaluation
is offered by CMM. Businesses can assess their maturity levels, pinpoint their
advantages and disadvantages, and compare their performance to industry best
practices.
Management of Quality: CMM emphasizes quality management heavily. The
framework helps businesses apply best practices for quality assurance and control,
which raises the quality of their goods and services.
Levels of CMMI:
Level 1: Initial: Processes are often ad hoc and unpredictable. There is little or no
formal process in place.
Level 2: Managed: Basic project management processes are established. Projects are
planned, monitored, and controlled.
Level 3: Defined: Organizational processes are well-defined and documented.
Standardized processes are used across the organization.
Level 4: Quantitatively Managed: Processes are measured and controlled using
statistical and quantitative techniques. Process performance is quantitatively
understood and managed.
Level 5: Optimizing: Continuous process improvement is a key focus. Processes are
continuously improved based on quantitative feedback.

You might also like