Nothing Special   »   [go: up one dir, main page]

Software Engineering Basics

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

Software Engineering

The establishment & use of sound Engg principles in order to


obtain economically software that is reliable and works
efficiently on real machines
software: programs, documents&data
• Software Engineering is...
– the study of software process, software development
principles, methods and tools
• requirements and design notations
• implementation strategies
• testing methods
• maintenance techniques
• Management strategies
– the production of quality software, delivered on-time,
within budget, and satisfying users’ needs
What type of software?
• Small single-developer projects can typically get
by without Software Engineering
– typically no deadlines, small budget (freeware), not
safety-critical
• Software Engineering is required for
– large projects (100,000 lines of code and up)
– multiple subsystems
– teams of developers (often geographically dispersed)
– safety-critical systems (software that can kill people...)
What is Engineering?
• Engineering is
– sequence of well-defined, precisely-stated, sound steps,
which follow method or apply technique based on some
combination of
• theoretical results derived from a formal model
• empirical adjustments for un-modeled phenomenon
• rules of thumb based on experience
• requires compromise
• This definition is independent of purpose ...
– i.e. engineering can be applied to many disciplines
Software Engineering is young
• Traditional engineering disciplines have been
around for hundreds, if not thousands, of years
• Software Engineering still needs
– standard specification and design techniques
– formal analysis tools
– established processes
• Currently experimenting in
– techniques, notations, metrics, processes, architecture,
etc.
– Some success has been reported
– A foundation is being formed...
Software Engineering
1)System Engineering
2)Analysis&Specification
(Requirement Analysis, Risk analysis,cost
estimation(LOC,FP for cost effectiveness),
Identification of Technical & manpower
requirements, prototyping)
3)Design
-system design(modules-cohesion&coupling),
-program design-scheduling&tracking.
(30% to 40% of highly skilled persons)
4) Coding (20% less skilled)
5) Testing : (skilled manpower)for effective functioning &trouble free system.
(white box testing, black box testing, validation testing&debugging)
6)maintenance: (skilled)
(updating existing system, attending trouble shootings, re-engineering)
• Three major types of maintenance
– Perfective (60.5%)
• Changes to improve the software product
– Adaptive (18 %)
• Responding to changes in a product’s environment
– Corrective (17.5 %)
• Fixing bugs...

-Software re-engineering
-Reverse engineering
-Forward Engg
Evolving Role of Software
• Software is both a product &service and the
means for delivering a product or service
• The most important product of our time:
information
• Advances in hardware performance result in
ever more complex software applications
Myths: Customer
• “A general statement of objectives is
sufficient to begin writing programs -- we
can fill in the details later”
• “Project requirements continually change,
but changes can be made easily because
software is flexible”
Myths: Developer
• “Once we write the program and get it to
work, our job is done”
• “Until I get the program running, I really
have no way of assessing its quality”
• “The only deliverable for a successful
project is the working program”
Myths: Management

• “We already have a book full of standards


and procedures”
• “My people have state-of-the-art software
development tools, because we bought them
the newest computers”
• “If we get behind schedule, we can just add
more programmers”
Software Engineering
• Process
– Life-cycle support for all activities, from
conception to retirement
• Methods
– Well-defined, formal techniques for each step
in the life-cycle process
• Tools
– Description languages and support software for
particular methods

You might also like