Fundamentals of Software Architecture

Imagemap
Fundamentals of Software ArchitectureIntroductionTimeless conceptsRelationships between themExamplesLanguagesArchitectureTechnologyGoalsawareness when building systemschecklists for reviewing systemseducation of developers and architectsConceptsAtomicCombinableTechnology neutraldescribable namedCombinatorsB ! A (B requires A)B x A (excludes)B > A (refinement, specialization)Breaking Things DonwModularizeProceduresClassesComponentsServicesUser StoriesEncapsulate (! Modularize)Private MembersFrameworksFacade PatternComponentLayers/Rings/LevelsPacked Data WrapperContracts (! Modularize)InterfacesPre/Post ConditionsProtocol State  MachineMessage Exchange PatternsPublished APIsDecoupling (!Modularize)Message QueuesDeferred ConsistencyCompensating Tx (Transaction)Handle Crosscuts (> Modularize)Aspect OrientationInterceptorsApplication ServersException HandlingGo Down(x Encapsulation, ! modularize)Assemble in CJavascript in GWTIsolate (! modularize)OS ProcessSafety critical PartsIsolate TechnologyPOJOsHigh Abstraction Layers (HALs)JBI/SCAMDSDDo' s and Don´tsProtocols(!Formalization)TransactionsLocking / SynchronizationResource AccessMake Transparent (x Make Explicit)DOC MiddlewareOrthogonal PersistenceOR MappersMake Explicit (x Make transparent)DependenciesSOA, MessagingFunctional programmingProduct Line Engineering VariabilitiesPersistence: loading dataLimit FreedomSoftware ArchitectureDSL: expressivenessMDSD: skeletonsScade / SystemCDeclaration / Implementation (!Formaliza ...App servers (EJB)Plugin RunTime (Eclipse)ModelTransactional MemoryDon´t overspecifyTest semantic no syntax (code gen)High order Functions (foreach)Transactional memoryavoid sideeffectsFunctional programming (global variables ...Concurrency (share)DistributionUnamedParametrization (! modularize)Fuction ArgumentsCommand-line ArgsConfiguration FilesSimplicityWebLispXMLBootstrappingLanguagesIDEsCompilersStandard Library (! modularize, ! Types  ...LispMicrokernel OSsOrthogonalityClosuresProgram as DataMacrosDecentralization(! contracts)The InternetSOAEmergent BehaviourIdentityPointersGUIDsMac-AddressURIQualified NamesConceptualizationAbstractionOperating SystemHigh-level languagesModels, DSLsTypes & InstancesProgramming LanguagesComponentsModels & MetamodelsRDBMS / XML SchemasHierarchical Decomposition (>Modularize)Procedures/MethodsState MachinesComponentsSpecializeLanguagesInheritanceState MachinesFormalize (!Abstraction)LanguagesContractsModels (Metamodels)State MachinesViewpoints (!Formalization)Types / Instances / DeploymentBlackBox / WhiteBox4+1 ModelConfiguration FilesNotation (!Formalization)UMLJavaRubyGo Meta (!Modularize)Translate (!Go Meta, !Formalization)CompilersTransformersGeneratorsMacrosReflection (!Go Meta)LanguagesEmbedded System (static)Meta ProgrammingAOPInterpret (!Formalization, !Go Meta)Business Process EnginesData Driven System(Dynamic) LanguagesTrackingTainting (Static Analisys)Session StateACT PatternAutomate (!Formalization)BuildTestTranslateProcessIterateAgile processesRefactoringAlgorithmsCapture Best PracticesPatternsDSLsModelsTranslators
hideFundamentals of Software Architecture
hideIntroduction
leafTimeless concepts
leafRelationships between themInternal Link
hideExamples
leafLanguages
leafArchitecture
leafTechnology
hideGoals
leafawareness when building systems
leafchecklists for reviewing systems
leafeducation of developers and architects
hideConcepts
leafAtomic
leafCombinableInternal Link
leafTechnology neutral
leafdescribable named
hideCombinators
leafB ! A (B requires A)
leafB x A (excludes)
leafB > A (refinement, specialization)
hideBreaking Things Donw
hideModularize
leafProcedures
leafClasses
leafComponents
leafServices
leafUser Stories
hideEncapsulate (! Modularize)
leafPrivate Members
leafFrameworks
leafFacade Pattern
leafComponent
leafLayers/Rings/Levels
leafPacked Data Wrapper
hideContracts (! Modularize)
leafInterfaces
leafPre/Post Conditions
leafProtocol State Machine
leafMessage Exchange Patterns
leafPublished APIs
hideDecoupling (!Modularize)
leafMessage Queues
leafDeferred Consistency
leafCompensating Tx (Transaction)
hideHandle Crosscuts (> Modularize)
leafAspect Orientation
leafInterceptors
leafApplication Servers
leafException Handling
hideGo Down(x Encapsulation, ! modularize)
leafAssemble in C
leafJavascript in GWT
hideIsolate (! modularize)
leafOS Process
leafSafety critical Parts
hidebookmarkIsolate Technology
leafPOJOs
leafHigh Abstraction Layers (HALs)
leafJBI/SCA
leafbookmarkMDSD
hideDo' s and Don´ts
hideProtocols(!Formalization)
leafTransactions
leafLocking / Synchronization
leafResource Access
hideMake Transparent (x Make Explicit)
leafDOC Middleware
leafOrthogonal Persistence
leafOR Mappers
hideMake Explicit (x Make transparent)
leafDependencies
leafSOA, Messaging
leafFunctional programming
leafProduct Line Engineering Variabilities
leafPersistence: loading data
hideLimit Freedom
leafSoftware Architecture
leafDSL: expressiveness
leafMDSD: skeletons
leafScade / SystemC
hideDeclaration / Implementation (!Formalization, !Go Meta)
leafApp servers (EJB)
leafPlugin RunTime (Eclipse)
leafModel
leafTransactional Memory
hideDon´t overspecify
leafTest semantic no syntax (code gen)
leafHigh order Functions (foreach)
leafTransactional memory
hideavoid sideeffects
leafFunctional programming (global variables)
leafConcurrency (share)
leafDistribution
hideUnamed
hideParametrization (! modularize)
leafFuction Arguments
leafCommand-line Args
leafConfiguration Files
hideSimplicity
leafWeb
leafLisp
leafXML
hidemessagebox_warningBootstrapping
leafLanguages
leafIDEs
leafCompilers
hideStandard Library (! modularize, ! Types & instances)
leafLisp
leafMicrokernel OSs
hideOrthogonality
leafClosures
leafProgram as Data
leafMacros
hidemessagebox_warningDecentralization(! contracts)
leafThe Internet
leafSOA
leafEmergent Behaviour
hideIdentity
leafPointers
leafGUIDs
leafMac-Address
leafURI
leafQualified Names
hideConceptualization
hidemessagebox_warningAbstraction
leafOperating System
leafHigh-level languages
leafModels, DSLs
hidemessagebox_warningTypes & Instances
leafProgramming Languages
leafComponents
leafmessagebox_warningModels & Metamodels
leafRDBMS / XML Schemas
hideHierarchical Decomposition (>Modularize)
leafProcedures/Methods
leafState Machines
leafComponents
hideSpecialize
leafLanguages
leafInheritance
leafState Machines
hidemessagebox_warningFormalize (!Abstraction)
leafLanguages
leafContracts
leafModels (Metamodels)
leafState Machines
hideViewpoints (!Formalization)
leafTypes / Instances / Deployment
leafBlackBox / WhiteBox
leaf4+1 Model
leafConfiguration Files
hideNotation (!Formalization)
leafUML
leafJava
leafRuby
hideGo Meta (!Modularize)
hideTranslate (!Go Meta, !Formalization)
leafCompilers
leafTransformers
leafGenerators
leafMacros
hidemessagebox_warningReflection (!Go Meta)
leafLanguages
leafEmbedded System (static)
leafMeta Programming
leafAOP
hideInterpret (!Formalization, !Go Meta)
leafBusiness Process Engines
leafData Driven System
leaf(Dynamic) Languages
hideTracking
leafTainting (Static Analisys)
leafSession State
leafACT Pattern
hidemessagebox_warningbookmarkAutomate (!Formalization)
leafBuild
leafTest
leafTranslate
hidemessagebox_warningbookmarkProcess
hideIterate
leafAgile processes
leafRefactoring
leafAlgorithms
hideCapture Best Practices
leafPatterns
leafDSLs
leafModels
leafTranslators