Francis Siu
SCJP, MCDBA
Originally posted by siu chung man:
As I had listen some concept in OO analysis and design, there exist a gap between analysis and design.
However I do not know how to reduce the gap,
How to create a domain model for the Unreal world. :roll:
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Francis Siu
SCJP, MCDBA
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Cheers, Sathya Srinivasan - SCJP 1.2, SCWCD 1.2, SCMAD 1.0
Co-Author of Whizlabs SCMAD Certification Exam Simulator and SCMAD Exam Guide Book
I'll sign off this one. It's an urban myth that it would be more efficient to produce a set of detailed design diagrams from which a trained monkey could generate a working application than to let a bunch of smart developers develop the software in direct communication with the customer using tools like a domain model or analysis model.Originally posted by Sathya Srinivasan:
Solution: Don't bother creating a detailed design diagram. Create a very good analysis diagram, get the buy in from the client about its viability (and the project lead), write the code, and finally, create the detailed design model from the code to serve as a documentation reference.
Comments?
Author of Test Driven (2007) and Effective Unit Testing (2013) [Blog] [HowToAskQuestionsOnJavaRanch]
Originally posted by Sathya Srinivasan:
Based on an article by Jack Reeves - Code is Design
I have come to think that analysis model happens before the code while the design model happens after the code.
1. Analysis model is needed to get an understanding of the domain and how the problem relates to the domain. It is generally free of implementation details and concentrates more on capturing the business relations in the domain.
Such a diagram (crude or formal) is needed to get an idea on how to proceed with the implementation and hence, must be done before coding.
Also, this model must be shared with the clients and get their view on whether it correctly represents the business needs.
2. Design model explains how the business needs are going to be implemented using some software language/technique. Such a model is typically useful for the programmers who write it, and more importantly, to serve as a documentation for those who would succeed the programmers who wrote the software in the first place.
As a result, this model should reflect how the project has been implemented exactly (or as close as possible).
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Originally posted by Ilja Preuss:
I disagree - they need to be done concurrently. Trying to do them sequentially will lead to suffering, because you are missing vital feedback.
Originally posted by Ilja Preuss:
First, domain knowledge doesn't necessarily be captured in diagrams. What is important is that the knowledge is in the heads of the people - diagrams are only one tool to help doing that. The most important tool, though, is face to face conversation.
Originally posted by Ilja Preuss:
Well, I'd say that the point of the article you linked to is that the code
*is* that model.
Cheers, Sathya Srinivasan - SCJP 1.2, SCWCD 1.2, SCMAD 1.0
Co-Author of Whizlabs SCMAD Certification Exam Simulator and SCMAD Exam Guide Book
Originally posted by Sathya Srinivasan:
If the statement comes across as a waterfall-like approach, that was not the intention.
The point I try to make is that the design model is mainly used as a reference material for the developers who tend to maintain or extend a program and hence should accurately reflect the code developed. Such an accurate model can be developed only after the code is developed (or after an iteration). As a result, it should always be done after the code is developed (or after an iteration).
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
<a href="http://www-306.ibm.com/software/rational/bios/ambler.html" target="_blank" rel="nofollow">Scott W. Ambler</a><br />Practice Leader Agile Development, IBM Rational<br /> <br />Now available: <a href="http://www.ambysoft.com/books/refactoringDatabases.html" target="_blank" rel="nofollow">Refactoring Databases: Evolutionary Database Design</a>
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Cheers, Sathya Srinivasan - SCJP 1.2, SCWCD 1.2, SCMAD 1.0
Co-Author of Whizlabs SCMAD Certification Exam Simulator and SCMAD Exam Guide Book
Francis Siu
SCJP, MCDBA
<a href="http://www-306.ibm.com/software/rational/bios/ambler.html" target="_blank" rel="nofollow">Scott W. Ambler</a><br />Practice Leader Agile Development, IBM Rational<br /> <br />Now available: <a href="http://www.ambysoft.com/books/refactoringDatabases.html" target="_blank" rel="nofollow">Refactoring Databases: Evolutionary Database Design</a>
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
Francis Siu
SCJP, MCDBA
Books: Pragmatic Unit Testing in Java, Agile Java, Modern C++ Programming with TDD, Essential Java Style, Agile in a Flash. Contributor, Clean Code.
<a href="http://www-306.ibm.com/software/rational/bios/ambler.html" target="_blank" rel="nofollow">Scott W. Ambler</a><br />Practice Leader Agile Development, IBM Rational<br /> <br />Now available: <a href="http://www.ambysoft.com/books/refactoringDatabases.html" target="_blank" rel="nofollow">Refactoring Databases: Evolutionary Database Design</a>
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
<a href="http://www-306.ibm.com/software/rational/bios/ambler.html" target="_blank" rel="nofollow">Scott W. Ambler</a><br />Practice Leader Agile Development, IBM Rational<br /> <br />Now available: <a href="http://www.ambysoft.com/books/refactoringDatabases.html" target="_blank" rel="nofollow">Refactoring Databases: Evolutionary Database Design</a>
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime. |