The keynote talk of MODULARITY:aosd•13 titled with "Motherhood and Apple Pie: Modularity in Modern Applications and Tools to Support It" by Steven P. Reiss http://aosd.net/2013/keynotes.html#Reiss
} Unlock In update AST structure • { Clear problems } Update tree { Update problems } Update Problems • Maintain the set of active problems (incremental) • Remove styles for nonexistent problems • Add squiggle styles for new/cleared problems When drawing text w/ squiggle style • Use squiggle paint to underline text 13/04/01 Page 12
processes Unknown control flow • Multiple threads running at once • Callback orders Our issues are dynamic • We want modularity to reflect the dynamics 13/04/01 Page 16
Multiple processes • Multiple machines • External code (calendar, obexftp, hcitool) Part of the program is data • Passed between applications • Representing the rule set 13/04/01 Page 20
the system Database is a system component Web application has its own constraints • Front end: HTML, JavaScript, CSS • Back end: JavaScript (Node.JS) • Communication (json via web sockets) 13/04/01 Page 25
keeping transforms simple to write • While keeping transforms independent • While keeping it easy to add transforms We must modularize transform dynamics • As well as their coding 13/04/01 Page 31
individual transforms Heuristics are spread throughout • Difficult to get a modular view • Difficult to understand what is going on Conflicting modularity concerns 13/04/01 Page 32
updates are ambiguous in general • No single representation supports all views Program View-Update Problem is worse • More complex semantics • More complex representations 13/04/01 Page 44
modular views of a system • That can be build dynamically Modularization Techniques • Show individual functions or components • Use elision within the components • Include all types of software artifacts • Allow save/restore of working sets 13/04/01 Page 48
inter-relation of the parts of a software package • Modularity is designing a system that is divided into a set of functional units (named modules) that can be composed into a larger application. A module represents a set of related concerns. It can include a collection of related components, such as features, views, or business logic, and pieces of infrastructure, such as services for logging or authenticating users. Modules are independent of one another but can communicate with each other in a loosely coupled fashion. • The use of individually distinct functional units, as in assembling an electronic or mechanical system. • Modularity is a general systems concept, typically defined as a continuum describing the degree to which a system's components may be separated and recombined. • Modularity is the property of computer programs that measures the extent to which they have been composed out of separate parts called modules. 13/04/01 Page 52
documentation, design notes, requirements, … • What is a concern? • Whatever we need to look at • For coding, debugging, understanding, … 13/04/01 Page 53
significant subtasks • Find Threads and tasks • Find Thread Queues • Based on programmer’s problem definition Provide customized time-based views 13/04/01 Page 73