Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations

Presentation on theme: "What is Software Engineering? And why is it so hard?"— Presentation transcript:

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

2 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

3 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?

4 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

5 What is Software? Programs (instructions and data structures) Configuration files & Documentation! a data transformer.. or more? Data? System / Application Generic / Bespoke … Embedded, Distributed, Pervasive, …

6 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?

7 Hardware Improvements Software unfairly compared to hardware Need for software grows as hardware improves Changing goals

8 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

9 Software is hard! No Silver Bullet, Fred Brooks, 1987, Essential Difficulties: –Complexity –Conformity –Changeability –Invisibility

10 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.

11 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

12 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

13 Topics Include: Project management Requirements identification Design Testing Maintenance Quality Process Verification Tools Modeling Metrics Risk management Configuration management Reuse

14 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.

15 Skills needed by Software Engineers “Hard” skills –Technological background –Ability to learn/adapt “Soft” skills –Communication –Sales and marketing –Teamwork

Download ppt "What is Software Engineering? And why is it so hard?"

Similar presentations

Ads by Google