CSC/ECE 517 FALL 2009/wiki2 1 HJ: Difference between revisions
Line 10: | Line 10: | ||
=== Weakness === | === Weakness === | ||
* RDD is less detailed and rigorous than some other technique used in software engineering like Booch method [http://en.wikipedia.org/wiki/Booch_method] for example. | |||
== Test Driven Development (TDD) == | == Test Driven Development (TDD) == |
Revision as of 02:16, 15 October 2009
Responsibility-Driven Development (RDD)
Overview
Responsibility-Driven Design (or RDD) relies on objects and component technology to design complex software systems.
Strength
Weakness
- RDD is less detailed and rigorous than some other technique used in software engineering like Booch method [1] for example.
Test Driven Development (TDD)
Overview
Test Driven Development [2] (or TDD) uses the repetition of a very short development cycle. The developer writes a failing automated test case that defines a new function, then writes the code to pass that test and finally refactors the new code.
This picture from [3] summarizes the TDD method.
Strength
- Constant feedback that each component is still working is provided by the fact that we do small changes and test.
The unit tests act as documentation that cannot go out-of-date, unlike separate documentation, which can and frequently does.
- The developer can move on to a new test when the test is refactored because the code is finished.
- The software tends to be better designed. All the code is refactored.
- No need to use a debugger. TDD reduced debugging time!
Weakness
- The high number of passing unit tests may bring a false sense of security.
- TDD can not be use in situations where full functional tests are required to determine success or failure. That's why TDD can not be used for programs that worked with databases or user interfaces.
Behavior Driven Development (BDD)
Behavior Driven Development (or BDD) focused on the language and interactions used in the process of software development. BDD encourages collaboration between developers and non-technical or business participants in a software project. This allows the developers to focus on why the code should be created, rather than the technical details, and minimizes translation between the technical language in which the code is written and the domain language spoken by the business, users, stakeholders, project management etc. BDD is an Agile software development technique.
Strength
- BDD increases feedback and communication in a software development.
- Behavior-driven developers use both their native language and the language of Domain Driven Design to describe the purpose and benefit of their code.
Weakness
BDD depends on the success of TDD.
Domain Driven Development (DDD)
Overview
Domain-driven design (or DDD) is a technique to design software, where the complex domain design which is based on a model, and that focus on the domain and domain logic.
Strength
DDD uses the strengths of Object-Oriented software development techniques to simulate the core of the problem.
Weakness
Model Driven Development (MDD)
Overview
Model Driven Development(or MDD) focuses on creating models, closer to some particular domain concepts rather than algorithmic concepts to create new software.
Strength
Weakness
Use of the different Driven Development Technology
References
RDD
[1] http://www.xpday.net/html/Xpday2008/rdd_with_mockito.pdf
[2] http://www.wirfs-brock.com/Design.html
[3] http://codebetter.com/blogs/jeremy.miller/articles/131726.aspx
[4] http://www.cs.colorado.edu/~kena/classes/6448/s05/lectures/lecture05.pdf
TDD
[5] http://en.wikipedia.org/wiki/Test-driven_development
[6] http://www.agiledata.org/essays/tdd.html
[7] http://c2.com/cgi/wiki?TestDrivenDevelopment
[9] http://msdn.microsoft.com/en-us/library/aa730844(VS.80).aspx
BDD
[10] http://behaviour-driven.org/Introduction
[11] http://en.wikipedia.org/wiki/Behavior_Driven_Development
[12] http://www.code-magazine.com/article.aspx?quickid=0805061
DDD
[13] http://www.infoq.com/articles/ddd-in-practice
[14] http://en.wikipedia.org/wiki/Domain-driven_design
MDD
[15] http://en.wikipedia.org/wiki/Model-driven_engineering
[16] http://msdn.microsoft.com/en-us/library/aa964145.aspx
[17] http://searchsoa.techtarget.com/news/interview/0,289202,sid26_gci999474,00.html