what is software engineering? and why is it so hard?

15
What is Software Engineering? And why is it so hard?

Post on 19-Dec-2015

219 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: What is Software Engineering? And why is it so hard?

What is Software Engineering?

And why is it so hard?

Page 2: What is Software Engineering? And why is it so hard?

What is Computer Science?

• Three paradigms (CACM 1/89)– Theory (math): definitions, theorems, proofs,

interpretations– Abstraction (science): hypothesize, model,

experiment, analyze data, results– Design (engineering): state requirements,

design, implement, test

Page 3: What is Software Engineering? And why is it so hard?

What is Computer Engineering?

• The creative application of engineering principles and methods to the design and development of hardware and software systems [Government site]

• Computer Science in an Engineering School?

Page 4: What is Software Engineering? And why is it so hard?

What is the difference between software engineering and computer science?

• Computer science is concerned with theory and fundamentals

• Software engineering is concerned with the practicalities of developing and delivering useful software

• Computer science theories are currently insufficient to act as a complete underpinning for software engineering

Page 5: What is Software Engineering? And why is it so hard?

What is Software?

• Programs (instructions and data structures)

• Configuration files & Documentation!

• a data transformer .. or more?

• Data?

• System / Application

• Generic / Bespoke

• … Embedded, Distributed, Pervasive, …

Page 6: What is Software Engineering? And why is it so hard?

What is Software Engineering?

• Term coined in 1967 by a NATO study group, recognizing the “software crisis”

• The Software Crisis: poor quality, budget overruns, deadlines missed

• Not really a crisis … more of a depression, or just a “problem”

• Why?

Page 7: What is Software Engineering? And why is it so hard?

Hardware Improvements

• Software unfairly compared to hardware

• Need for software grows as hardware improves

• Changing goals

Percentage of system costs

0%

20%

40%

60%

80%

100%

55 65 75 85 95

Year

Hardware

Software

Softwaremntnance

Page 8: What is Software Engineering? And why is it so hard?

Software complexity evolves

• 50’s - mid 60’s– batch orientation

– limited distribution

– custom software

• mid 60’s - mid 70’s– interactive

– multiuser

– realtime

– database

– product software

• mid 70’s - late 80’s– distributed systems

– high bandwidth communications

– consumer impact

• late 80’s - current– personal computers

– powerful desktops

– GUIs

– client-server

– OO technologies

– the Internet

Page 9: What is Software Engineering? And why is it so hard?

Software is hard!

• No Silver Bullet, Fred Brooks, 1987, Essential Difficulties:– Complexity

– Conformity

– Changeability

– Invisibility

Page 10: What is Software Engineering? And why is it so hard?

Software Engineering is …

• 1969 … the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines

• 1989 … the disciplined application of engineering, scientific, and mathematical principles and methods to the economical production of quality software

• 1991 … the systematic application of methods, tools, and technical concepts to create complex, software-intensive systems that meet technical, economic, and social objectives - it involves several disciplines including computer science, management, psychology, design, and economics.

Page 11: What is Software Engineering? And why is it so hard?

Sommerville’s Definition

• Software engineering is an engineering discipline which is concerned with all aspects of software production

• Software engineers should:– adopt a systematic and organized approach to

their work– use appropriate tools and techniques depending

on the problem to be solved, the development constraints and the resources available

Page 12: What is Software Engineering? And why is it so hard?

What are the key challenges facing software engineering?

• Coping with legacy systems– Old, valuable systems must be maintained and updated

• Coping with increasing diversity (heterogeneity)– Systems are distributed and include a mix of hardware

and software

• Coping with demands for fast delivery– There is increasing pressure for faster delivery of

software

Page 13: What is Software Engineering? And why is it so hard?

Topics Include:

• Project management• Requirements

identification• Design• Testing• Maintenance• Quality• Process

• Verification• Tools• Modeling • Metrics• Risk management• Configuration

management• Reuse

Page 14: What is Software Engineering? And why is it so hard?

Professional and ethical responsibility

• Software engineering involves wider responsibilities than simply the application of technical skills.

• Software engineers must behave in an honest and ethically responsible way if they are to be respected as professionals.

• Ethical behaviour is more than simply upholding the law.

Page 15: What is Software Engineering? And why is it so hard?

Skills needed by Software Engineers

• “Hard” skills– Technological background– Ability to learn/adapt

• “Soft” skills– Communication– Sales and marketing– Teamwork