Presentation–abstraction–control

Presentation–abstraction–control (PAC) is a software architectural pattern. It is an interaction-oriented software architecture, and is somewhat similar to model–view–controller (MVC) in that it separates an interactive system into three types of components responsible for specific aspects of the application's functionality. The abstraction component retrieves and processes the data, the presentation component formats the visual and audio presentation of data, and the control component handles things such as the flow of control and communication between the other two components.[1]

The structure of an application with PAC.

In contrast to MVC, PAC is used as a hierarchical structure of agents, each consisting of a triad of presentation, abstraction and control parts. The agents (or triads) communicate with each other only through the control part of each triad. It also differs from MVC in that within each triad, it completely insulates the presentation (view in MVC) and the abstraction (model in MVC). This provides the option to separately multithread the model and view which can give the user experience of very short program start times, as the user interface (presentation) can be shown before the abstraction has fully initialized.

History

PAC was initially developed by French computer scientist, Joëlle Coutaz in 1987.[2][3] Coutaz founded the User Interface group at the Laboratorire de Génie Informatique of IMAG.[4]

gollark: ```luafunction new.find(wildcard) local function recurse_spec(results, path, spec) -- From here: https://github.com/Sorroko/cclite/blob/62677542ed63bd4db212f83da1357cb953e82ce3/src/emulator/native_api.lua local segment = spec:match('([^/]*)'):gsub('/', '') local pattern = '^' .. segment:gsub('[*]', '.+'):gsub('?', '.') .. '$' if new.isDir(path) then for _, file in ipairs(new.list(path)) do if file:match(pattern) then local f = new.combine(path, file) if new.isDir(f) then recurse_spec(results, f, spec:sub(#segment + 2)) end if spec == segment then table.insert(results, f) end end end end end local results = {} recurse_spec(results, '', wildcard) return results end```
gollark: Yes, occasionally.
gollark: But Why™
gollark: Anyone got ideas for improving the skynet protocol? Skynet Genisys is coming out soon, and I can change stuff around for it.
gollark: My StorageSystem™

See also

Notes

  1. Kai, Qian (2009). "Interaction-oriented Software Architectures". Software Architecture and Design Illuminated. Jones and Bartlett Illuminated. p. 200. ISBN 978-0-7637-5420-4.
  2. "Coutaz, Joëlle". Encounters with HCI Pioneers - A Personal Photo Journal. 2015-12-05. Retrieved 2018-11-23.
  3. Coutaz, Joëlle (1987-10-01). "PAC". ACM SIGCHI Bulletin. 19 (2): 37–41. doi:10.1145/36111.1045592. ISSN 0736-6906.
  4. Unger, Claus; Bass, Leonard J. (2016-01-09). Engineering for HCI. Springer. p. 43. ISBN 9780387349077.
  5. Nigay, Laurence; Coutaz, Joëlle (1991). "Building User Interfaces: Organizing Software Agents". ESPRIT '91 Conference. Brussels, Belgium: November 1991. CiteSeerX 10.1.1.53.606.
  6. Nigay, Laurence (January 1994). Conception et modélisation logicielles des systèmes interactifs : application aux interfaces multimodales (PDF) (in French and English). PhD dissertation, 315 pages, University of Grenoble, France. pp. 131–268.
  7. Nigay, Laurence; Coutaz, Joëlle (1997). "Software Architecture Modelling: Bridging Two Worlds Using Ergonomics and Software Properties" (PDF). Formal Methods in Human-Computer Interaction. Springer-Verlag. chapter 3, pp. 49–73. ISBN 978-3-540-76158-7.

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.