You are on page 1of 12

Software Engineering Introduction to Software Engineering

Chapter 1

INTRODUCTION TO SOFTWARE ENGINEERING

Software
It is the collection of computer programs, rules and associated documents and data.
Software is the general term for the various kinds of programs used to operate computers
and related devices.

Types of Software
The two main classification of software,
1. System software
2. Application software

System software:
Software designed to operate the computer hardware and to provide a platform for
running application software.
There are different types of system software that are available,
• Operating system
• Software utilities
• Software translator(compiler assembler and interpreter)

Application software
Application software designed to help the user to perform a specific task. There are
several categories of application software for example,
• General purpose application software
• Special purpose Application software
• Be spoke Application software
---------------------------------------------------------------------------------------

Software Engineering

(Based on IEEE Institute of electrical and electronic engineering)


“The application of a systematic, disciplined, quantifiable approach to the
development, operation, maintenance of software, that is the application of
engineering to software”.

(General definition)
“A systematic approach to development, operation and maintenance of
software product”.

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 1


Software Engineering Introduction to Software Engineering

Components of software Engineering


The importance components of software engineering are,
Software Development Life Cycle (SDLC):
It defines the various stages and activities associated with the development of
software system.
Software Quality Assurance (SQA):
This is the process of ensuring user satisfaction through the development of quality
product.
Software Project Management (SPM):
It is application of the principles project management to the process of software
development.
Software Management(SM):
They are the methods and procedures to be followed for effective software maintenance
and change control.
Computer Aided Software Engineering (CASE):
They are set to automatic tool that support the process of software development.
------------------------------------------------------------------------------------
Software Characteristics
A good software has number of properties like,
• Maintainability:
It should be possible for the software to meet the changing requirements.
• Dependability:
It must include reliability, security and safety. Security and safety dependable s/w does
not cause any damage in the event of system failure
• Efficiency:
It should not make any wasteful use of system resource such as memory, processing
time.
• Usability:
It must be easy to use for customers or user. Software must have Proper user interface
and adequate documentation.
• Software is intangible.
• Software does not wear-out.
-------------------------------------------------------------------------------------
Goals of software Engineering
• Improve the quality of s/w products.
• To increase productivity.
• To get the ability to develop and maintain a software.
• Job satisfaction to s/w engineers.
----------------------------------------------------------------------------------------

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 2


Software Engineering Introduction to Software Engineering

Software Products
Software Products are software, those are delivered to a customer with
documentation which describes how to install and use the system.
There are two types of software products available they are,
1. Generic Products
2. Customized(Bespoke) Products

Generic Products
• These are stand alone systems which are produced to sell in open market to any
customer.
• Generic products are developed for anonymous customer. Generic products are design
by marketing point of view.
• The requirements and specification are controlled by the developer.
• Generic Software is also called Commercial Off The Shelf (COTS) Software.
• Ex: word processor, Drawing packages and project management tools etc.

Customized (Bespoke) Products


• This type of s/w is developed to meet the requirement of a specific user or a group of
user.
• The requirements and specification are controlled by the customer.
• Need to analyze end user requirements.
• Ex: Hospital management, Railway reservations…
-------------------------------------------------------------------------------------

Software Process
A set of activities and associated result which produce a s/w product. Set of work
phases that are applied to design and build a software product.

Fundamental activities in all software processes are:


Software Specification:
Specification process involves defining s/w to be produced and there constraints.
Designer must collect all the required specification before starting the development
activities.
Software Development:
It involves team of profession with innovation idea that helps to develop and design
the software specified by the user.
Software validation:
software is validated after matching requirement of the customer with the software
developed. It is the process of checking the s/w
Software evolution:
software is modified to adopt changing customer and market requirement.

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 3


Software Engineering Introduction to Software Engineering

Characteristics of software process


➢ Understandability
➢ Visibility
➢ Supportability
➢ Acceptability
➢ Reliability
-----------------------------------------------------------------------------------------

Software Model
It is an abstract description of the software process.

Software Development Life cycle [SDLC]


It is a sequence of activities carried out by Analyst, Designer and user to develop
and implement an information system. These activities are carried out in different stages.
In SDLC each phase of the software development take the input of previous phase
result. Entry and exit criteria will be there for each phase.

SDLC can broadly classified into 7 phases,

Feasibility Study:
– In this phase they assist whether or not a project should be undertaken.
– This stage involves defining the problem and fixing up the boundaries.

Requirement Analysis & Specification:


– In this state the requirement are studied and analyzed.
– The technical development team works with the customer and system end users to
identify application domain, functions, services performance capabilities, hardware
related constraints to the system to be developed.

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 4


Software Engineering Introduction to Software Engineering

System design:
– In this phase a new system is designed according to the needs of a user.
– It is the phase which find solution for the given problem and specification of each and
every component of the project.

Development:
– In the phase, where the system is actually developed. The whole system design is built
and implementation.

Testing:
– This is the most important phase where the system is tested and check entire
functionality includes performance reliability and robustness.

Implementation:
– This is a process in which the developed system is handed over to the client and users
are trying to manage and maintain a new system

Software Maintenance:
– This is the phase where the development team maintains a system. It includes adding
the enhancement, improvements, and updates of the new version
---------------------------------------------------------------------------------------

Types of SDLC Models


➢ Water fall model
➢ Prototype model
➢ Rapid application model
➢ Evolutionary model
➢ Incremental model
➢ Iterative Model
➢ Component based software engineering model
➢ Spiral model.
-------------------------------------------------------------------------------------

Water Fall Model


• It is a software life cycle described by W.W. Royce in 1970.
• The water model is also referred as linear sequential model or classical life cycle model.
• The development is supposed to proceed linearly through the phases requirement
analysis, design, implementation, testing, integration and maintenance.
• The Waterfall Model was first Process Model to be introduced. It is very simple to
understand and use.
• In a waterfall model, each phase must be completed fully before the next phase can
begin.

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 5


Software Engineering Introduction to Software Engineering

• This type of model is basically used for the project which is small and there are no
uncertain requirements.
• At the end of each phase, a review takes place to determine if the project is on the
right path and whether or not to continue or discard the project.
• In this model the testing starts only after the development is complete.
• In waterfall model phases do not overlap.

Below Diagram shows waterfall model,

Requirement definition:
All possible requirement of a system to be developed are capture in this phase and
also requirement specification document is created which serves as a guideline for the
next phases of the model.

System and software design:


It is highly important to understand the requirements of the user how should end
products looks like. System design helps in specifying hardware and software
requirements and also defining system architecture.

Implementation and unit testing:


The system is first developed and the work is divided in to modules or units. Each
unit is developed and tested for its functionality this referred as unit testing, it mainly
verify whether all the modules are working properly or not.
Integration and System testing:
The units are integrated in to a complete system during integration phase and
tested to check all the modules are co-ordinating with each other or not.

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 6


Software Engineering Introduction to Software Engineering

Operation and Maintenance:


This phase is a never ending phase generally problems arises after its practical use
only so the maintenance of the system come in to picture directly when it is to used.
Hence this phase is referred as Maintenance.

Advantages of waterfall model:


➢ This model is simple and easy to understand and use.
➢ It is easy to manage due to the rigidity of the model – each phase has specific
deliverables and a review process.
➢ In this model phases are processed and completed one at a time. Phases do not
overlap.
➢ Waterfall model works well for smaller projects where requirements are very well
understood.

Disadvantages of waterfall model:


➢ Once an application is in the testing stage, it is very difficult to go back and change
something that was not well-thought out in the concept stage.
➢ No working software is produced until late during the life cycle.
➢ High amounts of risk and uncertainty.
➢ Not a good model for complex and object-oriented projects.
➢ Poor model for long and ongoing projects.
➢ Not suitable for the projects where requirements are at a moderate to high risk of
changing.

When to use the waterfall model:


➢ This model is used only when the requirements are very well known, clear and fixed.
➢ Product definition is stable.
➢ Technology is understood.
➢ There are no ambiguous requirements
➢ Ample resources with required expertise are available freely
-------------------------------------------------------------------------------------------

Spiral Model
• The spiral model is similar to the incremental model with more emphasis placed on
risk analysis.
• The spiral modal was proposed by “Boehm”
• It combines the best features of water fall and prototype model.
• Each loop represents a phase of the s/w development process. The inter most loop is
concerned with the system a system feasibility and the next loop with requirement and
further loop with system design and so on.
• Each group is the spiral model is split into 4 phases.
o Planning,
o Risk Analysis,

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 7


Software Engineering Introduction to Software Engineering

o Engineering and Evaluation.


• A software project repeatedly passes through these phases in iterations (called Spirals
in this model).
• The baseline spiral, starting in the planning phase, requirements are gathered and risk
is assessed and prototype is build .
• Each subsequent spirals builds on the baseline spiral.

Planning Phase:
In this Requirements are gathered during the planning phase. Requirements like
‘BRS’ that is ‘Business Requirement Specifications’ and ‘SRS’ that is ‘System Requirement
specifications are discussed and planned.

Risk Analysis:
In the risk analysis phase, a process is undertaken to identify risk and alternate
solutions. A prototype is produced at the end of the risk analysis phase. If any risk is found
during the risk analysis then alternate solutions are suggested and implemented.

Engineering Phase:
In this phase Simulations are done and software is developed, along with testing
at the end of the phase. Hence in this phase the development and testing is done.

Evaluation phase:

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 8


Software Engineering Introduction to Software Engineering

This phase allows the customer to evaluate the output of the project to date before
the project continues to the next spiral by giving suggestions or reviews.

Advantages of Spiral model:


➢ High amount of risk analysis hence, avoidance of Risk is enhanced.
➢ Good for large and mission-critical projects.
➢ Strong approval and documentation control.
➢ Additional Functionality can be added at a later date.
➢ Software is produced early in the software life cycle.

Disadvantages
➢ Cost involvement is usually high.
➢ Doesn’t work for smaller project.
➢ It is Required to evaluate & review the project time to time
➢ Risk analysis should be done by highly specific experts.
➢ Scheduling requirement are very much tough.

When to use Spiral model:


➢ When costs and risk evaluation is important
➢ For medium to high-risk projects
➢ Long-term project commitment unwise because of potential changes to economic
priorities
➢ Users are unsure of their needs
➢ Requirements are complex
➢ New product line and Significant changes are expected (research and exploration)
-------------------------------------------------------------------------------------------

Iterative Enhancement Model


• The iterative enhancement model is made with the elements of the linear model with
the iterative philosophy of prototype.
• The basic idea is that the software is developed in an incremental way.
• Each increment adds some functionalities & capabilities to the system until the full
system is implemented.
• At the first step a simple initial model is developed and it is implemented with which
some of the key aspects of the problem.
• A project control list is created which contains the analysis of the product in the
markets and the process is repeated until the projects control list is empty.
• At the time of implementation a full system is available and the phases used in this
model are Design phase, Implementation phase and Analysis phase.

Design0 Design1 Design2


Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 9
Software Engineering Introduction to Software Engineering

Implement0 Implementn

Analysis0 Analysis1 Analysisn

Advantages:
➢ It combines the benefits of waterfall model.
➢ It allows for early adjustments to the products during development.
➢ The correct actions can be taken at the beginning of every phase in each iteration.
➢ It can result better testing because testing done to the entire system.

Disadvantages:
➢ The people working on this project can get stuck in a loop. That is finding problem
always and getting back again implement and design.
➢ The user community needs to actively participate throughout the project. Informal
request for the improvement after each phase may lead to confusion.
--------------------------------------------------------------------------------------------

Agile Process Model


Agile SDLC model is a combination of iterative and incremental process models with
focus on process adaptability and customer satisfaction by rapid delivery of working
software product.
Agile Methods break the product into small incremental builds. These builds are
provided in iterations. Each iteration typically lasts from about one to three weeks.

Every iteration involves cross functional teams working simultaneously on various areas
like,
➢ Planning
➢ Requirements Analysis
➢ Design
➢ Coding
➢ Unit Testing and
➢ Acceptance Testing.
Risk Management

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 10


Software Engineering Introduction to Software Engineering

➢ “Risk is the Potential Future harm that may arise from present action”.
➢ Risk Management is the main job of project managers.
➢ It involves anticipation risks that affect the project schedule or the quality of the
software being developed and also minimize the risk before it effect the project.
➢ Two types of engineers can handle risk:
➢ Reactive Engineer: corrects the problem as it occurs
➢ Proactive Engineer: Starts thinking about possible risks that might occur in a
project before they occur.

There are several types of risk can occur during a software development.
• Generic risk: During requirement change, loss of team member and loss
of funding.
• Product Specific risk: High Level risk during product being developed.
• Project risk: Affect project schedule.
• Product risk: Affects quality and performance
• Business risk
------------------------------------------------------------------------------------------------------------------------------

Professional & Ethical Responsibilities


Software Engineers must behave honest & ethically responsible. Some of the
responsibilities are,
Confidentiality :
Engineers should have respect over their employees , clients and also maintain the
secrets and also respect the confidentiality of agreements etc.

Competence:
Engineers should not miss represent their level of competency. They should not
knowingly accept work which is out of their acceptance and capability.

Computer Misuse:
Software engineers should not use their technical skills to miss use other computers
and for other purpose.

Intellectual property Rights:


Engineers must be aware of local laws governing the use of intellectual properties
such as patents, Copyrights, etc.
-----------------------------------------------------------------------------------------------------------------------------

Software Engineering Challenges

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 11


Software Engineering Introduction to Software Engineering

Legacy challenge:
It is the challenge of maintaining and updating the software in such a way that
excessive costs are avoided and essential business service continue to be delivered

Heterogeneity challenge:
Many of the software products will always have heterogeneity, meaning varied
requirements such as different types of computers and specifications. “The challenge is to
develop software which can automatically to adjust(flexible) with heterogeneous
systems”.

Delivery challenge:
Software project development is time consuming as it has to be manufactured and
must maintain quality.”Delivering the software to the customer on-time is a real
challenge”.

Trust challenge:
Maintaining the trust is very important. Many times software is accessed through
web. The developer must develop the software such that they trust the product.”
The software engineers must develop trustworthy software”.

-----------------------------------------------------------------------------------------

Janhavi N L, Ass. Prof., Dept. of B.C.A, VVFGC, Tumkur Page 12

You might also like