(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)