Problem & Programming Idea Code, Run & Test Review Outcome Programmer Scene & PainOng Idea Paint Review Outcome Painter Digital Experience Creators Visual Experience Creators
look in your system, you can tell that the design is part of the same overall design style, theme, mood …is about Design and Style Consistency in all dimensions of the system Fed Brooks: “It is be>er to have a system...reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas” User interface, technologies, coding styles, naming convenFons, directory structures, classes, components, interfaces, internal and external behavior, deployment… Conceptual Integrity tries to limit the system complexity Conceptual Integrity simplifies collaboraOon when creaOng so-ware The Mythical Man-‐Month
on the noOon of a "file” (e.g. directories, devices, filesystems, named pipes and sockets are all sort-‐of files) • Smalltalk • "everything is an object", and the small set of other accompanying principles • SQL • "all data is in tables", with keys and constraints • Lisp • "everything is a list” h>p://c2.com/cgi/wiki?ConceptualIntegrity
• Keeps Conceptual Integrity and Unity across the system and teams, while limiOng complexity • Retains the final say in technical disputes or arguments within the team(s) Small teams with resonant minds could not need an specific tech leader
Management team Architecture team time Initial project team Prototyping team I1 I2 I3 Initial team Agile Project Kickoff Management team Architecture team time Initial project team Prototyping team I1 I2 I3 Feature 1 Team Feature2 Team Infraestructure Team I4 I5 Prototyping team • IntenOonal harmony (architecture) is explicitly idenOfied and then implemented • Accidental harmony (architecture) emerges from the mulOtude of individual design decisions that occur during development, only a-er which can we name that architecture Process Dimension Deployment ( Dimension Logical( (Dimension External Dimension Implementation Dimension Classes,'Modules,'Design'' Components,'Interfaces Use'Cases'/'User'Stories' UX'Guidelines' Run=me'Processes,'Threads'' Protocols,''InterAprocess' Communica=on' Implementa=on'Structure' and'Components' Frameworks,'Libraries' Base'Technologies,' Programming'Languages Infrastructure,'Hardware'and' Network'Topology' Data Dimension Environment Dimension Environments' Tools' Development'Process,' Methods'and'Prac=ces' Data'En==es' Data'Messages' INTENTIONAL EMERGENT GROWING
Architecture=Harmony is created as set of subopOmal design decisions that can be re-‐factor later on SP1 SP2 SP3 SP4 SP5 SP6 SP7 SP8 Sprint0 SP9 Building the Harmony Using Building ….. Using IntenOonal Emergent IntenOonal Emergent
each part/element is narrowed focused in its primary task Low Coupling each part is self-‐contained/orthogonal achieved thru separaOon of concerns and encapsulaOon Conceptual Integrity there is a consistent design* and style across all so-ware dimensions (*) programming is design Source: “The Art in Computer Programming”, By Andrew Hunt and David Thomas