This keynote was presented by Rebecca Wirfs-Brock at Explore DDD 2017.
The ouroboros (οὐροβόρος in the original Greek) is an image or archetype of a serpent shaped into a circle, clinging to or devouring its own tail in an endless cycle of self-destruction, self-creation, and self-renewal. Becoming a good software designer sometimes feels like that.
Over time, we build up our personal toolkit of design heuristics. To grow as designers, we need to do more than simply design and implement working software. We need to examine and reflect on our work, put our own spin on the advice of experts, and continue to learn better ways of designing.
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
This is an updated version of this talk which I will present at Agile 2013.
The rhythm of agile software development is to always be working on the next known, small batch of work. Is there a place for software architecture in this style of development? Some people think that software architecture should simply emerge and doesn’t require ongoing attention. But it isn’t always prudent to let the software architecture emerge at the speed of the next iteration. Complex software systems have lots of moving parts, dependencies, challenges, and unknowns. Counting on the software architecture to spontaneously emerge without any planning or architectural investigation is at best risky.
So how should architecting be done on agile projects? It varies from project to project. But there are effective techniques for incorporating architectural activities into agile projects. This talk explains how architecture can be done on agile projects and what an agile architect does.
by Brad Appleton,
Presented August 2006 at Architecture & Design World 2006; Chicago, IL USA
Software Configuration Management Patterns for Agile Software Architectures.
WANTED: Seeking Single Agile Knowledge Development Tool-setBrad Appleton
by Brad Appleton,
Presented August 2009 at at Agile 2009 Conference; Chicago, IL USA
What tools and capabilities are necessary to apply Agile development concepts+practices (such as refactoring, TDD, CI, etc.) to all knowledge-artifacts? (not just source-code).
Agile Architecture Agile Dev Practices 2013 KeynoteAdam Boczek
Keynote: Agile Dev Practices 2013
Adam Boczek, codecentric – “Agile Architecture – Yet Another Oxymoron?”
We at codecentric, as a technically focused agile organization, get in our projects quite often confronted with the assessment of a customer’s software architecture, or more precisely with the assessment of the existing solution architecture. In many cases it is ok for us to stay in this technical scope and not to touch other, much wider architectural concepts like e.g. enterprise architecture. However, due to the fact, that more and more organizations want to transform to a more agile organization, the alignment between IT and Business, and thus between IT-architecture and Business-architecture becomes much more relevant for us in our projects than in the past and causes many questions to arise. Can we talk in this context about agile architecture? And if so, is it a model of a system or maybe just a process of creating it? Or maybe both? How long can I delay my architectural decisions? Can I refactor my agile architecture? And so on…
In this talk I won’t give you perfect answers to all these questions, however I’m pretty sure I will open your eyes and let you create your own point of view.
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
This is an updated version of this talk which I will present at Agile 2013.
The rhythm of agile software development is to always be working on the next known, small batch of work. Is there a place for software architecture in this style of development? Some people think that software architecture should simply emerge and doesn’t require ongoing attention. But it isn’t always prudent to let the software architecture emerge at the speed of the next iteration. Complex software systems have lots of moving parts, dependencies, challenges, and unknowns. Counting on the software architecture to spontaneously emerge without any planning or architectural investigation is at best risky.
So how should architecting be done on agile projects? It varies from project to project. But there are effective techniques for incorporating architectural activities into agile projects. This talk explains how architecture can be done on agile projects and what an agile architect does.
by Brad Appleton,
Presented August 2006 at Architecture & Design World 2006; Chicago, IL USA
Software Configuration Management Patterns for Agile Software Architectures.
WANTED: Seeking Single Agile Knowledge Development Tool-setBrad Appleton
by Brad Appleton,
Presented August 2009 at at Agile 2009 Conference; Chicago, IL USA
What tools and capabilities are necessary to apply Agile development concepts+practices (such as refactoring, TDD, CI, etc.) to all knowledge-artifacts? (not just source-code).
Agile Architecture Agile Dev Practices 2013 KeynoteAdam Boczek
Keynote: Agile Dev Practices 2013
Adam Boczek, codecentric – “Agile Architecture – Yet Another Oxymoron?”
We at codecentric, as a technically focused agile organization, get in our projects quite often confronted with the assessment of a customer’s software architecture, or more precisely with the assessment of the existing solution architecture. In many cases it is ok for us to stay in this technical scope and not to touch other, much wider architectural concepts like e.g. enterprise architecture. However, due to the fact, that more and more organizations want to transform to a more agile organization, the alignment between IT and Business, and thus between IT-architecture and Business-architecture becomes much more relevant for us in our projects than in the past and causes many questions to arise. Can we talk in this context about agile architecture? And if so, is it a model of a system or maybe just a process of creating it? Or maybe both? How long can I delay my architectural decisions? Can I refactor my agile architecture? And so on…
In this talk I won’t give you perfect answers to all these questions, however I’m pretty sure I will open your eyes and let you create your own point of view.
Evolving toward Microservices - O’Reilly SACON KeynoteChristopher Grant
O’Reilly Software Architecture Conference Keynote 4/2016
Evolving toward Microservices
How HomeDepot.com made the switch
Video published at: https://www.oreilly.com/ideas/evolving-toward-microservices-how-home-depot-made-the-transition
A Proven Software Development Process for the Non Technical FounderFounders Workshop
Are you a non-technical founder with a great software idea? Ready to take the plunge but want the “secret” to successfully managing software development? Well, it's not a "secret" at all - it's a disciplined methodology we are going to share with you. This presentation is designed to provide entrepreneurs with a blueprint for successful software development and technology implementation.
The unfortunate reality is that quality software development and technology implementation is not readily available to most startups and small business entrepreneurs. Great entrepreneurs are met with small thinkers when searching for a development team via online freelancer sites, or the recommendation of a friend’s cousin who may code on weekends. Or they are faced with development companies that impose business models that do not align with the entrepreneurial spirit.
Agility via Software Engineering Practices - Agile Tour Montreal 2015Steve Mercier
A presentation given to Agile Tour Montreal 2015 about how you can attain better Agility by applying software development practices helping to correct typical issues with Agile methodologies.
What are your strategies for using refactoring?
How should I start when I face a Big Mess?
What are the generic emergencies for refactoring and why should be considered?
What are the worst case scenarios related to technical debt refactoring and what skills could help?
How refactoring could help eliminate waste (~Lean Development). Clean code, refactoring and technical debt management could address some significant sources of waste as defects, waiting and overproduction. Ward Cunningham's original concept of technical debt refactoring could be used to achieve an adaptive and lean design (that's more than "emergent").
Avoid and manage the technical debt using Disciplined Agile strategies during the end-to-end development life-cycle.
Presentation I gave on August 24th, 2011 in Bangkok at the ITARC Thailand 2011: Business Agility with Enterprise Architecture conference.
Intention is to refocus Architecture towards delivering customer value, talk a bit about where things stand today, and introduce the concept of Domain Context Interaction.
A great deal of this content comes from papers and podcasts published by James Coplien on the subject. The last slide has some useful references to follow up on.
India GRUC Agility Presentation 2015-6-30Roger Snook
One Million Lines of Code Later: I Want Agility! Every line of code you create comes with a complexity cost. How can you tame this complexity for your large source base? One way is to streamline your delivery turnaround time for enhancements and fixes by visualizing your projects' source code—after all, "a picture is worth…”
Introducing Agile Development in Traditional Software Development Organizationsjuliannacole
Highlights of actions taken to during the 2006/2007 introduction of Agile development techniques to Tribune Interactive's software development and business stakeholders.
Með tilkomu agile hugbúnaðargerðar er hætt á að forritarar fórni hlutum sem voru sjálfsagðir í aðferðum eins og Waterfall og RUP en eiga fullt erindi í agile þó svo með öðrum hætti. Má nefna skjölun, en margir misskildu agile á þann veg að ekkert þarf að skjala. Skjölun er nauðsynleg þótt hún sé með örðum hætti, en svo er einnig með architecture. Í agile er nauðsynlegt að huga vel að architecture en einnig að átta sig hvað það er sem við skilgreinum sem architecture og hvað ekki.
Í þessum fyrirlestri er fjallað um architecture og agile og hvernig þessir hlutir geta fallið vel saman. Með aglie teymum flyst mikið af ábyrgð á architecture til teymanna, en samt þarf að vera einhver sameinlegur strúktúr og sýn.
Domain-driven design is a collaborative process involving both domain experts and software practitioners that attempts to address issues of complexity in software. This process is described in the book Domain-Driven Design written by Eric Evans. Domain-driven design starts with the assertion that complexity is in the domain, not in the technology. Accordingly, we must let technology play a supporting role.
A person practicing domain-driven design does not attempt to model reality. Instead, domain experts and software practitioners use a mental model as a tool for solving problems within a given domain. The domain experts and software practitioners collaborate to explore and develop this model. We will look at the concept of a bounded context within which models can be isolated and explored. We will talk about domain-driven design's building block patterns including entities, value objects, aggregates, repositories, services, and domain events. We will see how test-driven development can be used as a means of exploring the model.
Evolving toward Microservices - O’Reilly SACON KeynoteChristopher Grant
O’Reilly Software Architecture Conference Keynote 4/2016
Evolving toward Microservices
How HomeDepot.com made the switch
Video published at: https://www.oreilly.com/ideas/evolving-toward-microservices-how-home-depot-made-the-transition
A Proven Software Development Process for the Non Technical FounderFounders Workshop
Are you a non-technical founder with a great software idea? Ready to take the plunge but want the “secret” to successfully managing software development? Well, it's not a "secret" at all - it's a disciplined methodology we are going to share with you. This presentation is designed to provide entrepreneurs with a blueprint for successful software development and technology implementation.
The unfortunate reality is that quality software development and technology implementation is not readily available to most startups and small business entrepreneurs. Great entrepreneurs are met with small thinkers when searching for a development team via online freelancer sites, or the recommendation of a friend’s cousin who may code on weekends. Or they are faced with development companies that impose business models that do not align with the entrepreneurial spirit.
Agility via Software Engineering Practices - Agile Tour Montreal 2015Steve Mercier
A presentation given to Agile Tour Montreal 2015 about how you can attain better Agility by applying software development practices helping to correct typical issues with Agile methodologies.
What are your strategies for using refactoring?
How should I start when I face a Big Mess?
What are the generic emergencies for refactoring and why should be considered?
What are the worst case scenarios related to technical debt refactoring and what skills could help?
How refactoring could help eliminate waste (~Lean Development). Clean code, refactoring and technical debt management could address some significant sources of waste as defects, waiting and overproduction. Ward Cunningham's original concept of technical debt refactoring could be used to achieve an adaptive and lean design (that's more than "emergent").
Avoid and manage the technical debt using Disciplined Agile strategies during the end-to-end development life-cycle.
Presentation I gave on August 24th, 2011 in Bangkok at the ITARC Thailand 2011: Business Agility with Enterprise Architecture conference.
Intention is to refocus Architecture towards delivering customer value, talk a bit about where things stand today, and introduce the concept of Domain Context Interaction.
A great deal of this content comes from papers and podcasts published by James Coplien on the subject. The last slide has some useful references to follow up on.
India GRUC Agility Presentation 2015-6-30Roger Snook
One Million Lines of Code Later: I Want Agility! Every line of code you create comes with a complexity cost. How can you tame this complexity for your large source base? One way is to streamline your delivery turnaround time for enhancements and fixes by visualizing your projects' source code—after all, "a picture is worth…”
Introducing Agile Development in Traditional Software Development Organizationsjuliannacole
Highlights of actions taken to during the 2006/2007 introduction of Agile development techniques to Tribune Interactive's software development and business stakeholders.
Með tilkomu agile hugbúnaðargerðar er hætt á að forritarar fórni hlutum sem voru sjálfsagðir í aðferðum eins og Waterfall og RUP en eiga fullt erindi í agile þó svo með öðrum hætti. Má nefna skjölun, en margir misskildu agile á þann veg að ekkert þarf að skjala. Skjölun er nauðsynleg þótt hún sé með örðum hætti, en svo er einnig með architecture. Í agile er nauðsynlegt að huga vel að architecture en einnig að átta sig hvað það er sem við skilgreinum sem architecture og hvað ekki.
Í þessum fyrirlestri er fjallað um architecture og agile og hvernig þessir hlutir geta fallið vel saman. Með aglie teymum flyst mikið af ábyrgð á architecture til teymanna, en samt þarf að vera einhver sameinlegur strúktúr og sýn.
Domain-driven design is a collaborative process involving both domain experts and software practitioners that attempts to address issues of complexity in software. This process is described in the book Domain-Driven Design written by Eric Evans. Domain-driven design starts with the assertion that complexity is in the domain, not in the technology. Accordingly, we must let technology play a supporting role.
A person practicing domain-driven design does not attempt to model reality. Instead, domain experts and software practitioners use a mental model as a tool for solving problems within a given domain. The domain experts and software practitioners collaborate to explore and develop this model. We will look at the concept of a bounded context within which models can be isolated and explored. We will talk about domain-driven design's building block patterns including entities, value objects, aggregates, repositories, services, and domain events. We will see how test-driven development can be used as a means of exploring the model.
Interoperability defined by its reason d'êtreAALForum
Presentation by Paul Valckenaers and Patrick De Maziére during the workshop Interoperability defined by its reason d'être by Paul Valckenaers - AAL Forum 2015
Imagine if designers conversed with you in a way that felt like object-oriented programming. Imagine if they handed off a design where, page after page, the objects you needed to code were edged in neon, so clearly defined they popped off the wireframe or comp. Imagine those objects were consistently presented; no one-off cases or guesswork required. Imagine you could take a design and almost create an ERD or rough out an API with it.
Well, good news. There’s no need to imagine it. It exists, and it’s called Object-Oriented UX (OOUX).
OOUX is a design methodology that helps us define usable, consistent products that naturally align with end users’ mental models. Similar to OOP, it asks us to define the objects in the real-world problem domain and design the information and relationships in each object before designing how the user might manipulate them. It's a powerful tool for any digital team, it's relatively easy to do, and it pays dividends fast.
Whether you are a developer, a designer, a content modeler, or someone who has influence over digital teams, OOUX offers a new and exciting option to add to your toolkit that will allow you to deliver better digital projects, quicker and more efficiently, and at a higher level of quality than ever before.
Presentation originally given at THAT Conference 2019
Design patterns are optimized, reusable solutions to the programming problems that we encounter every day. A design pattern is not a class or a library that we can simply plug into our system; it's much more than that. It is a template that has to be implemented in the correct situation. It's not language-specific either. A good design pattern should be implementable in most—if not all—languages, depending on the capabilities of the language. Most importantly, any design pattern can be a double-edged sword— if implemented in the wrong place, it can be disastrous and create many problems for you. However, implemented in the right place, at the right time, it can be your savior.
Design patterns are optimized, reusable solutions to the programming problems that we encounter every day. A design pattern is not a class or a library that we can simply plug into our system; it's much more than that. It is a template that has to be implemented in the correct situation. It's not language-specific either. A good design pattern should be implementable in most—if not all—languages, depending on the capabilities of the language. Most importantly, any design pattern can be a double-edged sword— if implemented in the wrong place, it can be disastrous and create many problems for you. However, implemented in the right place, at the right time, it can be your savior.
CORE: Cognitive Organization for Requirements ElicitationScott M. Confer
Orbitz.com ia case study poster describes a rules-based soft systems methodology for collaborative decision-making: Cognitive Organization for Requirements Elicitation (CORE). The case study is of a specific project to develop features for the Orbitz.com leisure travel site. For this project, the information architect was faced with a need to rapidly develop specifications for the new features. Produced in the absence of use cases, functional requirements, or business requirements these new specifications had to be both culturally and technically acceptable, and meet changing business and user needs.
software development practices like procedural coding are like training wheels, they help when we start development, but are detrimental later. This presentation lists few such practices and their alternatives
Agenda
Requirements
What are requirements?
Classifying the requirements
Characteristics of requirements
Requirements elicitation
Documenting the requirements
Requirements analysis and negotiation
Requirements validation
Skills that are adequate to build a small system will not suffice to build a larger system. This slidedeck was used in a talk where the differences were highlighted and methods and techniques to build large systems recommended.
Similar to Cultivating Your Design Heuristics (20)
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
Understanding Nidhi Software Pricing: A Quick Guide 🌟
Choosing the right software is vital for Nidhi companies to streamline operations. Our latest presentation covers Nidhi software pricing, key factors, costs, and negotiation tips.
📊 What You’ll Learn:
Key factors influencing Nidhi software price
Understanding the true cost beyond the initial price
Tips for negotiating the best deal
Affordable and customizable pricing options with Vector Nidhi Software
🔗 Learn more at: www.vectornidhisoftware.com/software-for-nidhi-company/
#NidhiSoftwarePrice #NidhiSoftware #VectorNidhi
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Looking for a reliable mobile app development company in Noida? Look no further than Drona Infotech. We specialize in creating customized apps for your business needs.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
Mobile App Development Company In Noida | Drona Infotech
Cultivating Your Design Heuristics
1.
2. Heuristic
“anything that provides a
plausible aid or direction in the
solution of a problem but is in
the final analysis unjustified,
incapable of justification, and
potentially fallible.”
—Billy Vaughn Koen
3. Heuristics
Heuristics aid in design
Guide use of other heuristics
Even determine our attitude and behavior
6. Pithy Phrases?
A Few Useful Engineering Heuristics by Billy Koen
Heuristic: Solve problems by successive approximations
Heuristic: Always give an answer
Heuristic: Always give yourself a chance to retreat
Heuristic: Use feedback to stabilize the design
Heuristic: Break complex problems into smaller, more
manageable pieces
Heuristic: Always make the minimum decision
Heuristic: Design for a specific time frame (product lifetime)
Heuristic: Make small changes to your state-of-the-art (sota)
7. Context
In which situations
can I use this pattern?
Problem
What does it try to solve?
What questions does it answer?
Solution
What can I
do that usually works?
patterns are
nicely
“packaged”
heuristics
13. Heuristic: Use a Transaction Script when you have
simple logic for a small database application
Heuristic: Use a Domain Model when you have
complex logic that you want to model in objects
and can accommodate database mapping
Heuristic: Use a Table Module when you have
complex (existing) data and you need to write logic
that applies to multiple rows in underlying
database tables
Heuristics:
3 Ways to Structure a Domain Layer
Patterns of Enterprise Application Architecture
19. Unscientific Chart:
Code Reuse Potential*
Database
Script
Transaction Script
Complexity of Domain Logic
Potential
Code
Reuse
Domain
Model
Table
Module
*Inspired by the unquantified chart in Fowler’s Patterns of Enterprise Architecture
20. “Best Fit” Profiles
Style Design Skills Driving Forces Project
Duration
System
Complexity
System
Longevity
Transaction
Script
Programming Dev speed Short Low Short
Domain
Model- Rich
OO Design Business
concepts in
code
Medium Medium to
High
Medium to
Long
Domain
Model-
Simple
Moderate OO
+DB
Simple
representation
of business
concepts
Medium Medium Medium
Database
script
Specialized Performance,
security
Medium Low to
Medium
Long
Table
Module
DB +
Moderate
prog/OO
design
Technology fit Medium Low to
Medium
Medium to
Long
Rules
Engine
Specialized Complexity/
changeability
Long High Long
…
21.
22. “As a rule, the more demanding the
application, the more leverage you get from
using a powerful language. But plenty of
projects are not demanding at all. Most
programming probably consists of writing little
glue programs, and for little glue programs you
can use any language that you’re already
familiar with and that has good libraries
for whatever you need to do”
— Paul Graham, Revenge of the Nerds
23. The “best” is debatable
Paul Graham’s Heuristic: It doesn’t matter what
programming language you use if you have a simple
program. Use programming languages, tools, and
frameworks and libraries you are familiar with.
Rebecca: But Paul…
Heuristic: Use a rich domain model when you have
rich behavior in your application.
Heuristic: Use transaction scripts for really simple
stuff that isn’t going to change much.
Heuristic: Learn something new. Don’t always do
things the same way. That’s soul sucking!
24.
25. “choose the heuristic to use from what
you take to be the best option at the
time you are required to choose.”
—paraphrase of Billy Koen
26. We each have our own
cherished heuristics
As new ones become
useful we add to our
collection
No longer useful ones fall
out of fashion
Sometimes, even useful
ones fade away
Our SOTA
(State of the Art)
https://xkcd.com/1823/
30. Choices for user input validation:
How much to validate in the browser?
Hand code validation logic or use declarative style?
How much validation is performed by framework-
specific classes: simple, syntactic edits, or more?
Choices for constraint checking:
Which objects are assigned constraint checking
responsibilities?
When are constraints enforced?
Where to enforce cross-attribute and cross-object
constraints?
An Examination of some Pesky Details:
Validation and Constraint Checking
31. Perform simple edits (syntactic) in browser
code
Don’t universally trust browser-validated edits.
Reapply them if receiving requests from an
untrusted source
Consistently assign validation responsibilities
to framework-specific validation classes
Consistently use domain layer validation and
constraint enforcement patterns
Heuristics
My Design Recommendations
✗
32. Rationale: Factoring out constraint checking behavior into a
separate class enables constraints be enforced by a domain
service, that can determine when to check constraints.
Merit: Possible to dynamically configure constraints.
Drawback: Harder to understand all the rules at once.
Option 1: Make Constraints Explicit
Create Separate Classes
“xxxPolicy” or
“xxxRule” is a
common name
for constraint
objects
Constraint: “An out of stock item can’t be added to an expedited order”
33. Rationale: Putting a constraint in the code that changes
the state is most direct.
Merit: Factoring constraint into an intentionally named helper
method aids discussing with domain experts.
Drawback: Clutters the domain object with a lot of checking,
creates dependencies on other domain objects. No ability to
modulate when constraints are enforced.
Option 2: Give objects responsibilities for
maintaining their state
Check Constraints in Domain Object
Constraint: “An out of stock item can’t be added to an expedited order”
36. RDD Concept: Role Stereotypes
Typical behaviors in an object-oriented design
knowing, doing, deciding
Information holder—knows and provides information.
Structurer—maintains relationships between objects.
Service provider—performs work on demand.
Coordinator—reacts to events by delegating to others.
Controller—makes decisions & directs actions.
Interfacer—transforms information and requests
between distinct parts of a software system.
37. RDD Heuristic:
Blend stereotypes to make objects more responsible.
Add behaviors to make objects “smarter”
information holders that compute or derive information based
on other information they maintain
service providers that maintain information to be more
efficient
structurers that answer deeper questions or derive facts about
what they are structuring
interfacers that also transform
Be constantly aware of Overlapping Heuristics
Heuristic: Design objects to do one thing well. (Single Responsibility Principle
from Bob Martin)
Heuristic: Make the overall system simpler by having objects do something with
what they know. (Responsibility-Driven Design Heuristic)
38. 2001
People, Places, Things,
Aggregate Things, Events
Heuristic: Separate out stuff that varies
depending on the current relationship
Heuristic:
Locations can be
hierarchical or even
more complex
Heuristic: Events can be point-in-time,
interval, depend on other events
…and event information is often messy
and complex
39. Heuristic: By characterizing a domain entity’s attributes you
can understand/find/identify needed system behaviors
Descriptive Attributes reflect a
domain object properties (not
identity).
Time-dependent attributes Most
attributes can change values, but for
some, maintaining a history of past
values is important.
Lifecycle state attributes Some
entities go through a one-way
lifecycle, from initial to final state.
Operational state Some entities
switch between different states. The
state it is currently in determines how
it behaves.
Create
Active
Store
Reconstitute Database Representation
Database or File Representation
ArchiveDelete
Delete
Modify
40.
41.
42. Heuristic*:
Distinguish between “superficial” and “domain”
validations and handle them differently
“superficial”: what must be true, regardless of the state of
the domain
Heuristic: Validate these before issuing a command, ideally on
the client side as well as the server side
“superficial” but requires lookup of other information
Heuristic: Validate in the service before invoking the
command
“domain”: validity of a command is dependent on the state
of the model
Heuristic: Validate in domain objects
*http://danielwhittaker.me/2016/04/20/how-to-validate-commands-in-a-cqrs-application/
51. “The Tactical Modeling patterns were never intended to be the one-and-only way to do
DDD, but many consider them as such. They produce extraneous noise and detract
attention away from the most important, and unique-to-DDD material.”
—Vladik Khononov
*http://vladikk.com/2016/04/05/tackling-complexity-ddd/
What if we
removed the
tactical patterns?*
Advocacy:
Blogging/Critique
52.
53. Advocacy: Journaling
Describe Your Design Principles
Guidelines:
You prefer a rich domain model
Aggregate roots should not directly
communicate with each other
Communication protocols and why
Conventions:
Common service
interfaces/capabilities
Extension points configured by…
When you can break the rules...
53
Constructive
Reasoned
Clear
Testable
Significant
54. Advocacy: Journaling
Document Decisions
Rationale—why you made it
Other options considered
An appreciation of your
thought process
Goal: Convey why your
architecture, or a piece of it,
is a good solution
54
Decisions worth justifying
Spent lots of time on
Critical to achieving a requirement
Confusing at first
Widespread impact
Difficult to undo
55. One option*
1-2 pages of text describing a set of forces
forces & a single decision in response
Title
Context - Forces at play
Decision - Stated with active voice: "We will ..."
Status - “proposed” or “accepted” later may be
“deprecated” or “superseded”
Consequences positive, negative, and neutral that
affect the team and project in the future
*Useful for recorded decisions that have a “lifecycle”. Thanks to Michael Nygard:
http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
Useful link to github project on decision records: https://github.com/joelparkerhenderson
56. Used with permissions under the under the Creative Commons Attribution-Share Alike 3.0 Unportedicense.
By MichaelMaggs Edit by Richard Bartz (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
Reshape your sota
based on what you
learn.
Heuristic: Make small changes to
your state-of-the-art (sota)
59. Credits & Acknowledgements
Erik Simmons who encouraged me to read Discussion of The
Method.
Richard Gabriel, a thinker and doer, critic of my work, and
inspiration too.
Eric Evans always makes me think deeply about design matters.
The Ouroboros image is from the Ouroboric Philosophy page,
an inspiration
https:ouroboricphilosophy.wordpress.com/tag/ouroboros/
Rebecca Wirfs-Brock photograph of the Blue Apron meal.
Allen Wirfs-Brock photograph of Rebecca Wirfs-Brock at
Haystack Rock.