An interview with dave parnas june 2018 communications. I speak on topics including engineering leadership, agile development, and other factors that contribute to world class software development organizations. The link between modularity and information hiding was developed in papers of hoare and parnas in the early 1970s 16, 17, 28, 29. At icse 2001 we are honoring the work of one of the grandmasters of our field, highlighting the fundamental ideas that david l. Abstraction is hiding the implementation details by providing a layer over the basic functionality information hiding is hiding the data which is being affected by that implementation. But in software design, information hiding has been an important design principle ever since it was first discussed in a paper by david parnas in 1972. On the criteria to be used in decomposing systems into modules, cacm, dec. On the criteria to be used in decomposing systems into. A key question in information hiding is which information to hide and which information to expose. On the other hand, most industrial software developers do not apply the idea. Hoare suggested using scoping restrictions to hide a particular kind of information, the in.
Parnas, information distributions aspects of design methodology, proceedings of ifip congress 71, 1971, booklet ta3, pp. I founded my company, construx software, more than 10 years ago. The concept of information hiding ih comes from the. History of information hiding information hiding was first introduced in david parnas 1972 paper. Encapsulation is just putting all similar data and functions into a group e. Parnas is a practical guide to key software engineering concepts that belongs in the library of every software professional. Information hiding serves as an effective criterion for dividing any piece of equipment, software or hardware, into modules of functionality. The key idea is to design software modules around a single design decision that may change. Information hiding is usually done for internally changeable code, which is sometimes especially designed not to be exposed.
Parnas emphasized that poor information distribution amongst components could lead to almost invisible connections between supposedly independent modules, and proposed that information hiding was a way to combat this problem. The secret history of information hiding request pdf. On the criteria to be used in decomposing systems into modules david l parnas, 1971. Information hiding, encapsulation and modularity of software. We investigate proof rules for information hiding, using the recent formalism of separation logic. In computer science, information hiding is the principle of segregation, of the design decisions in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decision is changed. Informationhiding urls for easier website evolution. The concept of information hiding was first described by parnas 1971 who suggested that access to information should be restricted to reduce the interconnectedness of a system. Parnas, designing software for ease of extension and. Parnas recognized that a flowchartbased module structure would often be more efficient, because program execution would jump.
Such stored and derived data is not expounded upon, most. Modularity can also be viewed from the technical perspective of module constructs in programming languages. The concept of information hiding was first described by david parnas in parnas 1972. Parnas information hiding approach to software modularization parnas 1972 is one of many indications that knowledge in software engineering cannot. There are three aspects in information hiding systems. Definition and documentation of software architectures. Information hiding as the basis for modular program construction. Revisiting information hiding cmu school of computer science. In 1972, parnas 207,208 introduced the wellknown concept of information hidinghiding design decisions in modules. Their modules are based on parnas work on information hiding 25, which deals with single instances of the hidden data structure.
On the other hand, most industrial software developers do not apply the idea and many consider it unrealistic. The secret history of information hiding springerlink. Middle road software 1261 david parnas 16 march 2010 00. Parnas contrasted information hiding with flowcharts i. Information hiding for programmers is executed to prevent system design change. The parnas tells the unknown story of giuseppe pardo roques, the leader parnas of the sephardicjewish community of pisa. He proposed that this would facilitate splitting of a system into modules while maintaining a userfriendly external interface and allowing implementation details to. Parnas invented and expounded, including such ideas as information hiding, abstract interfaces, the uses relation, program families. The purpose of information hiding is to obtain a modularization of the code of a system that isolates changes into single modules. This paper discusses modularization as a mechanism for improving the flexibility and comprehensibility of a system while allowing the shortening of its development time. Pardo was a very sick man with an extreme phobia of animals, particularly dogs. Data abstraction and information hiding 5 single abstract variable, of a simple type say, sequence of byte. The concept of informationhiding as a software design principle is widely accepted in. This month i participated in ibm haifas programming languages and software engineering plse seminar.
There i had the opportunity to have lunch with david parnas, one of the world pioneers in the field of software engineering. Some people see data abstraction as an algorithm design methodology only, as a. Parnas partitioning can therefore be effectively used for systems where your only knowledge of a possible change is the fact that your current design assumption will be revised. Each module class should encapsulate certain knowledge or design decisions. Information hiding derived from definition by edward berard concept due to parnas decide what design decisions are likely to change and which are likely to be stable put each design decision likely to change into a module assign each module an interface that hides the decision likely to change, and exposes only stable design. First proposed by david parnas in a classic paper on the criteria to be used in decomposing systems into modules more than 40 years old, but still one of the most important papers in all of systems. The last three items are opportunities for researchers. Information hiding 1 the concept of information hiding ih comes from the seminal paper, on the criteria to be used in decomposing systems into modules, cacm, dec.
It is exactly this that the concept of information hiding 5, encapsulation, or abstraction 6 is intended to do for soft ware. Separation and information hiding acm sigplan notices. Information hiding is characterized by the idea of secrets, design and implementation decisions that a software developer hides in. See encapsulation objectoriented programming for details. The concept of informationhiding as a software design principle is widely accepted in academic circles.
Many successful designs can be seen as successful applications of abstraction or information hiding. Abstraction vs information hiding vs encapsulation stack. It is the hiding of changeable information into programming modules. The protection involves providing a stable interface which protects the remainder of the program from the implementation the. Many researchers are trying to carry out research by applying this concept in information hiding. Parnas the secret history of information hiding the concept of informationhiding as a software design principle is widely accepted in academic circles. Build tools to make it easier to produce good documents. I deliver keynote speeches at public and private conferences every year. The concept of information hiding is based on the observation that changes outside a program such as a revision of other programs, hardware changes, or requirements changes only affect the correctness of that program if information that would have to be used when showing the correctness of that program was invalidated by. Information hiding first came to public attention in a paper david parnas wrote in 1972 called on the criteria to be used in decomposing systems into modules communications of the acm, december 1972. In essence, we use the separating conjunction to partition the internal resources of a module from those accessed by the modules clients. In computer science, information hiding is the principle of segregation of the design decisions. Parnas, \on the criteria to be used in decomposing systems into modules, communications of the acm, vol. This classic paper by parnas is the rst publication of the design concept known as information hiding.
Separation and information hiding ucl computer science. I thought id kick things off by revisiting a few of my favourite papers from when i very first started this exercise just over two years ago. Granted, there are manual and automatic transmissions and other such differences, but on the whole, cars maintain a unified interface. Hiding implementation details can be used in a very local setting to make a confusing expression understandable. Parnas suggested the heuristic to hide what is likely to change 58. In order to make the design, manufacturing, and maintenance of a car reasonable, the complex piece of equipment is divided into modules with particular. Parnas, a technique for software module specification with examples.
If design decisions are hidden, certain program code cannot be modified or changed. It does not make sense to talk about software aging. The concept of information hiding is based on the observation that changes outside a program such as a revision of other programs, hardware changes, or requirements changes only affect the correctness of that program if information that would have to be used when. Build tools to make useful documents even more useful.
David parnas david parnas is professor of computer science at limerick university in ireland, where he directs. The concept of information hiding was first described by david parnas in parnas. Experience has demonstrated the high utility of the parnas partitioning approach to the design of flexible computer software. On the criteria to be used in decomposing systems into modules. The concept of informationhiding as a software design. For instance, a car is a complex piece of equipment. In the more concrete setting of an objectoriented programming language, the notion is used to mean either an information hiding mechanism, a bundling mechanism, or the combination of the two. Software design software aging serg software aging. Parnas is the father of information hiding, a term he coined and which became popular through his seminal paper on the criteria to be.