You are on page 1of 71

UNIT I

INTRODUCTION TO
SOFTWARE ENGINEERING
SOFTWARE

⮚Software is more than just a program code.

⮚A program is an executable code, which serves some computational purpose.

⮚ Software is considered to be collection of executable programming code,


associated libraries and documentations.

⮚Software delivers the most important product of our time—information

⮚Software is a logical rather than a physical system element


SOFTWARE

⮚Instructions (computer programs) that when


executed provide desired features, function, and
performance;
⮚Data structures that enable the programs to
adequately manipulate information, and
⮚Descriptive information in both hard copy and
virtual forms that describes the operation and
use of the programs
SOFTWARE

⮚ The old-school view of software


you buy it, you own it, and it’s your job to manage it
—that’s coming to an end.
⮚ Today, with Web 2.0 and pervasive computing coming on strong,
we’re going to be seeing a completely different generation of
software.
⮚ It’ll be delivered via the Internet and will look exactly like it’s
residing on each user’s computing device . . . but it’ll reside on a
far-away server.
SOFTWARE

⮚ Characteristics of Software
⮚ Software is developed or engineered; it is not manufactured
in the classical sense
⮚ Software doesn’t “wear out.”
⮚ Although the industry is moving toward component-based
construction, most software continues to be custom built
SOFTWARE

⮚ Dual role of Software


⮚ Product
⮚ Whether it resides within a mobile phone or operates inside a
mainframe computer, software is an information transformer—
producing, managing, acquiring, modifying, displaying, or transmitting
information that can be as simple as a single bit or as complex as a
multimedia presentation derived from data acquired from dozens of
independent sources
⮚ Vehicle for delivering a product
⮚ software acts as the basis for the
⮚ control of the computer (operating systems),
⮚ the communication of information (networks), and
⮚ the creation and control of other programs (software tools and
environments)
Categories of Software /
Software Application Domain
1. System software:
⮚ a collection of programs to provide service to other programs.
⮚ Compilers, operating systems, editors, drivers, assembler, etc.
2. Application Software:
⮚ stand-alone programs that solve a specific business need
⮚ data processing applications,
⮚ point-of-sale transaction processing,
⮚ real-time manufacturing process control
3. Engineering/scientific software
⮚ Astronomy
⮚ automotive stress analysis
⮚ space shuttle orbital dynamics
⮚ automated manufacturing
Categories of Software
3. Embedded software:

⮚ This type of software is placed in “Read-Only- Memory


(ROM)”of the product and control the various functions of the
product.
⮚ The product could be an aircraft, automobile, security system,
signaling system, control unit of power plants, etc.
⮚ The embedded software handles hardware components and is
also termed as intelligent software .
⮚ key pad control for a microwave oven
⮚ digital functions in an automobile such as fuel control, dashboard displays, and
braking systems
Categories of Software
4. Product-line software
⮚ designed to provide a specific capability for use by many
different customers
⮚ inventory control products
⮚ word processing,
⮚ spreadsheets,
⮚ computer graphics,
⮚ multimedia, entertainment,
⮚ personal and business financial applications
Categories of Software
5. Web applications :
⮚ The software related to web applications come under this
category. Examples are CGI, HTML, Java, Perl, DHTML etc.

6. Artificial intelligence software:


⮚ Artificial Intelligence software makes use of non numerical
algorithms to solve complex problems that are not amenable
to computation or straight forward analysis.
⮚ Examples are expert systems, artificial neural network, signal
processing software, robotics etc.
INTRODUCTION TO SOFTWARE ENGINEERING

⮚ Engineering
⮚Application of
⮚Science,
⮚Tools and
⮚Methods
⮚to find cost effective solution to problems
⮚is all about developing products, using well-defined,
scientific principles and methods
INTRODUCTION TO SOFTWARE ENGINEERING

⮚Software Engineering
⮚is the science and art of building significant software
systems based on
⮚ Time
⮚ Budget
⮚ Acceptable performance
⮚ Correct operation
⮚A systematic, disciplined and quantifiable approach in
the development, operation and maintenance of software
⮚Objective
⮚ To produce software products
INTRODUCTION TO SOFTWARE ENGINEERING

⮚Software Engineering
⮚Goal
⮚ to “devise methodologies that are founded on the notion of
evolution”; that is, the notion that software systems
continually change, new software systems are built from the
old ones, and . . . all must interoperate and cooperate with
each other”
⮚Software framework encompasses
⮚ a process,
⮚ a set of methods, and
⮚ an array of tools
⮚ that we call software engineering
INTRODUCTION TO SOFTWARE ENGINEERING

•Software engineering is an engineering branch associated with development of


software product .

•Using well-defined scientific principles, methods and procedures and tools.

•The outcome of software engineering is an efficient and reliable software product.


INTRODUCTION TO SOFTWARE ENGINEERING

• Understand the problem before you build a solution


• Design is a pivotal software engineering activity.
• Both quality and maintainability are an outgrowth of good design.
• Software in all of its forms and across all of its application domains should be
engineered
• Definition
• Software engineering is the establishment and use of sound engineering principles
in order to obtain economically software that is reliable and works efficiently on
real machines.
• Software engineering layers
WHAT IS SOFTWARE PRODUCT?

• Software Products are nothing but software systems delivered to the


customer.
• It has the documentation that describe how to install and use the system.

• Software products may be part of system products where hardware, as


well as software, is delivered to a customer.

• Software products are produced with the help of the software process.
ESSENTIAL CHARACTERISTICS OF SOFTWARE
PRODUCT:

A well-engineered software product should possess the following essential


characteristics:

1. Efficiency:
The software should not make wasteful use of system resources such as memory
and processor cycles.
System resources should be used optimally
2. Maintainability:
It should be possible to evolve the software to meet the changing requirements
of customers.
3. Dependability:
Dependable software should not cause any physical or economic injury within the
event of system failure.
It includes a range of characteristics such as reliability, security and safety.
ESSENTIAL CHARACTERISTICS OF SOFTWARE
PRODUCT:

4. In time:
Software should be developed well in time.

5. Within Budget:
The software development costs should not overrun and it should be within the
budgetary limit.

6. Functionality:
The software system should exhibit the proper functionality, i.e, it should perform
all the functions it is supposed to perform.

7. Adaptability:
The software system should have the ability to get adapted to a reasonable extent
with the changing requirements.

8. Usability:
Good software product should be easily usable by the user.
SOFTWARE PRODUCT
TYPES OF SOFTWARE PRODUCTS

Software products fall into two broad categories:

1. Generic products/ Commercial off the self Software

Generic products are the stand-alone systems that are developed by a production
unit and sold on the open market to any customer who is able to buy them.
Eg
Word Processors, CAD/CAM Packages

2. Customized Products:

Customized products are the systems that are commissioned by a particular


customer.
Some contractor develops the software for that customer.
Eg
Hospital management system
WHAT IS SOFTWARE PROCESS

• a collection of activities, actions, and tasks that are performed when some
work product is to be created
• The software process is a way in which we produce software.
• Framework that describe activities performed at each stage of Software
development.
• It is an approach to develop a software product.
• Set of activities whose goal is development or evolution of Software.
• Process Activities:
⮚ Software Analysis – Analyze the requirements and constraints defined by users
or customers about the software.
⮚ Software Specification – Specify the structure of the S/W according to
requirements
⮚ Software Development – Coding – Production of Software System.
⮚ Software Validation - Testing– Checking whether software is according to
customer needs.
⮚ Software Evolution – Changing Software in response to changing demands.
WHY IS SOFTWARE ENGINEERING REQUIRED?

Software Engineering is required due to the following reasons:

• To manage Large software- Modularization

• For more Scalability

• Cost Management

• To manage the dynamic nature of software

• For better quality Management


IMPORTANCE OF SOFTWARE ENGINEERING
SOFTWARE DEVELOPMENT LIFECYCLE
SOFTWARE DEVELOPMENT LIFECYCLE

• Structured sequence of stages in software engineering to develop the intended


software product.

Stage-1: Planning And Requirement Analysis:

• Crucial step in software development.


• Requirement analysis is performed by the developers of the organization.
• Take the inputs from the customers, sales department/market surveys.
• The information from this analysis forms the building block of a basic project
• Thus, in this stage, the basic project is designed with all the available information.
SOFTWARE DEVELOPMENT LIFECYCLE

Stage-2: Defining Requirements:

• In this stage, all the requirements for the target software are specified.

• These requirements get approval from the customers, market analysts, and
stakeholders.

• This is registered in Software Requirement Specification (SRS) document.

• This document specifies everything that need to be defined and created during the
entire project cycle.
SOFTWARE DEVELOPMENT LIFECYCLE

Stage-3: Designing Architecture:

• SRS is a reference for software designers to come out with the best architecture for
the software.

• Hence, with the requirements defined in SRS, multiple designs for the product
architecture are present in the Design Document Specification (DDS).

• This DDS is assessed by market analysts and stakeholders.

• After evaluating all the possible factors, the most practical and logical design is
chosen for the development.
SOFTWARE DEVELOPMENT LIFECYCLE

Stage-4: Developing Product:

⚫ At this stage, the fundamental development of the product starts.

⚫ For this, developers use a specific programming code as per the design in the DDS.

⚫ Hence, it is important for the coders to follow the protocols set by the association.

⚫ Conventional programming tools like compilers, interpreters, debuggers, etc. are also
put into use at this stage.

⚫ Some popular languages like C/C++, Python, Java, etc. are put into use as per the
software regulations.
SOFTWARE DEVELOPMENT LIFECYCLE

Stage-5: Product Testing and Integration:

• After the development of the product, testing of the software is necessary to ensure
its smooth execution.

• Although, minimal testing is conducted at every stage of SDLC.

• Therefore at this stage, all the probable flaws are tracked, fixed, and retested.

• This ensures that the product confronts the quality requirements of SRS.
SOFTWARE DEVELOPMENT LIFECYCLE

Stage 6: Deployment and Maintenance Of Product:

⚫ After detailed testing, the conclusive product is released in phases as per the organization’s
strategy.

⚫ Then it is tested in a real industrial environment.

⚫ Because it is important to ensure its smooth performance.

⚫ If it performs well, the organization sends out the product as a whole.

⚫ After retrieving beneficial feedback, the company releases it as it is or with auxiliary


improvements to make it further helpful for the customers.

⚫ However, this alone is not enough. Therefore, along with the deployment, the product’s
supervision.
PROCESS MODELS – WATERFALL MODEL
PROCESS MODELS – WATERFALL MODEL

• Waterfall model is the simplest model of software development paradigm.


• All the phases of SDLC will function one after another in linear manner.

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 determine 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.
PROCESS MODELS – WATERFALL MODEL

2 ) Requirements analysis and specification: The aim of the requirement analysis


and specification phase is to understand the exact requirements of the customer
and document them properly. This phase consists of two different activities.

• Requirement gathering and analysis: Requirements are gathered from the


customer and then analyzed.
The goal of the analysis part is to remove incompleteness and inconsistencies.

• Requirement specification: These analyzed requirements are documented in a


software requirement specification (SRS) document. SRS document serves as a
contract between development team and customers. Any future dispute between
the customers and the developers can be settled by examining the SRS document.
PROCESS MODELS – WATERFALL MODEL

3) Design:
• The aim of the design phase is to transform the requirements specified in the SRS
document into a structure that is suitable for implementation in some programming
language.

4) Coding and Unit testing:


• In coding phase software design is translated into source code using any
suitable programming language. Thus each designed module is coded.

• The aim of the unit testing phase is to check whether each module is working
properly or not.
PROCESS MODELS – WATERFALL MODEL

5) Integration and System testing:


• Integration of different modules .

• Integration happens incrementally over a number of steps.

• During each integration step, modules are added to the partially integrated system

• The resultant system is tested.

• Full Working system is tested.


PROCESS MODELS – WATERFALL MODEL

System testing consists 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


performed the acceptance testing to determine whether to accept the delivered
software or to reject it.
PROCESS MODELS – WATERFALL MODEL

Maintenance: 
• Most important phase of a software life cycle.
• 60 % of total effort.
• There are basically three types of maintenance :
– Corrective Maintenance: to correct errors that were not discovered during
the product development phase.

– Perfective Maintenance: 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 work on a new computer
platform or with a new operating system.
ADVANTAGES

1. Simple and easy to understand.

2. Phases processed one at a time.

3. Each phase clearly defined.

4. Milestones.

5. Well Documented.

6. For smaller projects where requirements are well understood.


DISADVANTAGES

1. No feedback path.

2. Difficult to accommodate change requests

3. No overlapping of phases.
SPIRAL MODEL
SPIRAL MODEL
SPIRAL MODEL

• Model that handles Risk Handling.

• Look 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 is a phase in Spiral development.

• Exact number of phases needed depends on the project.


SPIRAL MODEL

Each phase of Spiral Model is divided into four quadrants.


The functions of these four quadrants are discussed below:

1. Objectives determination and identify alternative solutions: 


⚫ Requirements are gathered from the customers and the objectives are
identified, elaborated and analyzed at the start of every phase.
⚫ Then alternative solutions possible for the phase are proposed in this
quadrant.

2. Identify and resolve Risks:


⚫ All the possible solutions are evaluated to select the best possible solution.
1. Risk Identification.
⚫ Risk resolved using possible strategy.
⚫ Prototype is built for the best possible solution.
SPIRAL MODEL

3) Develop next version of the Product:

•  During the third quadrant, the identified features are developed and verified
through testing.

• At the end of the third quadrant, the next version of the software is available.

4) Review and plan for the next Phase:

•  In the fourth quadrant, the Customers evaluate the so far developed version of the
software.

• In the end, planning for the next phase is started.


ADVANTAGES

1. Risk Handling.

2. Good for Large Projects.

3. Flexibility in Requirements.

4. Customer Satisfaction.
DISADVANTAGES

1. Complex in Nature.

2. Expensive.

3. Too much dependable on Risk Analysis.

4. Difficulty in Time Management.


PROTOTYPING MODEL

• The prototype model requires that before carrying out the development of
actual software, a working prototype of the system should be built.

• A prototype is a toy implementation of the system.

• A prototype usually turns out to be a very crude version of the actual


system, possible exhibiting limited functional capabilities, low reliability,
and inefficient performance as compared to actual software.

• In many instances, the client only has a general view of what is expected
from the software product. In such a scenario where there is an absence of
detailed information regarding the input to the system, the processing
needs, and the output requirement, the prototyping model may be
employed.
PROTOTYPING MODEL
STEPS OF PROTOTYPING MODEL:

1. Requirement Gathering and Analysis


2. Quick Decision/Design
3. Build a Prototype
4. Assessment or User Evaluation
5. Prototype Refinement
6. Engineer Product
PROTOTYPING TYPES:

Throwaway/Rapid Prototyping:

• This technique offers a useful method of exploring ideas and getting


customer feedback for each of them.

• In this method, a developed prototype need not necessarily be a part of the


ultimately accepted prototype.

• Customer feedback helps in preventing unnecessary design faults and


hence, the final prototype developed is of better quality. 
PROTOTYPING TYPES:

Evolutionary Prototyping:

• In this method, the prototype developed initially is incrementally refined


on the basis of customer feedback till it finally gets accepted.

• In comparison to Rapid Throwaway Prototyping, it offers a better


approach which saves time as well as effort. This is because developing a
prototype from scratch for every iteration of the process can sometimes be
very frustrating for the developers. 
 
PROTOTYPING TYPES:

Incremental Prototyping:

• In this type of incremental Prototyping, the final expected product is broken into
different small pieces of prototypes and being developed individually.
• In the end, when all individual pieces are properly developed, then the different
prototypes are collectively merged into a single final product in their predefined
order.
• It’s a very efficient approach which reduces the complexity of the development
process, where the goal is divided into sub-parts and each sub-part is developed
individually.
• The time interval between the project begin and final delivery is substantially
reduced because all parts of the system are prototyped and tested simultaneously
ADVANTAGES:

1. Increased user involvement.

2. Users get a better understanding of the system being developed.

3. Reduces time and cost as the defects can be detected much earlier.

4. Quicker user feedback is available leading to better solutions.

5. Missing functionality can be identified easily.

6. Confusing or difficult functions can be identified.


DISADVANTAGES

1. Too much dependency on Prototype.

2. Users may get confused in the prototypes and actual systems.

3. The effort invested in building prototypes may be too much if it is not monitored
properly.
INCREMENTAL PROCESS MODEL
INCREMENTAL PROCESS MODEL

• Also known as Successive Version Model.

• Simple System implemented with basic features.

• That is delivered to the Customer.

•  Many successive iterations/ versions are implemented and delivered to the


customer.

• This process Continuous until delivery of the final product.


LIFE CYCLE ACTIVITIES:
LIFE CYCLE ACTIVITIES

• Requirements – Broken down into modules.

• Next Increment.

• Modify the version as per customer requirement.

• Feedback taken – next version development starts.

• Types: Staged Delivery Model, Parallel Development Model.


ADVANTAGES

• Error Reduction.

• Uses divide and conquer for breakdown of tasks.

• Lowers initial delivery cost.

• Incremental Resource Deployment.


DISADVANTAGES

• Requires good planning and design.

• Total cost is not lower.

• Well defined module interfaces are required.


AGILE DEVELOPMENT MODELS:

• The meaning of Agile is swift or versatile."Agile process model" refers to a


software development approach based on iterative development.

• Agile methods break tasks into smaller iterations, or parts ,do not directly
involve long term planning.

• The Agile approach to software development is defined by its commitment


to creating software incrementally -- or in regular increases and stages.

• The approach offers users new versions, or releases, of software following


brief periods of work. Those brief periods of work are often called sprints.
AGILE DEVELOPMENT MODELS:

• Agile model believes that every project needs to be handled differently and
the existing methods need to be tailored to best suit the project
requirements.

• In Agile, the tasks are divided to time boxes (small time frames) to deliver
specific features for a release.

• Iterative approach is taken and working software build is delivered after


each iteration.

• Each build is incremental in terms of features; the final build holds all the
features required by the customer.
AGILE DEVELOPMENT MODELS:
AGILE DEVELOPMENT VALUES
AGILE DEVELOPMENT VALUES

1. Individuals and interactions over processes and tools


• This value of the Agile manifesto focuses on giving importance to
communication with the clients. There are several things a client may want
to ask and it is the responsibility of the team members to ensure that all
questions and suggestions of the clients are promptly dealt with.

2. Working product over comprehensive documentation

• In the past, more focus used to be on proper documentation of every


aspect of the project. There were several times when this was done at the
expense of the final product. The Agile values dictate that the first and
foremost duty of the project team is completing the final deliverables as
identified by the customers.
AGILE DEVELOPMENT VALUES

3.  Customer collaboration over contract negotiation

• Agile principles require customers to be involved in all phases of the


project. The Waterfall approach or Traditional methodologies only allow
customers to negotiate before and after the project.

• This used to result in wastage of both time and resources. If the customers
are kept in the loop during the development process, team members can
ensure that the final product meets all the requirements of the client.
AGILE DEVELOPMENT VALUES

4. Responding to change over following a plan

• Contrary to the management methodologies of the past, Agile values are


against using elaborate plans before the start of the project and continue
sticking to them no matter what.

• Circumstances change and sometimes customers demand extra features


in the final product that may change the project scope. In these cases,
project managers and their teams must adapt quickly in order to deliver a
quality product and ensure 100% customer satisfaction.
12 Principles of Agile Manifesto

1. Customer satisfaction through continuous delivery of the product


2. Divide large chunks of work into smaller and achievable tasks for
quicker completion and easier integration of changes
3. Adhere to the decided timeframe for the delivery of a working product
4. All stakeholders must frequently collaborate to ensure that the project
is going in the correct direction
5. Create a supportive environment to motivate team members and
encouraging them to get the job done
6. Prefer face-to-face communication over other methods
7. Working software is the primary measure of progress
8. Try to maintain a constant pace of development.
9. Maintain the quality of the product by paying attention to technical
details
10. Maintain simplicity
11. Promote self-organization in the team
12. Regularly reflect on your performance for continuous improvement
When to use the Agile Model?

1. When frequent changes are required.


2. When a highly qualified and experienced team is
available.
3. When a customer is ready to have a meeting with a
software team all the time.
4. When project size is small.
ADVANTAGES

1. Is a very realistic approach to software development.


2. Promotes teamwork and cross training.
3. Functionality can be developed rapidly and demonstrated.
4. Resource requirements are minimum.
5. Suitable for fixed or changing requirements
6. Delivers early partial working solutions.
7. Good model for environments that change steadily.
8. Minimal rules, documentation easily employed.
9. Enables concurrent development and delivery within an overall
planned context.
10. Little or no planning required.
11. Easy to manage.
12. Gives flexibility to developers.
DISADVANTAGES

• Due to the shortage of formal documents, it creates confusion and


crucial decisions taken throughout various phases can be
misinterpreted at any time by different team members.

• Due to the lack of proper documentation, once the project


completes and the developers allotted to another project,
maintenance of the finished project can become a difficulty.

You might also like