(C) P. H. Welch. 20031 Software Engineering Chapter 3.

Slides:



Advertisements
Similar presentations
Copyright © 1998 by Addison Wesley Longman, Inc. 1 Chapter One Preliminaries, including –Why study PL concepts? –Programming domains –PL evaluation criteria.
Advertisements

Multimedia Specification Design and Production 2013 / Semester 1 / week 7 Lecturer: Dr. Nikos Gazepidis
CSI 3125, Preliminaries, page 1 Programming languages and the process of programming –Programming means more than coding. –Why study programming languages?
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
© Martyn Thomas Associates Extreme Hubris Martyn Thomas me if you want evidence or references for any of the.
Software Evolution Managing the processes of software system change
Introduction to Software Architecture. What is Software Architecture?  It is the body of methods and techniques that help us to manage the complexities.
Reasons to study concepts of PL
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
Software Crisis It was in late 1960’s Many software projects failed.
CS4/542- Software Engineering  Software Design and Development  Required Text -- Code Complete by Steve McConnell  (Focuses on the problems of designing.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
PROGRAMMING LANGUAGES The Study of Programming Languages.
CSE 425: Intro to Programming Languages and their Design A Few Key Ideas No particular language is a prerequisite for this course –However you should be.
Introduction to Software Engineering. Topic Covered What is software? Attribute of good S/w? Computer Software? What is Software Engineering? Evolving.
Principles of User Centred Design Howell Istance.
CSCI/CSIS 603 Object-Oriented Design Patterns “Those who cannot remember the past are condemned to repeat it.” – Georges Santayana “Those who do not study.
An Introduction to Programming and Object-Oriented Design Using Java By Jaime Niño and Fred Hosch Slides by Darwin Baines and Robert Burton.
Software EngineeringIntroduction Slide 1 Software Engineering Mr. Ahmad Al-Ghoul.
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
CSE 303 – Software Design and Architecture
CompSci 105 SS 2005 Principles of Computer Science Lecture 4 Lecturer: Santokh Singh.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
2-Oct-15 1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts ICS Software Engineering.
Chapter 6 : Software Metrics
2-Oct-15 Introduction to SWE1 Introduction to Software Engineering Softwares Importance of SWE Basic SWE Concepts.
Chapter 1 Introduction.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
CSCI-383 Object-Oriented Programming & Design Lecture 1.
CS1502 Formal Methods in Computer Science Lecture Notes 16 Review for Exam2 continued Theory of Computation Introduction.
1 Programming Languages Marjan Sirjani Course web site:
Lecture on Computer Science as a Discipline. 2 Computer “Science” some people argue that computer science is not a science in the same sense that biology.
Chapter 1: Introduction Omar Meqdadi SE 2730 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Basic of Software Testing Presented by The Smartpath Information System An ISO 9001:2008 Certified Organization
Programming Languages Design Considerations (Qualities) Readability –Simplicity and Clarity –Orthogonality –Control Statements –Data Types and Structures.
Software Engineering Chapter 3 CPSC Pascal Brent M. Dingle Texas A&M University.
SOFTWARE ENGINEERING Chapter 1. Introduction We can’t run the modern world without software. Why? Discussion….
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 20 Slide 1 Critical systems development 3.
What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,
1 EE29B Feisal Mohammed EE29B: Introduction to Software Engineering Feisal Mohammed Ph: x3156.
The Nature of Computing INEL 4206 – Microprocessors Lecture 3 Bienvenido Vélez Ph. D. School of Engineering University of Puerto Rico - Mayagüez.
Software Design Process
The Nature of Computing INEL 4206 – Microprocessors Lecture 2 Bienvenido Vélez Ph. D. School of Engineering University of Puerto Rico - Mayagüez.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Engr. Isabelo Jun D. Paat, ME-CoE Lecturer 1 Programming Languages.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
Introduction HNDIT DBMS 1. Database Management Systems Module code HNDIT Module title Database Management Systems Credits2HoursLectures15.
Programming Language Design Issues Programming Languages – Principles and Practice by Kenneth C Louden.
MANAGING COMPLEXITY Lecture OO01 Introduction to Object-oriented Analysis and Design Abstract Data Types.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 1 Slide 1 Chapter 1 Introduction As modified by Randy Smith.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Object Oriented Systems Design
CompSci 280 S Introduction to Software Development
INTRODUCTION The economies of ALL developed nations are dependent on software. More and more systems are software controlled Software engineering is concerned.
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Chapter 5 – Requirements Engineering
The Development Process of Web Applications
Software Engineering Development of procedures and systematic applications that are used on electronic machines. Software engineering incorporates various.
Chapter 1 Reasons to study concepts of PLs Programming Domains
Chapter 1 Preliminaries.
Lecture 2 of Computer Science II
Software Engineering (CSE 314)
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Chapter 1 Welcome Aboard!. Chapter 1 Welcome Aboard!
Introduction To software engineering
Programming Languages 2nd edition Tucker and Noonan
CS385T Software Engineering Dr.Doaa Sami
Principles of Programming Languages
What Is Good Software(Program)?
Presentation transcript:

(C) P. H. Welch Software Engineering Chapter 3

(C) P. H. Welch Software Engineering...the software crises & some philosophy

(C) P. H. Welch Software Engineering No machines No programming problems Mild machines Mild problems Gigantic machines Gigantic problems E. W. Dijkstra (Turing Award Lecturer – 1972)

(C) P. H. Welch Software Engineering The computer industry is in its infancy It produces labour saving products (hardware and software) Its method of production is manual, labour intensive and fraught with human error

(C) P. H. Welch Symptoms of Crisis Systems that are:- Late Over budget (excessively) Not to specification Unreliable Inflexible Hard to maintain Not reusable Not portable

(C) P. H. Welch Examples...??? IBM OS/360 Ada PL/1 System ‘X’

(C) P. H. Welch Some Causes Failure of organizations to understand the life- cycle implications of software development Grave shortage of trained software engineers “von Neumann” architecture Tendency of organizations to become entrenched in archaic programming languages and practices (acknowledgements to Grady Booch)

(C) P. H. Welch Fundamental Problem Workers “Nobody knows what precisely they are supposed to be doing.” Management “Nobody knows what the hell is going on!!!”

(C) P. H. Welch We are expected to produce “complex” systems:- Large (1 M lines of code) Long lived (15 years) Continuously changing specifications (that’s life!) Physical constraints (of hardware technology – also changing) High reliability (and fault tolerance)

(C) P. H. Welch How can we master complexity? Limitations of the human mind to cope with more than 7 (  2) things at once “I have only a very small head and I must live with it.” - E. W. Dijkstra

(C) P. H. Welch “A complex system that works is invariably found to have evolved from a simple system that worked.” -John Gall (Fifteenth law in : “Systematics: How Systems Work and Especially How They Fail” Times Books, New York, 1977)

(C) P. H. Welch Systems with complex properties... are complicated?...must be built from systems with simple properties Replicated, perhaps, to a massive extent Combined in a simple way Reusable

(C) P. H. Welch software engineering

(C) P. H. Welch Software Engineering The computing professional must become both an: Engineer Working from a base of formal theory and a set of applied principles Artist Creating systems from the raw materials of data structures & algorithms, but within the above disciplines

(C) P. H. Welch Software Engineering “A disciplined artistry” – G. Booch sets goals for good systems identifies principles to help achieve the goals provides tools to support the principles

(C) P. H. Welch Software Engineering Goals Simplicity: Understandability Verifiability Reliability Modifiability Efficiency Reusability

(C) P. H. Welch Software Engineering Principles Abstraction Information Hiding Structuring Localisation Uniformity Completeness Verifiability

(C) P. H. Welch Beyond Syntax and Semantics This course is not going to just address the syntax and semantics of occam as a programming language. Without a conscious understanding of software engineering principles, we will continue to fail to achieve the goals of software engineering. For multi-processor systems, the consequences of software mis-engineering will be particularly difficult to overcome.

(C) P. H. Welch Abstraction The extraction of essential details of an “object” that are necessary and sufficient to characterise (and hence, use) it the omission of inessential details (that clutter up the mind and commit you to particular implementation details)

(C) P. H. Welch Abstraction “In the development of our understanding of complex phenomena, the most powerful tool available to the human intellect is abstraction” C. A. R. Hoare “Notes on Data Structuring”: in ‘Structured Programming’, Dahl, Dijkstra, & Hoare, Academic Press, 1972

(C) P. H. Welch Abstraction Information Hiding Abstraction when applied achieve Structuring Attributes of good abstractions Localisation Uniformity Completeness Verifiability

(C) P. H. Welch Abstraction...simplicity versus complexity

(C) P. H. Welch Successful Strategies for Design 1.Design so simple that obviously there are no deficiencies. 2.Design so complex that there are no obvious deficiencies. C.A.R. Hoare, ACM Turing Award Lecture, 1980

(C) P. H. Welch Successful Strategies for Design “Ada covers a much larger application domain than Pascal. Hence, it is inevitably more complex than Pascal.” J. Ichbiah “The more complicated the subject we are trying to discuss, the more simple must be our language for discussing it.” N. Wirth

(C) P. H. Welch Language Reference Manuals LanguageNo. of Pages Algol-6043 Pascal38 BCPL20 occam18 occam222 Ada275

(C) P. H. Welch Entia non sunt multiplicanda praeter necessitatem William of Occam (XIV century)