File Name: software architecture design methodology and styles .zip
Sign in. Ever wondered how large enterprise scale systems are designed? Before major software development starts, we have to choose a suitable architecture that will provide us with the desired functionality and quality attributes.
Published on Sep 20, Lecture and presentation at Lemax on SlideShare Explore Search You. Submit Search. Home Explore. Successfully reported this slideshow. We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads.
You can change your ad preferences anytime. Software architecture, methodologies and design. Upcoming SlideShare. Like this presentation? Why not share! Embed Size px. Start on. Show related SlideShares at end. WordPress Shortcode. Published in: Software. Full Name Comment goes here.
Are you sure you want to Yes No. Show More. No Downloads. Views Total views. Actions Shares. No notes for slide. Software architecture, methodologies and design 1. Agenda: - Software architecture overview - Software development methodologies overview - Design and modeling principles overview - Architectural patterns overview - Q and A 2. What is Software Architecture? The highest possible concept of a software system in its environment The highest level concept of the expert developers I define architecture as a word we use when we want to talk about design but want to puff it up to make it sound important.
Architecture is about the important stuff. Whatever that is!!! Ralph Johnson 7. It is not architecture if there is no boxes and lines Simon Brown 8. Side by side comparison and analogy with C4 software and architecture visualisation system by Simon Brown Enterprise software or Line of Business software common architectural contexts: - Reliability or less fragility - Testability - Flexibility or less rigidity - Reusability and modularity - Maintainability - stability, analyzability, readability, changeability, testability Consequences of ignoring architectural context and quality attributes Big Ball of Mud - absence of any perceivable architecture Layered architecture - Separation of Concerns - Cross cutting concerns?
Microkernel plug-in architecture - Core - minimal logic to run the system and business logic - Plug in - standalone independent module with additional logic - Example - claims processing, each state with own plug in - modern browsers implementations - Business applications Event-driven architecture - Broker topology - message queue - vs - Mediator topology - series of parallel events - Transaction problem - Delphi Corba Pipeline architecture - Self contained and independent from other filters - Designed to perform single task - Four types of filters - Example: Captures data from different sources and multiple formats and, process them and sends them to output Space-based architecture - Separate, independent, scalable processing units - Middleware manages: input and sessions, data replication, distributed request processing, dynamic deployment - Commercial implementations: javaspaces, gigaspaces, ibm object grid, oracle coherence… - All about variable scalability variable load or inconsistent peak times - Not good for traditional relational db systems and complex and expensive Microservices architecture - Distributed - Protocol aware heterogeneous interoperability Java,.
Service-oriented architecture - Distributed: Protocol agnostic heterogeneous interoperability - Contract decoupling - Integration server integrability, b2b - Good for large organizations with lots of legacy systems - Commercial implementations: MS BizTalk, IBM WebSphere Service-based architecture Advantages: - Unit of Work transactional context - Performance and robustness joins, orchestration - Domain scope - Shared resources - Feasibility Tradeoffs: - Service deployment and testing - Deployment pipeline planning - Change control - Bounded context - Couplings, schema changes Service-based architecture - transition to microservices Development Methodologies Database First bottom-up db module module module ui - Most common methodology - strong emphasis on database design - Starts with modeling your storage device schema - Relational database is optimized for easy or optimized general purpose querying not for actual solution - Awkward object models of actual solution domain - impedance mismatch problem Write a failing test - red 2.
Write just enough code to make your failing test pass - green 3. Refactor your code to make it better - apply modeling principles or project guidelines and standards - your test is red again 4. Repeat everything until results are satisfactory Development Modeling Principles Low coupling and High cohesion - Coupling: extent to which components know about each other - Degrees of coupling: 1 Tight coupling pathological coupling - depending on inner workings of component or system 2 External coupling - components share externally imposed protocol rest, soap 3 Control coupling - one component passes info to others what to do 4 Loose coupling - data coupling - components are bound to shared data context A B C A B C Low coupling and High cohesion GOF: Program to an interface - not to implementation - Classes should aware only of interface and not of implementation - It means your code should operate on interfaces rather than concrete objects with concrete implementation - We should avoid pathological coupling - depending on inner workings of component or system - Makes your code much more flexible interface Impl.
Client code Martin, aka Uncle Bob SRP - Single Responsibility Principle - Textbook example: - We need to calculate some value using certain algorithm using some values stored in database - How many responsibilites are there? Fragility, changeability, testability, analyzability, stability? Small, over-fragmented classes smell on needless complexity and lack of cohesion! OCP - Open-Closed Principle - Software entities modules, classes, functions - should be open for extension and closed for modifications - OR: 1 Code is opened to extension 2 Code is closed for modifications - No code lives in total isolation - complete decoupling is not possible.
We want to prevent fragility. Drawing different geometrical shapes on screen - square, circle, rectangle, triangle … LSP - Liskov Substitution Principle - Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.
LSP - Liskov Substitution Principle - Breaking the LSP will also break an OCP principle - If introduce derived class, for which we need to modify calling code - that modification can easily cascade through system and dependent modules bringing unwanted undesired behaviour and errors.
We want only what we use! Both should depend on abstraction. Details should depend upon abstraction. DIP - Dependency Inversion Principle - Same basic idea as OCP, but, it tells us exactly what our strategic closure should be - module level - Between modules there should be layer of abstraction upon both modules depend, rather on each other directly.
DIP - Dependency Inversion Principle - And in case of enterprise architecture - that is exactly what we are trying to accomplish - to create framework for our enterprise or business!
DIP - Dependency Inversion Principle - Can be used whenever two pieces of code talk to each other - to be able to supply alternative implementation dynamically!
Dependency Injection DI and Inversion of Control IOC - Hollywood Principle - if we use dependency inversion - how that dependency should be supplied to a higher level module or a class? Usually some 3rd party library, but not necessarily. By using an IoC Container, the client code can simply depend on an interface or abstract class and not have a care in the world as to what is providing it with the concrete implementation at runtime.
Architectural Patterns Transactional Script Architectural Pattern - Transactionional Script Strengths - Simple, easy and fast to develop - Suitable for small schemas - Transactionional Script Weaknesses - Hard or impossible to test - Procedural style, no modelling - Hard to compensate schema changes Domain models, domain modeling and some other architectural patterns - Domain models, Anemic Domain Models, Identity objects, Value objects and Bounded Context - Data Repositories, Aggregate roots - Presentation patterns, Service patterns, etc You just clipped your first slide!
Clipping is a handy way to collect important slides you want to go back to later. Now customize the name of a clipboard to store your clips.
Visibility Others can see my Clipboard. Cancel Save.
Business Architecture Methodology. The architectural design process will be different from project to project, and from designer to designer. Finally we are able to produce a set of Council working drawings, from which we are able to extract further requirements as stated by the National building regulations and SANS 10 regulations, for energy efficiency calculations and fenestration requirements. Level 1 Format Preview. These problems, first recognized 20 years ago, have today reached … The first is the Design-Bid-Build.
of software architecture and design concepts and will be in a position to choose and Lack of understanding of the design process, design experience and evaluation of The architectural style, also called as architectural pattern, is a set of.
Software Design Methodology explores the theory of software architecture, with particular emphasis on general design principles rather than specific methods. This book provides in depth coverage of large scale software systems and the handling of their design problems. It will help students gain an understanding of the general theory of design methodology, and especially in analysing and evaluating software architectural designs, through the use of case studies and examples, whilst broadening their knowledge of large-scale software systems. This book shows how important factors, such as globalisation, modelling, coding, testing and maintenance, need to be addressed when creating a modern information system. Each chapter contains expected learning outcomes, a summary of key points and exercise questions to test knowledge and skills.
Architectural design is a process for identifying the sub-systems making up a system and the framework for sub-system control and communication. The output of this design process is a description of the software architecture. Architectural design is an early stage of the system design process.
Has visto a una nina? - спросил он, перекрывая шум, издаваемый моечной машиной. - Вы не видели девушку. Пожилой уборщик наклонился и выключил мотор.
Мидж, ну пожалуйста, успокойся. Ты знаешь, что я не могу… Она фыркнула и снова повернулась к клавиатуре.
Мозговые штурмы. Сьюзан замолчала. По-видимому, Стратмор проверял свой план с помощью программы Мозговой штурм. Если кто-то имеет возможность читать его электронную почту, то и остальная информация на его компьютере становится доступной… - Переделка Цифровой крепости - чистое безумие! - кричал Хейл. - Ты отлично понимаешь, что это за собой влечет - полный доступ АНБ к любой информации.
Казалось, старик испытал сильнейшее разочарование. Он медленно откинулся на гору подушек. Лицо его было несчастным. - Я думал, вы из городского… хотите заставить меня… - Он замолчал и как-то странно посмотрел на Беккера.