软件架构的初步探索.ppt
Preliminary explore on software architecture,Bin Wang2010-10-28,Announcement,Personal viewpointCoincidenceBuilding area A Building ArchitectSoftware area A Software ArchitectBuilding area software area A Software Architect,Contents,Building process vs Software processEvolutionEnvisioning Architecture What Is Software Architecture Creating an Architecture Analyzing Architectures System Architect Conference China 2010Analysis of ad systemConclusion,Building process vs Software process,Building process vs Software process,Building solves the real worlds problems in thousands of yearsSoftware solves the virtual worlds problems in less than 70 years,Evolution,High-level Programming LanguagesAbstract Data TypesSoftware ArchitectureAs the size of software systems increases,the algorithms and data structures of the computation no longer constitute the major design problems.When systems are constructed from many components,the organization of the overall systemthe software architecturepresents a new set of design problems.,Envisioning Architecture,Influence of stakeholders on the architect,Envisioning Architecture,The Architecture Business Cycle,What Is Software Architecture,The software architecture of a program or computing system is the structure or structures of the system,which comprise software elements,the externally visible properties of those elements,and the relationships among them,Analogy,A building architect must design a building that provides accessibility,aesthetics,light,maintainability,and so on.A software architect must design a system that provides concurrency,portability,modifiability,usability,security,and the like,and that reflects consideration of the tradeoffs among these needs.,Internet Architecture,Internet Architecture,A layered view of libWWW,Internet Architecture,Deployment view of a Web client-server with a module decomposition view of the HTTP client and server components,Some Terms,Architectural PatternAn architectural pattern is a description of element and relation types together with a set of constraints on how they may be used.A pattern can be thought of as a set of constraints on an architectureon the element types and their patterns of interactionand these constraints define a set or family of architectures that satisfy them.examplesLayered Systemsclient-server A reference model A reference model is a division of functionality together with data flow between the pieces.A reference architecture A reference architecture is a reference model mapped onto software elements and the data flows between them.,Relations,an example,pattern,architecture,Creating an Architecture,Understanding Quality Attributes Achieving Qualities Designing the Architecture Documenting Software Architectures,Understanding Quality Attributes,Software:Functionality quality Quality attributes:System Quality Attributes Business Qualities System Quality Attributes:availability modifiability performance security testability usability,availability,modifiability,performance,security,testability,usability,Achieving Qualities,Availability Tactics,Modifiability Tactics,Performance Tactics,Security Tactics,Testability Tactics,Usability Tactics,Designing the Architecture,Architecture in the Life Cycle Designing the Architecture Forming the Team Structure Creating a Skeletal System,Architecture in the Life Cycle,Designing the Architecture,Choose the module to decompose Refine the module according to these steps:Choose the architectural drivers from the set of concrete quality scenarios and functional requirements.Choose an architectural pattern that satisfies the architectural drivers.Instantiate modules and allocate functionality from the use cases and represent using multiple views.Define interfaces of the child modules.Verify and refine use cases and quality scenarios and make them constraints for the child modules.Repeat the steps above for every module that needs further decomposition.,Documenting Software Architectures,Choosing the relevant viewsDocumenting a viewDocumenting information that applies to more than one view,Documenting Software Architectures,Analyzing Architectures,System Architect Conference China 2010,PerformanceBetter not using DBBetter not using java for calculationUsing Advanced IO technique for solving bottlenecksDistributed computing Distributed file systemSecurityDesign linear systemUsing low level API for detection,Analysis of ad system,Analysis of ad system,PerformanceAsynchronous programmingLinear designLoad balancerLevel one cachingC No db for ad put systemAvailability Load balancerTimeout settingLevel Two cachingDefending the crushed interfaceModifiability Business code is pure c code,independent on any server code TestabilityIt is very testable by nature Use automated tools,such as testngSecurityUse validation for anti-stealing-linkLinear design for defending DDOS,Conclusion,Architect is the most challenging in software engineeringArchitect is a generalA long time to become an architect,Useful books,Software Architecture In PracticeAn Introduction to Software ArchitectureThe Art of Software Architecture,