Questions for an Enterprise Architect
Erik Dörnenburg answers: What is Enterprise and Evolutionary Architecture?, discussing 4 issues: Turning strategy into execution, Ensuring conformance, Where do the architects sit? Buying or building?
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
How would you like to view the presentation?
Getting Started with Stratos - an Open Source Cloud Platform
A practical guide to choosing the right agile tools
Agile Practices to Improve Project Management Organization (PMO) Effectiveness
Improve Java Garbage Collection, Runtime Execution, and JVM visibility with Zing
Good example of how value objects can simplify the code and extend the domain language
Highly recommended. Dan illustrated that code that might appear wholly in an entity or DTO can more appropriately be moved to a Value Object. Something that I inferred from the presentation is that a DDD style Policy or Specification would also benefit from operating on a number of smart Value Objects.
A very good example showing the difference between DTO and VO for the people confusing between them.
IMO a real-world business application should never use the primitive data types on domain objects. There will always be a value object perceivable for every single element of business object's data.
Thanks.
Very clear presentation, immediately useful, requires no previous exposure to DDD.
I'm curious to learn where you draw the line - Field Identifiers, such as primary keys on typical record objects - should these be value objects offering a range of validation features? (a database Id cannot be zero or negative).
Conceptually, one is still speaking about "RecordId" as an abstract consept, thus, according to your line of thought, it warrants the use of a RecordId class, however, this is extremely hard to sell to a developer who could care less about order.
Value objects also have a dark side - they complicate the use of ORMs such as hibernate and EF.
I'm curious to learn where you draw the line - Field Identifiers, such as primary keys on typical record objects - should these be value objects offering a range of validation features? (a database Id cannot be zero or negative).
I am very pragmatic about it. Does it smooth out discussions with product owners, dbas, gui designers, users or other stakeholders? Or, does it clarify code, leading to less repetition (DRY violations), bugs, or awkward code? In any of those cases: Yes. If none of those benefits, and no other: No, spend your time and energy somewhere else where you have a better payback for your efforts.Conceptually, one is still speaking about "RecordId" as an abstract consept, thus, according to your line of thought, it warrants the use of a RecordId class,
In many cases technical constructs like "RecordId" or "Customer Number" take on a life of their own and become part of what stakeholders need to be conceptually aware of. It sounds like that in your example. Litmus test: check the parameters of the methods in the service layer API (called by presentation). If it is in there, an explicit value object class is probably a good idea.however, this is extremely hard to sell to a developer who could care less about order.
Did not quite understand ... Do you mean "order" = "ordering/sorting" or "order" = "request for goods or similar"?
And in what way is it a "hard sell" to developers? Are they not interested in "fluffy domain stuff"?Value objects also have a dark side - they complicate the use of ORMs such as hibernate and EF.
I would phrase that the other way around. ORMs have a dark side - they complicate the use of value objects; limiting your design power. :)
But seriously: that trouble is historically an undebatable fact, but in "modern" versions e g JPA 2.0 it has become *a lot* better.
Dan Bergh Johnsson
Yet another way that I use the Elements of Simple Design in my work. Writing tests exposes the scattered copies of the same algorithms by duplication irrelevant details in the tests [ bit.ly/6wXgmS ]. Of course, the scattered copies of the algorithms are, themselves, duplicated. In addition, names like justnumbers(), while structurally accurate, bear improving, and when that code moves onto PhoneNumber, it becomes clearer to rename it to isValid().
I really like the idea of PhoneNumber becoming part of a glossary for what /we/ mean by "phone number" on this project right now.
...on the app, in particular. This makes moving isValidPhoneNumber() onto PhoneNumber a little strange to me. It gives PhoneNumber knowledge about the application. Perhaps my application allows the format "+1 888 655-2724" or requires only "18886552724". I don't know that that's a domain-level decision.
Still, wherever the validation rule resides, I hope to find it only in one place. :)
Erik Dörnenburg answers: What is Enterprise and Evolutionary Architecture?, discussing 4 issues: Turning strategy into execution, Ensuring conformance, Where do the architects sit? Buying or building?
Sean Cribbs explains what Map-Reduce and Riak are, why and how to use Map-Reduce with Riak, and how to convert SQL queries into their Map-Reduce equivalents.
Chris Richardson shows how he ported a relational database to three NoSQL data stores: Redis, Cassandra and MongoDB.
Jean Tabaka challenges the audience to reflect on what Agile practices they are employing, how they are using them, ending with the questions “Why have their organization chosen to go Agile?
Andreas talks about the benefits of the Open Web and how it compares to proprietary stacks. He also talks about various projects that push the envelope like Boot to Gecko, Broadway and pdf.js.
Ron Bodkin discusses early adoption of Hadoop, NoSQL and describes MapReduce and related libraries and Frameworks. Other topics include Hive, Pig, multi tenancy, and security in a big data environment
Stephen Bohlen explains how Spring helps with interoperability between Java and .NET, demoing it with the help of a sample application.
Guilherme Silveira mentions some of the turning points in project development that may affect the quality of the code offering advice on avoiding writing crappy code.
8 comments
Watch Thread Reply