Software Engineering



--Software Engineering--

Define Software?

1.Number of seperate programs
2.Includes User Documentation
3.Includes System Documentation
4.Includes Configuration files

SO,

More programs + system-doc + user-doc + config-files = a Software !
------------------------------------------------------------------------------------------------

Difference between Software and programs? (8)


Programs -> ad hoc devolepment, Software -> Systematic Devolepment
\_______ _______/ \_________ ________/
\/ \/
only programmers Done by the group
ideas are there!


No User manual Have User manual

Only one devoleper Have more devolepers

Simple Interface Have Complex Interface

One User(Author) Have more users(Customers)

Sparse Documentation Have a detailed Documentation

Small Large


What is Software Engineering?

Software Engineering,
Is an engineering Discipline, concerned with all aspects of Software Production
from early stages of system specification through maintaining the system.


What is an engineering Discipline?

Make things work by applying

1.theories
2.methods
3.tools, where appropriate
And tring to find the solutions to problems when there aren't any suitable
theories,methods.

-----------------------------------------------------------------------------------------------------------
Software Engineering(IEEE)

THE APPLICATION of a

Systematic,
Disciplined,
Quantifiable approach to the devolepment,
Operation
And maintenance of software.


That is the application of engineering to software.




Characteristics of Software Engineering(5)

1.Product of a team
2.S.E. borrows knowledge from deifferent areas(IT,electrcal engineering,maths,physics,business mngmnt)
3.Modern engineering based on the systematic collection of past experiances.
4.We take exact mechements.
5.It involves tradeoffs between alternatives.


Technology
^
|
|
| Engineering
| ----------
| --
| /
| /
| Craft /
| ------/
| /
| /
| /
|/Art
|
|___________________________________>Time

~Writing a software~ is not an art anymore!
Its Engineering! (Coz Systematic use of past experiance and Scientific basis)

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



What is Computer Systems Engineering?

It is concerned with devoleping both HARDWARE AND SOFTWARE.Hence it encompasses Software Engineering.

Ex- Robot,Mobile Phone


Computer Systems Engineering Life cycle

Feasibility Study
||
||
\/
Requirements analysis and Specification
||
||
\/
|----->Hardware Devolepment----->|
Hardware Software Partitioning=========>| |======>Integration and Teseting.
|----->Software Delovepment----->|


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

Software Engineering ~Why Bother?~

1.To solve large,complex problems using modern technology
2.Software engineers break large projects into smaller,more manageble parts
3.When we use languages like c++,java to solve 'real' problems, Software Engieering is essential.
4.To acquire the skills,to be a better software developer.



The Software crisis( why softwares fail?)

1.Expensive to devolep
2.Fail to meet user requirements
3.Hard to debug
4.Softwares usualy delivered late
5.Difficult to maitain
6.crash frequently



Software Qualities


1.Functionality
2.Reliability
3.Usability
4.Effeciency
5.Maintainability
6.Portability

When you goto larger projects(scale!)=>

complexity increases , you have to work in LARGE TEAMS , Quality of software becomes more important(because of real users)


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

Software Engineering history

1950-Assembly Languages

Early 1960- High level Languages and Control flow design

Late 1960-GOTO and Structured programming

Early 1970-Data Structure Design

Late 1970-Structured Analysis

1980- Object Oriented Design



Evolution of Software devolepment techniques



ad hoc
||
||
\/
control flow design
||
||
\/
Structured Programming
||
||
\/
Structured Analysis and Design
||
||
\/
Object Oriented SE




Modern Software Engineering Techniques


`Analysis and Specification techniques
`debugging and testing techniques
`software matrics
`software project management
`software quality assurance
`case tools

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

Software devolepment life cycle ...(6 phases)

Feasibility study
||
||
||
\/
Requirements Analysis and Specification
||
||
||
\/
Design
||
||
||
\/
Implementation
||
||
||
\/
Testing
||
||
||
\/
Maintenance


EMPHASIS HAS SHIFTED FROM ERROR CORRECTION ---TO--->ERROR PREVENTION.
**************Modern days we focus on detecting errors in each phase of development***************

Long ago detecting errors was done only at the testing phase.But now we try to detect errors
at each phase of tha devolepment.It reduces amount of work that must be re-done!!!

EX-Think you found a error in tha Requirement analysis phase while you are in the testing phase,NOW
you have to go back to requirement analysis phase and come again!! so its a waste of time.So we try to find errors
at each phase!(not only at testing phase)



//these each and every phase has its own activities


What is a Model?
'A WAY' to travel through the LIFE CYCLE

Why life-cycle Models ?

It encourages Systematic and disciplined software development.


Life Cycle process Models (5)

1.classical waterfall model
2.iterative waterfall model
3.prototyping model
4.incremental model
5.spiral model