TDD, BDD, CDD, . . .

posted on 01 Mar 2008 23:53 by wonam in softdev

InfoQ มี debate "Coplien and Martin Debate TDD, CDD and Professionalism" ระหว่าง Bob Martin กับ Jim Coplien เกี่ยวกับ Test-Driven Development (เขียน unit test ก่อนเขียน code, ไม่เขียน code ถ้า unit test ไม่ fail, ใช้ test เพื่อ "drive" การพัฒนาโปรแกรม)

Coplien กล่าวว่า ในกรณีของงานที่ใหญ่มาก ๆ บางทีการขับเคลื่อนด้วย unit test ไม่พอที่จะทำให้เราได้สถาปัตยกรรมดี ๆ ออกมาได้

Bob Martin เห็นด้วย แต่กล่าวว่ามันช่วยขับเคลื่อน โครงร่างคร่าว ๆ ให้กลายเป็นสถาปัตยกรรมจริง ๆ โดยไม่ต้องใช้การ "คิดเผื่อ" 

Coplien ได้กล่าวไปถึง CDD (Contract-Driven Development) กับสิ่งที่ Bertrand Meyer ทำในภาษา Eiffel ที่ช่วยในการคิดสถาปัตยกรรม

คุยไปคุยมา อ่านสนุกดี

หลังจากนั้น Alistair Cockburn ได้อ่าน/ฟังการโต้วาทีของทั้งคู่ เลยได้ blog เกี่ยวกับเรื่องดังกล่าว (อ่านสรุปใน InfoQ) แล้วได้สรุปว่า Real Programmers have GUTs  (Good Unit Tests).

ในระหว่างการอ่าน debate ก็ทำให้ไปเจอต้นตอของ BDD (Behavioral-Driven Development) ที่เสนอโดย Dan North

Comment

Comment:

Tweet

wiki

#6 By corbettsue on 2016-04-26 14:27

ขอบคุณค่ะ

#5 By fukaze on 2015-01-23 11:41

เรื่องนี้ผม no comment ครับ

ส่วนตัวผมเป็นแฟน test-first นะ จะ bdd, tdd หรืออะไรก็ช่าง

แต่ตราบใดที่ยังไม่เจองานใหญ่ขนาดนั้นคงนั่งเทียนคิดเอาเองไม่ได้

ผมว่ามัน link กันหมดนะครับ คนที่จะทำ bdd, tdd ได้ดีก็ควรจะรู้ ddd* ด้วย ซึ่งเป็นตัวแปรสำคัญมากๆ ไม่งั้นอาจจะเละได้จริงๆ

ส่วน architecture ที่ว่าน่าจะเป็น physical architecture ครับ เพราะ bdd,tdd โปรโมต minimalist โค้ดเท่าที่จำเป็น design late ที่สุดเป็นรอบๆ ไป เช่นบางทีเราเห็นโจทย์แว๊บแรก ด้วยความชำนาญของเราก็รู้แล้วละต้อง design pattern นี้แน่เลย แต่ยังครับ tdd บอกว่าอย่าเพิ่งรีบ ทำโง่ๆ ไปก่อน แล้ว refactoring ไปเรื่อยๆ บางที่เราอาจไม่จำเป็น หรือเพราะถ้ามุ่งไปทางใดทางหนึ่งตั้งแต่ต้นพอเจอปัญหาที่ซ่อนอยู่จะถอยหลังยาก

bdd,tdd ที่ชอบอย่างนึงคือสร้างวินัยดีครับ อันเป็นปัจจัยหลักที่ทำให้ XP ประสบความสำเร็จ

ddd* = domain driven design

#4 By deans4j (124.120.142.53) on 2008-03-07 08:20

class-responsibility-collaborator ครับ. เห็นหนังสือของ pressman บอกว่า xp ก็มี design เหมือนกันคือเขียน crc (จริงๆผมก็บอกว่า design) เฉยๆก็ได้ ไม่ต้องใช้ศัพท์แปลกให้งง question.

สถาปัตยกรรมจะดีไม่มีน่าจะอยู่ที่ design modeling? หรือว่า CDD มีส่วนช่วย test design model มากกว่า TDD? ผมพยายามหาส่วนต่างของ CDD กับ TDD แต่ก็งงๆ :-P.

#3 By veer on 2008-03-02 23:01

CRC คือไรอ่ะ?

#2 By wonam on 2008-03-02 19:21

สถาปัตยกรรมมันน่าจะได้มาตั้งแต่เขียน CRC แล้ว? CDD ช่วยสร้างสถาปัตยกรรมได้?

ยาวมากๆ T_T.

#1 By veer on 2008-03-02 18:56