OOSEunit 1
OOSEunit 1
Software is more than just a program code. A program is an executable code, which serves
some computational purpose. Software is considered to be a collection of executable
programming code, associated libraries and documentations. Software, when made for a
specific requirement is called software product.
A program, also called an application or software, is a set of instructions that process input,
manipulate data, and output a result.
Engineering on the other hand, is all about developing products, using well-defined,
scientific principles and methods.
So, we can define software engineering as 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.
1.3: Types of Software
Software is used to control a computer. There are different types of software that can
run on a computer: system software, utility software, and application software.
1. System software: It aids a user and the hardware to function and interact with
each other. Basically, it is software to manage computer hardware behavior to provide
basic functionalities to users. Examples: windows, IOS, Linux.
2. Utility software: Utility software is part of the system software and performs
specific tasks to keep the computer running. Utility software is always running in the
background. Examples of utility software are security and optimization programs.
3. Application Software: also known as end-user programs or productivity
programs, help the user in completing tasks such as doing online research, jotting down
notes, setting the alarm, designing graphics, keeping an account log, doing calculations,
or even playing games. They lie above the system software.
1.4: History of Software:
Computer scientist Tom Kilburn is responsible for writing the world’s very first piece of software,
which was run at 11 a.m. on June 21, 1948, at the University of Manchester in England.
The SSEM was programmed to perform mathematical calculations using machine code
instructions. This first piece of software took “only” 52 minutes to correctly compute the
greatest divisor of 2 to the power of 18 (262,144).
In the 1970s and 1980s, software hit the big time with the arrival of personal computers. Apple
released the Apple II, its revolutionary product, to the public in April 1977. VisiCalc, the first
spreadsheet software for personal computing, was wildly popular and known as the Apple II’s
killer app. The software was written in specialized assembly language and appeared in 1979.
Other companies like IBM soon entered the market with computers such as the IBM PC, which
first launched in 1981.
SDLC: Software Development Lifecycle
The Software Development Life Cycle (SDLC) refers to a methodology with clearly defined
processes for creating high-quality software. in detail, the SDLC methodology focuses on the
following phases of software development:
• Requirement analysis
• Planning
• Software design such as architectural design
• Software development
• Testing
• Deployment
Requirements Analysis:
“What are the current problems?” This stage of the SDLC means getting input from all
stakeholders, including customers, salespeople, industry experts, and programmers. Learn the
strengths and weaknesses of the current system with improvement as the goal.
Planning phase
The planning phase encompasses all aspects of project and product management. This typically
includes resource allocation, capacity planning, project scheduling, cost estimation, and
provisioning.
Design
In this phase, the requirement gathered in the software requirements specification (SRS)
document is used as an input and software architecture that is used for implementing system
development is derived.
Implementation or Coding (software development)
Implementation/Coding starts once the developer gets the Design document. The Software
design is translated into source code. All the components of the software are implemented in
this phase.
Testing
Testing starts once the coding is complete and the modules are released for testing. In this
phase, the developed software is tested thoroughly and any defects found are assigned to
developers to get them fixed.
Deployment
Once the product is tested, it is deployed in the production environment or first UAT (User
Acceptance testing) is done depending on the customer expectation.
1.5: Software Process and Framework:
Framework is a Standard way to build and deploy applications. Software Process Framework is a
foundation of complete software engineering process. Software process framework includes all
set of umbrella activities. It also includes number of framework activities that are applicable to
all software projects.
Software processes in software engineering refer to the methods and techniques used to
develop and maintain software. A software process (also known as software methodology) is a
set of related activities that leads to the production of the software. These activities may
involve the development of the software from the scratch, or, modifying an existing system.
Any software process must include the following four activities:
• Software specification (or requirements engineering): Define the main functionalities of the
software and the constraints around them.
• Software design and implementation: The software is to be designed and programmed.
• Software verification and validation: The software must conform to its specification and meet
the customer's needs.
• Software evolution (software maintenance): The software is being modified to meet customer
and market requirements changes.
The phases of the waterfall model are: Requirements, Design, Implementation, Testing, and
Maintenance.
A variation in the representation of the waterfall model is called the V-model. V- Model is also
known as Verification and Validation Model. In this model Verification & Validation goes hand in
hand i.e. development and testing goes parallel. V model and waterfall model are the same
except that the test planning and testing start at an early stage in V-Model.
Advantages of V – Model:
Disadvantages of V-Model:
Spiral Model:
Spiral model phases are followed in the iterations. The loops in the model represent the phase
of the SDLC process i.e. the innermost loop is of requirement gathering & analysis which follows
the Planning, Risk analysis, development, and evaluation. Next loop is Designing followed by
Implementation & then testing.
• It includes estimating the cost, schedule and resources for the iteration. It
also involves understanding the system requirements for continuous
Planning
communication between the system analyst and the customer
Incremental Model?
Incremental Model is a process of software development where requirements are broken down
into multiple standalone modules of software development cycle. Incremental development is
done in steps from analysis design, implementation, testing/verification, maintenance.
Advantage:
• This model permits the client to respond to and provide feedback on every build.
• Identifying errors becomes easy with incremental models.
• The product’s most important and useful functional capabilities can be identified at an
early stage of the development process.
Disadvantage:
• This model requires meticulous planning and designing.
• In order to break it down and build it incrementally, it needs a complete and clear
definition of the whole system.
Evolutionary models
Evolutionary models are iterative. They are characterized in a manner that enables you to
develop increasingly more complete versions of the software with each iteration. There are two
common evolutionary process models. Iterative” + “Incremental model” = Evolutionary model
It is very useful in a large project where you can easily find a module for step by step
implementation. The evolutionary model is used when the users need to start using the many
features instead of waiting for the complete software.
Advantage:
• There are fewer chances of errors because all the modules are well seen.
• It helps to reduce the risk of software projects.
• It also reduces the cost of development.
• Minimize serious problems during testing.
Disadvantage:
• The delivery of full software can be late due to different changes by customers during
development.
• It is difficult to divide the problem into several parts, that would be acceptable to the
customer which can be incrementally implemented and delivered.
RAD model:
RAD model in software engineering is the rapid application development model.
Rapid Application Development (RAD) is a form of agile methodology that prioritizes the rapid
prototype releases and iterations. RAD emphasizes the use of software and user feedback.
Instead of starting a development schedule from scratch each time, developers can make
multiple iterations and updates to a software rapidly by following the RAD.
Advantage:
-Encourages and priorities customer feedback.
-Requirements can be changed at any time because in start there is no detailed and strong requirement
management.
-Reviews are quick in RAD to facilitate the customer.
-Time between prototypes and iterations is short so team need to do it rapidly.
Disadvantage:
-RAD Needs highly skilled developers who can word rapidly.
-RAD is more complex to manage as compared to other SDLC models.
-RAD Needs user requirement throughout the life cycle of the product.
2. Requirements gathering
• Requirement gathering is done using the traditional techniques like analysis, design, code, test and
debug.
4. Formal design
• The clean-room design is a natural specification by using the black box structure approach.
• The specification is called as state boxes and the component level diagram called as the clear boxes.
5. Correctness verification
• The clean-room conducts the exact correctness verification activities on the design and then the code.
• Verification starts with the highest level testing box structure and then moves toward the design detail
and code.
9. Certification
• After the verification, inspection and correctness of all errors, the increments are certified and ready
for integration.
Agility:
• Effective (rapid and adaptive) response to change
Yielding …
Extreme Programming (XP) is an agile software development framework that aims to produce
higher quality software, and higher quality of life for the development team. XP is the most
specific of the agile frameworks regarding appropriate engineering practices for software
development.
When applicable?
Communication
Software development is inherently a team sport that relies on communication to transfer
knowledge from one team member to everyone else on the team. XP stresses the importance
of the appropriate kind of communication – face to face discussion with the aid of a white
board or other drawing mechanism.
Simplicity
The purpose of this is to avoid waste and do only absolutely necessary things such as keep the
design of the system as simple as possible so that it is easier to maintain, support, and revise.
Feedback
Through constant feedback about their previous efforts, teams can identify areas for
improvement and revise their practices.
Courage
You need courage to raise organizational issues that reduce your team’s effectiveness. You
need courage to stop doing something that doesn’t work and try something else. You need
courage to accept and act on feedback, even when it’s difficult to accept.
Respect
The members of your team need to respect each other to communicate with each other,
provide and accept feedback that honors your relationship, and to work together to identify
simple designs and solutions.
Practices
While it is possible to do these practices in isolation, many teams have found some practices
reinforce the others and should be done in conjunction to fully eliminate the risks you often
face in software development.
1.9.5 SCRUM
Scrum is a common Agile methodology for small teams and also involves sprints. The team is
led by a Scrum master whose main job is to clear all obstacles for others executing the day-to-
day work.
Scrum teams meet daily to discuss active tasks, roadblocks, and anything else that may affect
the development team.
• Sprint planning: This event kicks off the sprint. Sprint planning outlines what can be
delivered in a sprint (and how).
• Sprint retrospective: This recurring meeting acts as a sprint review—to iterate on
learnings from a previous sprint that will improve and streamline the next one.
Extreme programming uses story cards to keep track of tasks. Scrum uses task boards to track tasks.
The purpose of an extreme programming sprint is not product release, Scrum sprints are intended to result in a
but rather the creation of bug-free software. functional product.
The Dynamic Systems Development Method is an Agile method that focuses on a full project
lifecycle. Because of this, DSDM has a more rigorous structure and foundation, unlike other
Agile methods.
There are four main phases of DSDM:
• Feasibility and business study
• Functional mode or prototype iteration
• Design and build iteration.
• Implementation
Feature Driven Development blends different Agile best practices. While still an iterative
method of project management, this model focuses more on the exact features of a software
that the team is working to develop. Feature-driven development relies heavily on customer
input, as the features the team prioritizes are the features that the customers need.
This model also allows teams to update projects frequently. If there is an error, it's quick to
cycle through and implement a fix as the phases of this framework are constantly moving.
Lean Software Development (LSD) is an agile framework based on optimizing development time
and resources, eliminating waste, and ultimately delivering only what the product needs. The
Lean approach is also often referred to as the Minimum Viable Product (MVP) strategy, in
which a team releases a bare-minimum version of its product to the market, learns from users
what they like, don’t like and want to be added, and then iterates based on this feedback.
Lean Principles: