SlideShare uma empresa Scribd logo
1 de 61
Anton Semenchenko
Mixing Visitor, Builder,
Composite, Decorator and
Iterator: building architecture
on the cross-cutting example
About lecture 
Anton Semenchenko
Activist of COMAQA.BY and CoreHard.BY
communities, co-founder of DPI.Solutions,
manager at EPAM Systems. More than 14
years of experience in IT. Specializes in
low-level development, QA automation,
management, sales.
Agenda
1. Issue
2. Solution
3. Detailed context of the cross-cutting example
4. List of necessary DP’s
5. A way to link DP’s
6. Architecture example
7. Pros and Cons
8. Detailed summary
9. High level summary
10. Recommended literature
Issue!
How to solve challenges?
Tech side related solution!
Process related solution!
Linked DP based Architecture
Cross-cutting example context
Domain
Granular back-up and restore of Targets:
• MS SQL
• MS Exchange
• MS SharePoint
• file systems
• different variants of virtualization
• and many other things …
Task
Formulating the task:
• Fast
• Consistent
• “Supportable”
• Granular
Current solutions
Current “state”:
• A lot of manual testing
• Not following coding standards in a strict way
• From time to time formal inspections
• Not full Unit-tests coverage
• Not using Design Patters systematically
• Very skillful C++ engineers, including soviet physicists, scientists,
and really clever people
Requirements: to improve
• Decrease the number of bugs found by end users
• Guarantee the release time of new features in predictable, and
ideally, in a short time
• Shorten the work  time load for testing of new versions
Additional limitations
• Release is scheduled not more than in 3 months after Release Back-
up Target, constant release date changes
• Scope is constantly changing
• “Low priority” features are almost not exist
• Architecture should be created in a way for making the process of
adding new features or deleting them from the scope easy and
convenient
• Issues in the department of functional testing
Methodology
• Iterational process
• Non-Scrum but most of the practices are taken from that
methodology
• PRD - Project Requirement Document
• ERD - Engineering Requirement Document
• Prototyping
• Architecture  Design Draft Phase
• Then, Scrum like iteration
Ideal Scrum killed company
• a. Concept of “Universal Soldier”
• b. Blind following of Scrum methodology as the dogma
• c. Results
• d. Details – “it’s completely a different story” 
Tasks, part 1
Implement a plug-in for
• Effective
• Consistent
• Granular
• Persistent for update
back-up restore solution for new version of MS SQL Denali
Tasks, part 2
• A big number of features
• Features are prioritized
• Most of the features are very important for the end-user
• Number of features that are easy to avoid is almost zero
• Development process is build using Release Candidate
• Release of the product not more than in 3 months after Release
Target
Tasks, part 3
Complex configuration
• One physical machine one SQL instance
• One physical machine multiple SQL instances of one version
• One physical machine multiple SQL instances of different versions
• The same for virtual machines
• Work in the bounds of network with physical machines
• Work in the bounds of network with virtual machines
• Work in “mixed” network
• Variants of clustering of SQL
Tasks, part 4
A big number of special cases
• DB or a separate file are renamed during use process
• DB or a separate file are moved during use process
• Variations of naming conflicts
• Restore to the different folder, with additional variants of naming
conflicts
• Continuous operations at the DB
• Other special cases
Tasks, part 5
• Time for functional testing is not more than 3 months, in fact –
approximately not more than one month
Tech details, part 1
• Using standardized mechanisms of performing back-up copying (VSS)
• Using C# SMO for ultra granular reserve back-up for some special
cases.
Tech details, part 2
Mechanisms of optimization on VSS level
• System DB
• User DB
• 3 Recovery models
• Simple
• Bulk logged
• Full
Tech details, part 3
Mechanisms of server level optimization
• Storing data
• Restore data
• Smothering the edges between storing and restore speed
Tech details, part 4
• Supporting of limited back-up window
• User-chosen subset of DBs
• Optimizing the order of copying DB
• Multiple checks, including consistency checks
• Reports for users
• Different level of report specification
• Tracing for technical specialists
• Wide range of tracing specification
• Saving the concept of less surprise
Additional limitations
• Release is scheduled not more than in 3 months after Release
Back-up Target, constant release date changes
• Scope is constantly changing
• “Low priority” features are almost not exist
• Architecture should be created in a way for making the process of
adding new features or deleting them from the scope easy and
convenient
• Issues in the department of functional testing
Solution variants?
What DPs should be used?
Additional limitations
List of potentially useful patterns:
• Builder
• Decorator
• Composite
• Iterator
• Visitor
• Singleton
Builder
Composite
Iterator
Visitor
Decorator
Singleton
Mapping tasks with patterns
• Granular Backup  Restore (Builder, Composite)
• Different source of information about DB’s (Builder, Composite)
• Complex env (Builder, Composite, Decorator)
Mapping tasks with patterns
Tiny features:
• DB or a separate file are renamed during use process (Iterator,
Visitor)
• DB or a separate file are moved during use process (Iterator,
Visitor)
• Variations of naming conflicts (Iterator, Visitor)
Mapping tasks with patterns
Tiny features:
• Restore to the different folder, with additional variants of naming
conflicts (Iterator, Visitor)
• Continuous operations at the DB (Iterator, Visitor, ~Decorator)
• Other special cases (Iterator, Visitor, ~Decorator)
Mapping tasks with patterns
• Using standardized mechanisms of performing back-up  restore
copying, VSS (Visitor, Decorator)
• Using C# SMO for ultra-granular back-up  restore for some special
cases (Visitor, Decorator)
Mapping tasks with patterns
Mechanisms of optimization on VSS level
• System DB (Composite, Iterator, Visitor)
• User DB (Composite, Iterator, Visitor)
• 3 Recovery models (Composite, Iterator, Visitor)
• Simple (Visitor)
• Bulk logged (Visitor)
• Full (Visitor)
Mapping tasks with patterns
Mechanisms of server level optimization
• Storing data (Composite, Iterator, Visitor)
• Restore data (Composite, Iterator, Visitor)
Supporting of limited back-up window (Composite, Iterator, Visitor)
User-chosen subset of DBs (Visitor)
Mapping tasks with patterns
Optimizing the order of copying DB (Visitor)
• Multiple checks, including consistency checks (Visitor)
• Reports for users (Visitor)
• Different level of report specification (Visitor)
Mapping tasks with patterns
• Tracing for technical specialists (Visitor)
• Wide range of tracing specification (Visitor)
• Saving the concept of less surprise (Iterator, Visitor)
Linked DP’s
Solution!
Additional advantages 1
• Universal architecture for any target with C++ API (e.g. VSS Driver
based)
• A skeleton of architecture was made, perforating tracing and
logging
• Full Unit-tests coverage
• Decreasing and making the testing phase cheaper
• Full avoiding of manual testing
• No blockers or major bugs, found by end-users
Additional advantages 2
• Working on new targets and versions for existing targets by
analogue
• Generating actual documentation based on the source code and
unit-tests
• Simple understanding and readability of the code
• Simple way of teaching employees, effective involvement process
of new people for speeding up the release process
Adapt for adjacent contexts
• MS Exchange, C++
• MS Share Point, C#
Adapt for “outer” contexts
• File System
• What difficulties can be?
• How to solve them?
• Working with subset of the tree (partial loading into RAM)
• Apply Visitor DP not one by one for all of the nodes and than
change to next visitor, but all the Visitor DP for one node and them
proceeding to the next one.
• Updating Iterator DP
Results
• Solved the standard challenges
• Solved project-specific challenges
• Met the budget and time limits
• Architecture was awarded as the best in the company
• It has become the iconic one in the company
Results
• Skeleton of the architecture became a pre-made template
• Product was awarded by MS
• Product was first to go out on the word stage
• Met almost all the user requirements after the first release
• Second version met all the user requirements and was released
several months later because of the Architecture
• It couldn’t prevent the company for becoming a bankrupt 
Conclusions about DP
• There is an opinion especially between super skillful programmers,
that DPs are shackling you and are not supposed to be used by a
professional programmer
• You should always take best examples of other implementations
• Learn DP at any loose
• Think about architecture beforehand
• Find the balance for your exact project between flexibility (Agile),
Lean and experience-expertise, preliminary projecting of
architecture
Conclusion about processes
• Prototyping
• “Technical” sprints
• Ways of provision of high-quality software:
• Always a complex of plans
• Strict following the coding standards
• Effective tool for code reviews
• High coverage of Unit tests
• Mocking
Conclusion about processes
• CI
• Automated static code analysis, running subsets of Unit tests as pre
commit event, pre-commit code-review, review lead time as
metric of the process, running all Unit tests as post-commit event
• Process is not a goal but a tool
• Iterative process of development of non-classic scrum that is
adapted for your needs
• Balance between specialization and concept of universal soldier
What’s next?
• Read books
• Read source code
• Practice, Practice and Practice
Recommended literature
1. Grady Butch “Object oriented analysis and design with examples
of apps on C++”
• Notes: you should not be scared of C++ examples , 95% of the
material is conceptual, no strict attached to the exact language. In
my opinion it might look too simple, and because of that it’s far
better to read at before going to bed.
Recommended literature
2. Martin Fowler “Refactoring”
• Notes: IMHO is should be totally read from end to end, twice, in
order to make the contents of your book as your professional
luggage (was using the “contents of that book the same way”).
Recommended literature
3. David Thomas, Andrew Hunt “The Pragmatic Programmer: From
Journeyman to Master”
• Notes: Amazing book that consists of a ton of advices. IMHO
strongly recommend to read from cover to cover, twice, in order to
have contents of the book – you active professional luggage. And
then look through different chapters before talking to a customer.
Recommended literature
4. Gang of four “Design patterns”
• Notes: IMHO strongly recommend to read from cover to cover,
twice, in order to have contents of the book – you active
professional luggage.
5. Steve McConnel “Code complete”
• Notes: IMHO No need to be afraid of the size of the book ... it
should be read or before “going to bed”, or from any place, of
separate chapters, just to fresh things in the memory in the chosen
field of problem.
Recommended literature
6. “Pattern-Oriented Software Architecture” Volume 1-3
• Notes: IMHO should be read from start to the end.
7. “Domain Specific Languages”, Martin Fowler
• Notes: IMHO should be read from start to the end.
8. “Patterns of Enterprise Application Architecture”, Martin Fowler
• Notes: IMHO should be read from start to the end.
CONTACT ME
Anton_Semenchenko@epam.com
semenchenko_anton_v
https://www.linkedin.com/in/anton-
semenchenko-612a926b
https://www.facebook.com/semenche
nko.anton.v
https://twitter.com/comaqa
Thanks for your attention
Anton Semenchenko
DPI.Solutions
EPAM Systems
Skype: dpi.Semenchenko
+375 33 33 46 120
+375 44 74 00 385
www.comaqa.by
www.corehard.by

Mais conteúdo relacionado

Mais procurados

LCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLinaro
 
Kernel Recipes 2018 - Live (Kernel) Patching: status quo and status futurus -...
Kernel Recipes 2018 - Live (Kernel) Patching: status quo and status futurus -...Kernel Recipes 2018 - Live (Kernel) Patching: status quo and status futurus -...
Kernel Recipes 2018 - Live (Kernel) Patching: status quo and status futurus -...Anne Nicolas
 
Practical RISC-V Random Test Generation using Constraint Programming
Practical RISC-V Random Test Generation using Constraint ProgrammingPractical RISC-V Random Test Generation using Constraint Programming
Practical RISC-V Random Test Generation using Constraint Programminged271828
 
Java performance monitoring
Java performance monitoringJava performance monitoring
Java performance monitoringSimon Ritter
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftestSeongJae Park
 
Efficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode DetectionEfficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode DetectionGeorg Wicherski
 
Sql Bits Sql Server Crash Dump Analysis
Sql Bits   Sql Server Crash Dump AnalysisSql Bits   Sql Server Crash Dump Analysis
Sql Bits Sql Server Crash Dump AnalysisPablo Alvarez Doval
 
NovaProva, a new generation unit test framework for C programs
NovaProva, a new generation unit test framework for C programsNovaProva, a new generation unit test framework for C programs
NovaProva, a new generation unit test framework for C programsGreg Banks
 
Debugging of (C)Python applications
Debugging of (C)Python applicationsDebugging of (C)Python applications
Debugging of (C)Python applicationsRoman Podoliaka
 
Kernel Recipes 2018 - A year of fixing Coverity issues all over the Linux ker...
Kernel Recipes 2018 - A year of fixing Coverity issues all over the Linux ker...Kernel Recipes 2018 - A year of fixing Coverity issues all over the Linux ker...
Kernel Recipes 2018 - A year of fixing Coverity issues all over the Linux ker...Anne Nicolas
 
Nanocloud cloud scale jvm
Nanocloud   cloud scale jvmNanocloud   cloud scale jvm
Nanocloud cloud scale jvmaragozin
 
Common Workflow Language (CWL) - George Carvalho
Common Workflow Language (CWL) -  George CarvalhoCommon Workflow Language (CWL) -  George Carvalho
Common Workflow Language (CWL) - George CarvalhoGeorge Carvalho
 
Continuous Performance Regression Testing with JfrUnit
Continuous Performance Regression Testing with JfrUnitContinuous Performance Regression Testing with JfrUnit
Continuous Performance Regression Testing with JfrUnitScyllaDB
 
Make Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsMake Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsKernel TLV
 
PVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniquePVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniqueAndrey Karpov
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVMJung Kim
 
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017OpenEBS
 

Mais procurados (20)

LCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC sessionLCA14: LCA14-412: GPGPU on ARM SoC session
LCA14: LCA14-412: GPGPU on ARM SoC session
 
Kernel Recipes 2018 - Live (Kernel) Patching: status quo and status futurus -...
Kernel Recipes 2018 - Live (Kernel) Patching: status quo and status futurus -...Kernel Recipes 2018 - Live (Kernel) Patching: status quo and status futurus -...
Kernel Recipes 2018 - Live (Kernel) Patching: status quo and status futurus -...
 
Debugging ZFS: From Illumos to Linux
Debugging ZFS: From Illumos to LinuxDebugging ZFS: From Illumos to Linux
Debugging ZFS: From Illumos to Linux
 
Practical RISC-V Random Test Generation using Constraint Programming
Practical RISC-V Random Test Generation using Constraint ProgrammingPractical RISC-V Random Test Generation using Constraint Programming
Practical RISC-V Random Test Generation using Constraint Programming
 
Java performance monitoring
Java performance monitoringJava performance monitoring
Java performance monitoring
 
Jython
JythonJython
Jython
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftest
 
Efficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode DetectionEfficient Bytecode Analysis: Linespeed Shellcode Detection
Efficient Bytecode Analysis: Linespeed Shellcode Detection
 
Sql Bits Sql Server Crash Dump Analysis
Sql Bits   Sql Server Crash Dump AnalysisSql Bits   Sql Server Crash Dump Analysis
Sql Bits Sql Server Crash Dump Analysis
 
NovaProva, a new generation unit test framework for C programs
NovaProva, a new generation unit test framework for C programsNovaProva, a new generation unit test framework for C programs
NovaProva, a new generation unit test framework for C programs
 
Debugging of (C)Python applications
Debugging of (C)Python applicationsDebugging of (C)Python applications
Debugging of (C)Python applications
 
Experimental dtrace
Experimental dtraceExperimental dtrace
Experimental dtrace
 
Kernel Recipes 2018 - A year of fixing Coverity issues all over the Linux ker...
Kernel Recipes 2018 - A year of fixing Coverity issues all over the Linux ker...Kernel Recipes 2018 - A year of fixing Coverity issues all over the Linux ker...
Kernel Recipes 2018 - A year of fixing Coverity issues all over the Linux ker...
 
Nanocloud cloud scale jvm
Nanocloud   cloud scale jvmNanocloud   cloud scale jvm
Nanocloud cloud scale jvm
 
Common Workflow Language (CWL) - George Carvalho
Common Workflow Language (CWL) -  George CarvalhoCommon Workflow Language (CWL) -  George Carvalho
Common Workflow Language (CWL) - George Carvalho
 
Continuous Performance Regression Testing with JfrUnit
Continuous Performance Regression Testing with JfrUnitContinuous Performance Regression Testing with JfrUnit
Continuous Performance Regression Testing with JfrUnit
 
Make Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance ToolsMake Your Containers Faster: Linux Container Performance Tools
Make Your Containers Faster: Linux Container Performance Tools
 
PVS-Studio and static code analysis technique
PVS-Studio and static code analysis techniquePVS-Studio and static code analysis technique
PVS-Studio and static code analysis technique
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
 
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
Dynamic Instrumentation- OpenEBS Golang Meetup July 2017
 

Destaque

Некоторые физические законы в контексте автоматизации тестирования
Некоторые физические законы в контексте автоматизации тестированияНекоторые физические законы в контексте автоматизации тестирования
Некоторые физические законы в контексте автоматизации тестированияCOMAQA.BY
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance managementCEE-SEC(R)
 
C++ game development with oxygine
C++ game development with oxygineC++ game development with oxygine
C++ game development with oxyginecorehard_by
 
Unit tests final
Unit tests finalUnit tests final
Unit tests finalcorehard_by
 
модель акторов и C++ что, зачем и как ?
модель акторов и C++ что, зачем и как ?модель акторов и C++ что, зачем и как ?
модель акторов и C++ что, зачем и как ?corehard_by
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
 
Диаграммы состояний и c++
Диаграммы состояний и c++Диаграммы состояний и c++
Диаграммы состояний и c++corehard_by
 
Повседневный С++: алгоритмы и итераторы
Повседневный С++: алгоритмы и итераторы Повседневный С++: алгоритмы и итераторы
Повседневный С++: алгоритмы и итераторы corehard_by
 
строим Microkernel architecture на базе паттерна pipes and filters
строим Microkernel architecture на базе паттерна pipes and filtersстроим Microkernel architecture на базе паттерна pipes and filters
строим Microkernel architecture на базе паттерна pipes and filterscorehard_by
 

Destaque (11)

Некоторые физические законы в контексте автоматизации тестирования
Некоторые физические законы в контексте автоматизации тестированияНекоторые физические законы в контексте автоматизации тестирования
Некоторые физические законы в контексте автоматизации тестирования
 
Введение в performance management
Введение в performance managementВведение в performance management
Введение в performance management
 
C++ game development with oxygine
C++ game development with oxygineC++ game development with oxygine
C++ game development with oxygine
 
Unit tests final
Unit tests finalUnit tests final
Unit tests final
 
модель акторов и C++ что, зачем и как ?
модель акторов и C++ что, зачем и как ?модель акторов и C++ что, зачем и как ?
модель акторов и C++ что, зачем и как ?
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
Диаграммы состояний и c++
Диаграммы состояний и c++Диаграммы состояний и c++
Диаграммы состояний и c++
 
Cloud Spanner
Cloud SpannerCloud Spanner
Cloud Spanner
 
C++ references
C++ referencesC++ references
C++ references
 
Повседневный С++: алгоритмы и итераторы
Повседневный С++: алгоритмы и итераторы Повседневный С++: алгоритмы и итераторы
Повседневный С++: алгоритмы и итераторы
 
строим Microkernel architecture на базе паттерна pipes and filters
строим Microkernel architecture на базе паттерна pipes and filtersстроим Microkernel architecture на базе паттерна pipes and filters
строим Microkernel architecture на базе паттерна pipes and filters
 

Semelhante a Mixing d ps building architecture on the cross cutting example

Project Life Cycle and Effort Estimation
Project Life Cycle andEffort EstimationProject Life Cycle andEffort Estimation
Project Life Cycle and Effort Estimationssuserb7c8b8
 
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)Gabriele Bartolini
 
Bringing DevOps to the Database
Bringing DevOps to the DatabaseBringing DevOps to the Database
Bringing DevOps to the DatabaseMichaela Murray
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarRoberto Jr. Figueroa
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptxAmna Ch
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentialsRajesh P
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentialsRajesh P
 
Software engineering lecture notes
Software engineering lecture notesSoftware engineering lecture notes
Software engineering lecture notesSiva Ayyakutti
 
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!Teamstudio
 
Software development Life Cycle
Software development Life CycleSoftware development Life Cycle
Software development Life CycleKumar
 
Unified modeling language basics and slides
Unified modeling language basics and slidesUnified modeling language basics and slides
Unified modeling language basics and slidesvenkatasubramanianSr5
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableComsysto Reply GmbH
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
 
Webinar: Best Practices for Upgrading to MongoDB 3.0
Webinar: Best Practices for Upgrading to MongoDB 3.0Webinar: Best Practices for Upgrading to MongoDB 3.0
Webinar: Best Practices for Upgrading to MongoDB 3.0MongoDB
 
SE 1a SDLC Session BCU.ppt
SE 1a SDLC Session BCU.pptSE 1a SDLC Session BCU.ppt
SE 1a SDLC Session BCU.pptMahiDivya
 
Expert guidance on migrating from magento 1 to magento 2
Expert guidance on migrating from magento 1 to magento 2Expert guidance on migrating from magento 1 to magento 2
Expert guidance on migrating from magento 1 to magento 2James Cowie
 

Semelhante a Mixing d ps building architecture on the cross cutting example (20)

Manual Software testing - software development life cycle
Manual Software testing - software development life cycleManual Software testing - software development life cycle
Manual Software testing - software development life cycle
 
Project Life Cycle and Effort Estimation
Project Life Cycle andEffort EstimationProject Life Cycle andEffort Estimation
Project Life Cycle and Effort Estimation
 
Ppt nardeep
Ppt nardeepPpt nardeep
Ppt nardeep
 
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
Agile Oracle to PostgreSQL migrations (PGConf.EU 2013)
 
Bringing DevOps to the Database
Bringing DevOps to the DatabaseBringing DevOps to the Database
Bringing DevOps to the Database
 
Agileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
 
Lecture3.se.pptx
Lecture3.se.pptxLecture3.se.pptx
Lecture3.se.pptx
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentials
 
Software development planning and essentials
Software development planning and essentialsSoftware development planning and essentials
Software development planning and essentials
 
Software engineering lecture notes
Software engineering lecture notesSoftware engineering lecture notes
Software engineering lecture notes
 
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!
 
Software development Life Cycle
Software development Life CycleSoftware development Life Cycle
Software development Life Cycle
 
Unified modeling language basics and slides
Unified modeling language basics and slidesUnified modeling language basics and slides
Unified modeling language basics and slides
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
WaterFall Model.ppt
WaterFall Model.pptWaterFall Model.ppt
WaterFall Model.ppt
 
Webinar: Best Practices for Upgrading to MongoDB 3.0
Webinar: Best Practices for Upgrading to MongoDB 3.0Webinar: Best Practices for Upgrading to MongoDB 3.0
Webinar: Best Practices for Upgrading to MongoDB 3.0
 
SE 1a SDLC Session BCU.ppt
SE 1a SDLC Session BCU.pptSE 1a SDLC Session BCU.ppt
SE 1a SDLC Session BCU.ppt
 
Expert guidance on migrating from magento 1 to magento 2
Expert guidance on migrating from magento 1 to magento 2Expert guidance on migrating from magento 1 to magento 2
Expert guidance on migrating from magento 1 to magento 2
 
Extreme programming (xp)
Extreme programming (xp)Extreme programming (xp)
Extreme programming (xp)
 

Mais de corehard_by

C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...corehard_by
 
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...corehard_by
 
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений ОхотниковC++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотниковcorehard_by
 
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр ТитовC++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титовcorehard_by
 
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...corehard_by
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишковcorehard_by
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...corehard_by
 
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...corehard_by
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...corehard_by
 
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...corehard_by
 
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...corehard_by
 
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...corehard_by
 
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел ФилоновC++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филоновcorehard_by
 
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan ČukićC++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukićcorehard_by
 
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia KazakovaC++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakovacorehard_by
 
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон ПолухинC++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухинcorehard_by
 
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...corehard_by
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019corehard_by
 
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019corehard_by
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019corehard_by
 

Mais de corehard_by (20)

C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
C++ CoreHard Autumn 2018. Создание пакетов для открытых библиотек через conan...
 
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
C++ CoreHard Autumn 2018. Что должен знать каждый C++ программист или Как про...
 
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений ОхотниковC++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
C++ CoreHard Autumn 2018. Actors vs CSP vs Tasks vs ... - Евгений Охотников
 
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр ТитовC++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
C++ CoreHard Autumn 2018. Знай свое "железо": иерархия памяти - Александр Титов
 
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
C++ CoreHard Autumn 2018. Информационная безопасность и разработка ПО - Евген...
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
 
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
C++ CoreHard Autumn 2018. Метаклассы: воплощаем мечты в реальность - Сергей С...
 
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
 
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
 
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
C++ CoreHard Autumn 2018. Concurrency and Parallelism in C++17 and C++20/23 -...
 
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
 
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел ФилоновC++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
C++ Corehard Autumn 2018. Обучаем на Python, применяем на C++ - Павел Филонов
 
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan ČukićC++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
C++ CoreHard Autumn 2018. Asynchronous programming with ranges - Ivan Čukić
 
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia KazakovaC++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
C++ CoreHard Autumn 2018. Debug C++ Without Running - Anastasia Kazakova
 
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон ПолухинC++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
C++ CoreHard Autumn 2018. Полезный constexpr - Антон Полухин
 
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
C++ CoreHard Autumn 2018. Text Formatting For a Future Range-Based Standard L...
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
 
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019Как помочь и как помешать компилятору. Андрей Олейников ➠  CoreHard Autumn 2019
Как помочь и как помешать компилятору. Андрей Олейников ➠ CoreHard Autumn 2019
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
 

Último

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 

Último (20)

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

Mixing d ps building architecture on the cross cutting example

  • 1. Anton Semenchenko Mixing Visitor, Builder, Composite, Decorator and Iterator: building architecture on the cross-cutting example
  • 2. About lecture  Anton Semenchenko Activist of COMAQA.BY and CoreHard.BY communities, co-founder of DPI.Solutions, manager at EPAM Systems. More than 14 years of experience in IT. Specializes in low-level development, QA automation, management, sales.
  • 3. Agenda 1. Issue 2. Solution 3. Detailed context of the cross-cutting example 4. List of necessary DP’s 5. A way to link DP’s 6. Architecture example 7. Pros and Cons 8. Detailed summary 9. High level summary 10. Recommended literature
  • 5. How to solve challenges?
  • 6. Tech side related solution!
  • 8. Linked DP based Architecture
  • 10. Domain Granular back-up and restore of Targets: • MS SQL • MS Exchange • MS SharePoint • file systems • different variants of virtualization • and many other things …
  • 11. Task Formulating the task: • Fast • Consistent • “Supportable” • Granular
  • 12. Current solutions Current “state”: • A lot of manual testing • Not following coding standards in a strict way • From time to time formal inspections • Not full Unit-tests coverage • Not using Design Patters systematically • Very skillful C++ engineers, including soviet physicists, scientists, and really clever people
  • 13. Requirements: to improve • Decrease the number of bugs found by end users • Guarantee the release time of new features in predictable, and ideally, in a short time • Shorten the work time load for testing of new versions
  • 14. Additional limitations • Release is scheduled not more than in 3 months after Release Back- up Target, constant release date changes • Scope is constantly changing • “Low priority” features are almost not exist • Architecture should be created in a way for making the process of adding new features or deleting them from the scope easy and convenient • Issues in the department of functional testing
  • 15. Methodology • Iterational process • Non-Scrum but most of the practices are taken from that methodology • PRD - Project Requirement Document • ERD - Engineering Requirement Document • Prototyping • Architecture Design Draft Phase • Then, Scrum like iteration
  • 16. Ideal Scrum killed company • a. Concept of “Universal Soldier” • b. Blind following of Scrum methodology as the dogma • c. Results • d. Details – “it’s completely a different story” 
  • 17. Tasks, part 1 Implement a plug-in for • Effective • Consistent • Granular • Persistent for update back-up restore solution for new version of MS SQL Denali
  • 18. Tasks, part 2 • A big number of features • Features are prioritized • Most of the features are very important for the end-user • Number of features that are easy to avoid is almost zero • Development process is build using Release Candidate • Release of the product not more than in 3 months after Release Target
  • 19. Tasks, part 3 Complex configuration • One physical machine one SQL instance • One physical machine multiple SQL instances of one version • One physical machine multiple SQL instances of different versions • The same for virtual machines • Work in the bounds of network with physical machines • Work in the bounds of network with virtual machines • Work in “mixed” network • Variants of clustering of SQL
  • 20. Tasks, part 4 A big number of special cases • DB or a separate file are renamed during use process • DB or a separate file are moved during use process • Variations of naming conflicts • Restore to the different folder, with additional variants of naming conflicts • Continuous operations at the DB • Other special cases
  • 21. Tasks, part 5 • Time for functional testing is not more than 3 months, in fact – approximately not more than one month
  • 22. Tech details, part 1 • Using standardized mechanisms of performing back-up copying (VSS) • Using C# SMO for ultra granular reserve back-up for some special cases.
  • 23. Tech details, part 2 Mechanisms of optimization on VSS level • System DB • User DB • 3 Recovery models • Simple • Bulk logged • Full
  • 24. Tech details, part 3 Mechanisms of server level optimization • Storing data • Restore data • Smothering the edges between storing and restore speed
  • 25. Tech details, part 4 • Supporting of limited back-up window • User-chosen subset of DBs • Optimizing the order of copying DB • Multiple checks, including consistency checks • Reports for users • Different level of report specification • Tracing for technical specialists • Wide range of tracing specification • Saving the concept of less surprise
  • 26. Additional limitations • Release is scheduled not more than in 3 months after Release Back-up Target, constant release date changes • Scope is constantly changing • “Low priority” features are almost not exist • Architecture should be created in a way for making the process of adding new features or deleting them from the scope easy and convenient • Issues in the department of functional testing
  • 28. What DPs should be used?
  • 29. Additional limitations List of potentially useful patterns: • Builder • Decorator • Composite • Iterator • Visitor • Singleton
  • 36. Mapping tasks with patterns • Granular Backup Restore (Builder, Composite) • Different source of information about DB’s (Builder, Composite) • Complex env (Builder, Composite, Decorator)
  • 37. Mapping tasks with patterns Tiny features: • DB or a separate file are renamed during use process (Iterator, Visitor) • DB or a separate file are moved during use process (Iterator, Visitor) • Variations of naming conflicts (Iterator, Visitor)
  • 38. Mapping tasks with patterns Tiny features: • Restore to the different folder, with additional variants of naming conflicts (Iterator, Visitor) • Continuous operations at the DB (Iterator, Visitor, ~Decorator) • Other special cases (Iterator, Visitor, ~Decorator)
  • 39. Mapping tasks with patterns • Using standardized mechanisms of performing back-up restore copying, VSS (Visitor, Decorator) • Using C# SMO for ultra-granular back-up restore for some special cases (Visitor, Decorator)
  • 40. Mapping tasks with patterns Mechanisms of optimization on VSS level • System DB (Composite, Iterator, Visitor) • User DB (Composite, Iterator, Visitor) • 3 Recovery models (Composite, Iterator, Visitor) • Simple (Visitor) • Bulk logged (Visitor) • Full (Visitor)
  • 41. Mapping tasks with patterns Mechanisms of server level optimization • Storing data (Composite, Iterator, Visitor) • Restore data (Composite, Iterator, Visitor) Supporting of limited back-up window (Composite, Iterator, Visitor) User-chosen subset of DBs (Visitor)
  • 42. Mapping tasks with patterns Optimizing the order of copying DB (Visitor) • Multiple checks, including consistency checks (Visitor) • Reports for users (Visitor) • Different level of report specification (Visitor)
  • 43. Mapping tasks with patterns • Tracing for technical specialists (Visitor) • Wide range of tracing specification (Visitor) • Saving the concept of less surprise (Iterator, Visitor)
  • 46. Additional advantages 1 • Universal architecture for any target with C++ API (e.g. VSS Driver based) • A skeleton of architecture was made, perforating tracing and logging • Full Unit-tests coverage • Decreasing and making the testing phase cheaper • Full avoiding of manual testing • No blockers or major bugs, found by end-users
  • 47. Additional advantages 2 • Working on new targets and versions for existing targets by analogue • Generating actual documentation based on the source code and unit-tests • Simple understanding and readability of the code • Simple way of teaching employees, effective involvement process of new people for speeding up the release process
  • 48. Adapt for adjacent contexts • MS Exchange, C++ • MS Share Point, C#
  • 49. Adapt for “outer” contexts • File System • What difficulties can be? • How to solve them? • Working with subset of the tree (partial loading into RAM) • Apply Visitor DP not one by one for all of the nodes and than change to next visitor, but all the Visitor DP for one node and them proceeding to the next one. • Updating Iterator DP
  • 50. Results • Solved the standard challenges • Solved project-specific challenges • Met the budget and time limits • Architecture was awarded as the best in the company • It has become the iconic one in the company
  • 51. Results • Skeleton of the architecture became a pre-made template • Product was awarded by MS • Product was first to go out on the word stage • Met almost all the user requirements after the first release • Second version met all the user requirements and was released several months later because of the Architecture • It couldn’t prevent the company for becoming a bankrupt 
  • 52. Conclusions about DP • There is an opinion especially between super skillful programmers, that DPs are shackling you and are not supposed to be used by a professional programmer • You should always take best examples of other implementations • Learn DP at any loose • Think about architecture beforehand • Find the balance for your exact project between flexibility (Agile), Lean and experience-expertise, preliminary projecting of architecture
  • 53. Conclusion about processes • Prototyping • “Technical” sprints • Ways of provision of high-quality software: • Always a complex of plans • Strict following the coding standards • Effective tool for code reviews • High coverage of Unit tests • Mocking
  • 54. Conclusion about processes • CI • Automated static code analysis, running subsets of Unit tests as pre commit event, pre-commit code-review, review lead time as metric of the process, running all Unit tests as post-commit event • Process is not a goal but a tool • Iterative process of development of non-classic scrum that is adapted for your needs • Balance between specialization and concept of universal soldier
  • 55. What’s next? • Read books • Read source code • Practice, Practice and Practice
  • 56. Recommended literature 1. Grady Butch “Object oriented analysis and design with examples of apps on C++” • Notes: you should not be scared of C++ examples , 95% of the material is conceptual, no strict attached to the exact language. In my opinion it might look too simple, and because of that it’s far better to read at before going to bed.
  • 57. Recommended literature 2. Martin Fowler “Refactoring” • Notes: IMHO is should be totally read from end to end, twice, in order to make the contents of your book as your professional luggage (was using the “contents of that book the same way”).
  • 58. Recommended literature 3. David Thomas, Andrew Hunt “The Pragmatic Programmer: From Journeyman to Master” • Notes: Amazing book that consists of a ton of advices. IMHO strongly recommend to read from cover to cover, twice, in order to have contents of the book – you active professional luggage. And then look through different chapters before talking to a customer.
  • 59. Recommended literature 4. Gang of four “Design patterns” • Notes: IMHO strongly recommend to read from cover to cover, twice, in order to have contents of the book – you active professional luggage. 5. Steve McConnel “Code complete” • Notes: IMHO No need to be afraid of the size of the book ... it should be read or before “going to bed”, or from any place, of separate chapters, just to fresh things in the memory in the chosen field of problem.
  • 60. Recommended literature 6. “Pattern-Oriented Software Architecture” Volume 1-3 • Notes: IMHO should be read from start to the end. 7. “Domain Specific Languages”, Martin Fowler • Notes: IMHO should be read from start to the end. 8. “Patterns of Enterprise Application Architecture”, Martin Fowler • Notes: IMHO should be read from start to the end.
  • 61. CONTACT ME Anton_Semenchenko@epam.com semenchenko_anton_v https://www.linkedin.com/in/anton- semenchenko-612a926b https://www.facebook.com/semenche nko.anton.v https://twitter.com/comaqa Thanks for your attention Anton Semenchenko DPI.Solutions EPAM Systems Skype: dpi.Semenchenko +375 33 33 46 120 +375 44 74 00 385 www.comaqa.by www.corehard.by