Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 56

Software Engineering

KCA-302
MCA(II Year , III Semester)

Text Books:

1. Roger S. Pressman, “Software Engineering”, A practitioner’s Approach


McGraw-Hill

2. Pankaj Jalote, “Software Engineering”, Wiley.

3. K.K Aggarwal and Yogesh Singh, “Software Engineering”, New Age


International”3rd edition

4.Rajib Mall, “Fundamentals of Software Engineering ”, Second Edition


Introduction :

Outline :
1Programversus Software
2. Software
3. Components ofSoftware
4. Software Characteristics
5. Roleofsoftware
6. ClassificationofSoftware
7. Software Myth
8. Emergence ofSoftwareEngineering
9. Software Engineering
10. SoftwareEngineering-A LayeredTechnology
11. SoftwareEngineering Approach
12. SoftwareProcess
1. Program versus Software
Misconception : Software is Program
Various differences between Program and Software are given in
the tabular form as follows:
PROGRAMS SOFTWARE
Programs are developed by Software is usually developed by a
individuals for their personal use group of engineers working in a
team.
It is usually small in size Large in size
Single user : Author himself is a sole Large number of users
user
Limited functionality More functionality
It lacks proper documentation It involves good documentation
Single developer Team of developer
It lacks proper user interface Well designed interface
Adhoc development Systematic development
2. What is software?
Software :
Software is defined as a collection of :
-Executable programming code(programs) that when executed provide the
desired features ,functions and performance.
-Data Structures that enables the programs to adequately store and manipulate
information.
-Documentation that describes the operation and use of the programs.

Thus, software consist of


- Source code
- User manuals
- Installation manuals
- Executables
- Documentation
- Data structure
3. Components of the Software

Documentatio
programs n

Operating
procedure

-Program : Source code, Object code


-Documentation : It describes the structure of system
Requirement specification document, design document, test
document etc.
Contd.
Contd..

• -Operating Procedures : It consists of instruction to


setup and use the software system and instruction on
how to react to system failure . In this we have user
manual, operational manual. (instructions / scripts to
set up and use the program ; instructions on how to
treat failures ; instructions/scripts on how to test the
program
Contd..
4. Software Characterstics

1. Software does not wear out: Bath tub curve in reliability for
hardware products
Hardware Reliability curve Software Reliability curve

increased failure
rate due to side effects
Failure
rate

change
actual curve

idealized curv

Time
2.Software is developed not manufactured
3.Software is flexible
4. Most software is custom built, rather than being
assembled from existing components
5. Changing Nature of the Software
or
Role of Software
The role of computer software has undergone
significant change over a time span of little
more than 50 years. Dramatic improvements
in hardware performance, profound changes in
computing architectures, vast increases in
memory and storage capacity, and a wide
variety of exotic input and output options have
all precipitated more sophisticated and
complex computer-based systems.
Contd..

It plays a role in variety of applications like business domain, scientific


domain etc.

Today, software takes on a dual role.


It is a product and
at the same time the vehicle for delivering a product.
Contd….

--System software :
• Collection of Programs Written to Service Other
Programs
• Heavy Interaction with Computer Hardware
• Contains Complex Data Structures and Multiple
External Interfaces
• Concurrent Operation that requires Scheduling
Example: Compilers , OS, Drivers And Networking
Software
Contd..

--Application software
• Consists of standalone programs
• Used to solve specific business needs process
technical data/technical decisions
• Control business functions in real time
Example: Data processing applications Like
payroll management system
Contd..

--Engineering & scientific s/w


• Characterised by conventional numerical
algorithms
• Interactive applications to take on realtime
• example: computer aided design(cad/cam) ,
MATLAB
• Used in educational field for creating
interactive applications
Contd..

--WEB based software


• Related to web applications
• set of linked hypertext files
• e-commerce & b2b applications grow in
importance
• provide stand alone features, computing functions
& content to end-user
• integrated with corporated databases & business
• Example: HTML, Java etc
Contd..

--Embedded software
• Resides within a product or system
• Used to implement & control features
• Perform limited & esoteric functions
• Provide significant function & control
capability
• Example: keypad control for a microwave
oven
Contd..

--Real time software:


• Used to monitor, control and analyse real
worlds event
• Example: software used for weather forcasting
, Radar etc.
Contd..

--Artificial intelligence
• Use of non-numerical algorithms to solve
complex problems
• Not amenable to computation /straight forward
analysis
• EXAMPLE: Robotics ,expert systems ,
pattern recognition(image and voice) ,
artificial neural networks
6. Classification of Software
Depending upon the type of software product Software's are broadly categorized
in two categories:

Generic Software products:-


- Generic products are stand-alone systems that are produced by a
development organization and sold on the open market to any customer
who is able to buy them.

- In General Purpose application/product design and development, you will


need to "imagine" what an end-user require. Here, the term "end - user" has
no face; you have to imagine it. Market Surveys and general Customer
Demand analysis may help a company to reduce the risk factor and think
about some innovations over existing similar solutions.

- Examples of this type of product include software for PCs such as


databases, word processors, drawing packages, and project
management tools
Contd..

Customized Software products :

- Custom Software Development is done to satisfy a particular need


of a particular client. Unlike generic software, it is not usually
widely available for sale on the public market.

- In Custom Made application/product development, you have a


specific face of "end - user" in front of you. You know whom you
need to satisfy.

Understanding the need and Analyzing it to get the best out of it is


a challenge here. Planning and reaching the goals within dead-line
adds a value to your software development excellence as a
professional service provider
Contd..

Depending upon the complexity and the way software is


developed and used software can be classified in two categories:

- Simple Software:- These are the software which are usually


maintain and used by same person

- Industrial based software :- These software's are developed


by an development team using some systematic approach
7. Software Myth
Erroneous beliefs about software and the process that is used to build
it.

Affect managers, customers (and other non-technical


stakeholders) and practitioners
•Are believable because they often have elements of truth,
but …
•Invariably lead to bad decisions,
therefore ….
•Insist on reality as you navigate your way through software
engineering
Contd….EXAMPLES OF MYTHS

Management myths:
• If we get behind the schedule , we can add more programmers
and catch up. But the reality is Unfortunately, that may further
delay the schedule!

• Developers problems can be solved by using state of arts tools.

• Management may be confident about good standards and clear


procedures of the company.
But the taste of
any food item
is in the eating;
not in the
Recipe ..!!!!!!!
Contd..

• Company has latest computers and state-of the art software


tools, so we shouldn’t worry about the quality of the product
But the reality is The infrastructure is only one of the several
factors that determine the quality of the product!
Customer Myths:
• Project requirements continually change , but can be easily
accommodated because software is flexible.
• A general statement of objectives is sufficient to get started
with the development of software. Missing/vague
requirements can easily be incorporated/detailed out as they
get concretized.
• Software with more features is better software.
Contd..

Developer’s Myths
• Once we write the program and get it to work , our
job is done
• Software quality can not be assessed before testing.
• Aim is to develop working programs
Reality is -Those days are over. Now objective is to
develop good quality maintainable programs!
• Testing software or proving software correct can
remove all the errors.
8. Emergence of Software Engineering
In 1950’s –
• Computer systems were used for a very few applications and assembly language were
used for coding
• Every programmer developed his own style of exploratory programming
In 1960’s –
• High level language such as COBOL, FORTRAN were introduced. Software
development style was still exploratory that limits thousands of line to few thousands
of lines . We consider the exploratory program development style as an art.
• Improvement in computer’s power (hardware)
• To cope up with this power programmers started developing complex software but
they had been unsuccessful in terms of budget, time etc due to mismatch between
existing tools ,techniques , hardware and exploratory style or adhoc approach was
insufficient to develop complex software so this unsuccessful results leads to
software crisis
• The term "software crisis" was coined by some attendees at the first NATO Software
Engineering Conference in 1968 at Garmisch, Germany
Software Crisis is in Industry…
As per the IBM report..
Software Crisis
Software crisis is Mismatch between what software can deliver and capacities
of the computer system, as well as expectations of their user.
The word crisis is defined as turning point in the course of anything , decisive
or crucial time or event.

By the end of the 1960s,


hardware costs had fallen
exponentially,
and were continuing to do so,
while the cost of software
development was rising
at a similar rate
Some Software Failures

Y2K Problem

It was simply the ignorance about the


adequacy or otherwise of using only last two
digits of the year.

The 4-digit date format, like 1964, was


shortened to 2-digit format, like 64.

3
0
Some Software Failures
The Patriot Missile

• First time used in Gulf war


• Used as a defense from Iraqi Scud missiles
• Failed several times including one that
killed 28 US soldiers in Dhahran, Saudi
Arabia.

Reasons:
A small timing error in the system’s clock
accumulated to the point that after 14 hours,
the tracking system was no longer accurate.
In the Dhahran attack, the system had been
operating for more than 100 hours. 3
1
Some Software Failures

Financial Software

Many companies have experienced failures in their accounting


system due to faults in the software itself. The failures range from
producing the wrong information to the whole system crashing.
Reason for Crisis as Follows :
In 1960 s software engineering was accelerated by so called software crisis. In
this period software industry unsuccessfully attempted to build large softwares
by simply scaling up existing development techniques. Many software failed
called software runaways because of following reasons:
• Late Delivery, over Budget of Software
• poor Quality
• Lack of inadequate training in software engineering
• product doest not meet specified requirements
• Low productivity
• Increasing skill shortage

Pressure to produce complex, advanced code can be as


significant contributor to a software crisis.
To get rid off crisis

NEED OF SOFWTARE ENGINEERING PRACTICES


ARE REQUIRED
What is wrong with exploratory style of
software development?
• While using exploratory style how do effort and time
with problem required to develop software increases
with increase in program size.
• As the program size increases required effort and time
increases exponentially
• After certain value of program size developers are not
able to complete it using this adhoc style irrespective
of time or effort you invest due to perceived problem
complexity. Perceived problem complexity due to
limitations of human cognitive mechanism
Contd…..Evolution from an art to engineering
discipline
• Adhoc or Exploratory programming
style considered as an art , as this
style is mostly Guided by intution
and esoteric knowledge. .
Thus we can say that software engineering
has evolved from esoteric art to craft
form and then slowly emerged as an
Engineering discipline
9. Software Engineering

According to IEEE
The application of systematic , disciplined approach to the development
operation and maintenance of software.
A discipline whose aim is the production of quality software that is
delievered on time , within budget and satisfies the requirements.
Software engineers should
- Adopt a systematic and organised approach to their work
- Use appropriate tools and techniques depending on the problem to be
solved, the development constraints and use the resources available.

It is concerned with all aspects of software production


Contd..Need of software Engineering

-Adhoc approach breakdowns when size of software


increases
-Late delievery of the software
-Dynamic nature of software
-large and complex software
-higher rate of change in user requirements
-Cost and time
-Scalibility

“We all want Improvement”


Contd…Goals of Software Engineering

-To improve quality


-To increase productivity
-To develop the software with in cost, time and budget
- To have good interface
- To have good performance
- To deliver reliable software
-To develop those methods which can scale up
- To fulfill all the quality attributes of software
Contd..
• So to ensure its goal it has to be considered as
a balancing act where all its goals are
acceptable.
Contd…Challanges of Software Engineering(SE)

• The problem of producing software to satisfy user


needs drives the approaches used in SE.

Important Factors that affect the SE approaches selected to solve the


problem are-

Quality and Consistency


Scale and Change
Productivity
repeatability
Scale

Software Engineering must deal with problem of


scale
 methods for solving small problems do not
scale up for large problems
 industrial strength Software problems tend
to be large
Eg. Counting the number of people in a
room vs taking a census.

4
2
Productivity

• An engineering project is driven by cost and schedule.

• Cost: In software, cost is mainly manpower cost; hence, it is measured in


person-months

• Schedule is in months/weeks – very important in business context

• Productivity (P)– amount of KLOC per person month

• If P is higher, cost is lower


• If P is higher, time taken can be lesser

• Approaches used by SE must deliver high Productivity

4
3
Quality

• Quality is the other major driving factor


• Developing high Quality Software is a basic goal
• Quality of Software is harder to define
• Approaches used should produce a high Quality software
• ISO standard has six software quality attributes -

4
4
Consistency & Repeatability
-Sometimes a group can deliver one good software system, but not
a second…
Key SE challenge: how to ensure that success can be repeated ?
And there can be some degree of consistency in the quality of
software produced.
-Software Engineering wants methods that can consistently
produce high Quality Software with high Productivity(Q and
-A Software organization wants to deliver high Quality and
productivity consistently across projects.
-Consistency of performance allows an organization to predict the
outcome of project with reasonable accuracy and to improve its
process to produce higher quality products

4
5
Change

• Rapid change has special impact on software . As


software is easy to change due to its lack of physical
properties that may make changing harder , the
expectation is much ,ore from software for change .
• one challenge for software engineering is to
accommodate a change . we have approaches that can
produce high quality software at high productivity
level but can not accept and accommodate change are
of little use today- they can solve only few problems
that are change resistant.
10. Software Engineering : A Layered
Technology
11. Software Engineering Approach

Software Engineering approach consist of


well defined process. process is associated with
different activities
Various processes involved in the software domain
:
- Phase development process: for developing the
software
- Managing process:- for managing resource,
schedule, budget etc.
Contd..
• Organizations may use different process(organize different activities in
different styles) to produce the same type of the problem . But a common
framework which is applicable to all types of Softwares regardless of their
complexity and size.
Framework activities:
-communication
-planning
-Modeling
-Construction
-deployment
Task sets :
-Task
-Milestones, Deliverables
-Quality assurance
Umbrella activities: which persist across the
software process.
Various umbrella activities as follows :
-Software Project Tracking and control
-Risk management
-Software quality assurance
-Formal Technical reviews
12. Software Process
Process- defines steps to be carried out in a particular
order
Software process deals with technical and management
issues of software development
• Each step has a well defined objective
• Requires people with specific skills
• Take specific input and produces well defined output
• Steps has proper entry and exit criteria
Software process

Software engineering process Process Management process

Development Project Management Software Configuration Management


process process
Contd….Project Engineering process
--Development Process- It is the central process which focus on the
activities directly related to the production of the software.
Eg: design, coding and testing.
For development process various development models exists as
follows:
-Build and fix model
-Waterfall model
-Iterative Model
-Evolutionary model
-Spiral Model
-RAD model

--Project Management process:- It focuses on the issues like planning


a project etc.
--Software Configuration Management process:- It focus on manage
the change.
Process management process—It focus on improving the process which in turn
improves the general quality and productivity for the products produced using
this process.
CMM(capability maturity model ) provides a roadmap for process improvement.
Contd..Characterstics of software process

• Precisely defined
• Repeatable and Predictable
• Support maintainability

You might also like