100% found this document useful (1 vote)
34 views

Software Engineering Basics

Software Engineering is the application of engineering principles to software development to obtain reliable and efficient software. It involves requirements analysis, design, coding, testing, and maintenance following well-defined processes and using formal methods and tools. Software Engineering is necessary for large, complex, safety-critical projects involving multiple teams but may not be needed for small, single-developer projects. It is still evolving as standard techniques and processes are developed and refined.

Uploaded by

NITISH DASA
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
34 views

Software Engineering Basics

Software Engineering is the application of engineering principles to software development to obtain reliable and efficient software. It involves requirements analysis, design, coding, testing, and maintenance following well-defined processes and using formal methods and tools. Software Engineering is necessary for large, complex, safety-critical projects involving multiple teams but may not be needed for small, single-developer projects. It is still evolving as standard techniques and processes are developed and refined.

Uploaded by

NITISH DASA
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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