Authors:
            
                    Omar Badreddin
                    
                        
                    
                    ; 
                
                    Andrew Forward
                    
                        
                    
                     and
                
                    Timothy C. Lethbridge
                    
                        
                    
                    
                
        
        
            Affiliation:
            
                    
                        
                    
                    University of Ottawa, Canada
                
        
        
        
        
        
             Keyword(s):
            Test Driven Development, Model Oriented Programming Language, UML.
        
        
            
                Related
                    Ontology
                    Subjects/Areas/Topics:
                
                        Applications and Software Development
                    ; 
                        Domain-Specific Modeling and Domain-Specific Languages
                    ; 
                        Languages, Tools and Architectures
                    ; 
                        Model Quality Assurance Techniques
                    ; 
                        Model-Based Testing and Validation
                    ; 
                        Model-Driven Architecture
                    ; 
                        Model-Driven Software Development
                    ; 
                        Software Engineering
                    
            
        
        
            
                Abstract: 
                Test-Driven Development (TDD) is the practice of attempting to use the software you intend to write, before you write it. The premise is straightforward, but the specifics of applying it in different domains can be complex. In this paper, we provide aTDD approach for language development. The essence is to apply TDD at each of four levels of language processing, hence we call our approach Multi-Level TDD, or MLTDD. MLTDD can be applied to programming languages, preprocessors, domain specific languages, and transformation engines. MLTDD was used to build Umple, a model-oriented programming language available for Java, Ruby, and PHP. We present two case studies where this approach was implemented to develop two other domain specific languages.