Asserts are part a important part of a programming and design technique known as "Programming By Contract".
Asserts were first part of the Eifel language. Here's a couple links that will explain these concepts much better than I can.
http://www.eiffel.com/doc/manuals/technology/contract/page.html http://www.eiffel.com/doc/manuals/technology/contract/ariane/page.html.
I do also remember reading a article on XP v/s programming by contract. XP and programming by contract take diametrically opposite approaches to writing code.
Briefly ,The points made were
-XP -minimal intial designcode for success and the code is your documentation and design.
-Programming by contract. Detailed Design,you code only according to design(contract) and your code covers both successes and failures.
Maybe somebody can throw some more light on the XP v/s programming by contract topic .
Ravi
P.S Here's a couple of more intresting links on the topic.
http://www.scism.sbu.ac.uk/law/Section5/chap1/s5c1p4.html A collection of links on
java and programming by contract stuff..
http://www.geocities.com/Eureka/5855/java.htm [ April 25, 2002: Message edited by: Ravi Veeraghanta ]