TL;DR: Experimental results tend to indicate that TDD programmers produce higher quality code because they passed 18% more functional black-box test cases and took 16% more time, which supports the perception thatTDD has the potential for increasing the level of unit testing in the software industry.
Abstract: Test Driven Development (TDD) is a software development practice in which unit test cases are incrementally written prior to code implementation. We ran a set of structured experiments with 24 professional pair programmers. One group developed a small Java program using TDD while the other (control group), used a waterfall-like approach. Experimental results, subject to external validity concerns, tend to indicate that TDD programmers produce higher quality code because they passed 18% more functional black-box test cases. However, the TDD programmers took 16% more time. Statistical analysis of the results showed that a moderate statistical correlation existed between time spent and the resulting quality. Lastly, the programmers in the control group often did not write the required automated test cases after completing their code. Hence it could be perceived that waterfall-like approaches do not encourage adequate testing. This intuitive observation supports the perception that TDD has the potential for increasing the level of unit testing in the software industry.
TL;DR: This revised edition focuses on interoperability across programming technologies, whether you are using objects in traditional application design, in XML-based data transactions, in web page development, in mobile apps, or in any modern programming environment.
Abstract: The Object-Oriented Thought Process, Fourth Edition An introduction to object-oriented concepts for developers looking to master modern application practices Object-oriented programming (OOP) is the foundation of modern programming languages, including C++, Java, C#, Visual Basic .NET, Ruby, and Objective-C. Objects also form the basis for many web technologies such as JavaScript, Python, and PHP. It is of vital importance to learn the fundamental concepts of object orientation before starting to use object-oriented development environments. OOP promotes good design practices, code portability, and reusebut it requires a shift in thinking to be fully understood. Programmers new to OOP should resist the temptation to jump directly into a particular programming language (such as Objective-C, VB .NET, C++, C# .NET, or Java) or a modeling language (such as UML), and instead first take the time to learn what author Matt Weisfeld calls the object-oriented thought process. Written by a developer for developers who want to make the leap to object-oriented technologies, The Object-Oriented Thought Process provides a solutions-oriented approach to object-oriented programming. Readers will learn to understand the proper uses of inheritance and composition, the difference between aggregation and association, and the important distinction between interfaces and implementations. While programming technologies have been changing and evolving over the years, object-oriented concepts remain a constantno matter what the platform. This revised edition focuses on interoperability across programming technologies, whether you are using objects in traditional application design, in XML-based data transactions, in web page development, in mobile apps, or in any modern programming environment. Programmers who aim to create high quality softwareas all programmers shouldmust learn the varied subtleties of the familiar yet not so familiar beasts called objects and classes. Doing so entails careful study of books such as Matt Weisfelds The Object-Oriented Thought Process. Bill McCarty, author of Java Distributed Objects, and Object-Oriented Design in Java Contents at a Glance 1 Introduction to Object-Oriented Concepts2 How to Think in Terms of Objects3 Advanced Object-Oriented Concepts4 The Anatomy of a Class5 Class Design Guidelines6 Designing with Objects7 Mastering Inheritance and Composition8 Frameworks and Reuse: Designing with Interfaces and Abstract Classes9 Building Objects and Object-Oriented Design10 Creating Object Models11 Objects and Portable Data: XML and JSON12 Persistent Objects: Serialization, Marshaling, and Relational Databases13 Objects in Web Services, Mobile Apps, and Hybrids14 Objects and Client/Server Applications15 Design Patterns
TL;DR: A novel approach of automated test data generation in which assertions are used to generate test cases to identify test cases on which an assertion is violated and this approach may significantly improve the chances of finding software errors as compared to the existing methods of test generation.
Abstract: Assertions are recognized as a powerful tool for automatic run time detection of software errors. However, existing testing methods do not use assertions to generate test cases. We present a novel approach of automated test data generation in which assertions are used to generate test cases. In this approach the goal is to identify test cases on which an assertion is violated. If such a test is found then this test uncovers an error in the program. The problem of finding program input on which an assertion is violated may be reduced to the problem of finding program input on which a selected statement is executed. As a result, the existing methods of automated test data generation for white box testing may be used to generate tests to violate assertions. The experiments have shown that this approach may significantly improve the chances of finding software errors as compared to the existing methods of test generation.
Abstract: A computer controlled object oriented programming system for interfacing a plurality of programming objects with each other to provide combination objects combining programming functions of the objects, each object including predetermined interface data defining a required common interface with the other programming objects in a framework of events, attributes and methods for manipulating the attributes. These objects may be combined with each other via their common interfaces to form combination objects and such combination objects may in turn be further combined with other objects and combination objects to form objects of increasing complexity which function as complete programs. There is provided a displayable output of documentation for the programming objects in which the basic documentation provided for an object oriented program by its developers may be added to or modified without the need to change the framework of the objects in the program. To accomplish this, the invention involves the combination of two documentation functions: 1) the basic documentation program which translates source code data within the object framework, and 2) an implementation translating a portion of the object source code data which is outside of the object framework.
TL;DR: In this article, a user interface is developed to guide the user to define a particular type of extension for one or more systems, and a series of generic templates may be used to generate the particular objects to be added to each system.
Abstract: A system may be customized by adding one or more software objects without detailed knowledge of the data model or the programming techniques used in the system. A user interface may be developed to guide the user to define a particular type of extension for one or more systems. The user-entered extension definition and a series of generic templates may be used to generate the particular objects to be added to each system.