BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Object Oriented Design Content on InfoQ

  • Google Introduces Binary Encoding Format: Protocol Buffers

    Google caused a stir by releasing Protocol Buffers, a binary serialization format. We take a look at what exactly Protocol Buffers are and what alternatives are available in ASN.1 or Facebook's Thrift.

  • Interview : Nate Kohari on Releasing Ninject 1.0

    In this interview with Nate Kohari, creator of the Ninject dependency injection container for .NET, talks about the release of version 1.0 of Ninject. The interview has taken place over the past weeks leading up to the release of Ninject 1.0.

  • Neo4j - an Embedded, Network Database

    Neo4j is an embedded network model database for Java, Ruby and Python applications. It is capable of handling billions of nodes/relationships/properties on single machine hardware, supporting ACID transactions, durable persistence, concurrency control, transaction recovery, and everything else you’d expect from an enterprise-strength database.

  • Rails Cells: Component-Oriented Development for Rails

    Rails Cells aims to bring component-oriented development to Rails with its lightweight controllers and views that can easily be shared and reused. We caught up with Nick Sutterer, one of the Cells developers, to talk about the state of the project.

  • Adopting Simple Design

    A discussion about simple design is taking place on the extremeprogramming Yahoo! group that has already resulted in several useful recommendations. The discussion started off with a request for references concerning incremental design and quickly morphed into one about successfully adopting incremental design.

  • Interview: CORBA Guru Steve Vinoski on REST, Web Services, and Erlang

    In a new interview, recorded at QCon San Francisco 2007, CORBA Guru Steve Vinoski talks to Stefan Tilkov about his appreciation for REST, occasions when he would still use CORBA and the role of description languages for distributed systems. Other topics covered include the benefits of knowing many programming languages, and the usefulness of of Erlang to build distributed systems.

  • Can DDD be Adequately Implemented Without DI and AOP?

    A recent thread on Domain Driven Design (DDD) user group discussed the role of Dependency Injection (DI) and Aspect Oriented Programming (AOP) in DDD implementation. InfoQ spoke with Eric Evans and Ramnivas Laddad about these design concepts and the role of Annotations and orchestrated business services in DDD.

  • TDD/BDD Leading To Incomplete Unit Tests?

    Peter Ritchie raised concern about TDD and BDD keeping practitioners from writing good unit tests. He cites an over-reliance on “interaction testing", a core mantra and essence of TDD and BDD, as a driver with tendency to result in incomplete unit testing.

  • Private Methods, Test Driven Development, and Good Design

    The claim has been made that test driven development (TDD) encourages good design. The claim has also been made that TDD adversely affects design. Focusing on private methods and their relationships to good design and testability will give us something concrete to discuss - an instance of this apparent conflict.

  • InfoQ Presentation: Eric Evans on DDD - Strategic Design

    In this talk, Eric Evans introduces two broad principles for strategic design. 'Context mapping' addresses the fact that different groups model differently and 'Core domain' distills a shared vision of the system's core domain and provides a systematic guide to when good enough is good enough versus when to push for excellence.

  • Duck Typing and Protocols vs. Inheritance

    A recent debate on the RubyTalk list asked where to use is_a? vs respond_to? This highlights situations where objects respond to the same interface, but don't share any superclasses. We look at this debate and solutions in other languages such as Smalltalk, Erlang, and Scala.

  • Surprising criticism from parting Microsoft development lead

    Jay Bazuzi, once Development Lead for the C# Editor, is leaving Microsoft, and he wrote some surprisingly harsh parting words for his friends before he left; things like “OO isn’t a fad” and that “It’s OK to use someone else’s code”.

  • Qi4j introduces Composite Oriented Programming

    "Classes are dead, long live interfaces" was declared by Rickard Oberg at Oredev this week where he announced Qi4j. Qi4j brings the new idea of Composite Oriented Programing, in which is no behaviour at all is put in a class, instead the class becomes a 'composite' of mixins and interfaces declared on the class via annotations.

  • Designing for flexibility and robustness: Asynchronous message model, OOP and Functional Programming

    According to Pragmatic Programmers it is preferable in OOP to avoid design based on returning values. Michael Feathers argues that it may also be better to use the asynchronous message model that might be instrumental for improving adaptability and robustness. This maps well to the Erlang model though opposing some of the principles of pure functional programming.

  • Naked Objects adds Java 1.5, Injection, Hibernate

    Naked Objects is an architectural pattern and a framework for developing applications where domain objects takes a central role. Naked Objects recently released version 3.0 with support for Java 1.5, injection, an alternate UI, Hibernate object store, integrated security and contributed actions. InfoQ took the opportunity to speak with Richard Pawson, inventor of the Naked Objects pattern.

BT