InfoQ Homepage Design Content on InfoQ
-
Meet Elaine: A Persona- Driven Approach to Exploring Architecturally Significant Requirements
Often, requirements elicited from stakeholders describe a system’s functionality but fail to address qualities such as performance, reliability, & availability. Documenting these requirements is often overlooked because there are implicit assumptions that the system will perform to expected levels. This article describes a process developed on the idea of persona sketches to address this problem.
-
Interview: Adrian Cockcroft on High Availability, Best Practices, and Lessons Learned in the Cloud
Netflix is a widely referenced case study for how to effectively operate a cloud application at scale. While their hyper-resilient approach may not be necessary at most organizations, Netflix has advanced the conversation about what it means to build modern systems. In this interview, InfoQ spoke with Adrian Cockcroft who is the Cloud Architect for the Netflix platform.
-
Interview with Sandi Metz on Practical Object-Oriented Design in Ruby
On occasion of the second edition of her book “Practical Object-Oriented Design in Ruby: An Agile Primer”, InfoQ talked with Sandi about how her book was received, learning from open source code, making sensible use of code analysis tools and other topics.
-
There is a Cowboy in my Domain! - Implementing Domain Driven Design Review and Interview
Implementing Domain Driven Design, has brought clarity to an important but little understood area of software design. As a measure of Software Design literature, Vaughn's work is educational and fun. With real world code samples and sage advice, IDDD guides the reader through the sometimes murky waters of DDD and helps them gain the insight required to start a DDD journey of their own.
-
Agile Software Architecture Sketches and NoUML
Understanding the software architecture of what you're building can prevent chaos and encourage collective code ownership. In the race for agility though, many teams struggle to do this, particularly since they've abandoned UML in favour of "boxes and lines" sketches. Moving fast requires good communication, but how do you do this without resorting to big design up front and UML?
-
How Would You Build Up a City from Components?
Aliaksei Papou explores how components and common design patterns such as the Observer and Finite State Machine make it possible to design an application such that it can grow and change according to your needs using the analogy of a house.
-
Design Pattern Automation
Despite the high total cost of ownership of a line of code, a lot of boilerplate code still gets written every day. Much of it could be avoided if we only had smarter compilers. Indeed, most boilerplate code stems from repetitive implementation of design patterns that are so well-understood that they could be implemented automatically if we had a way to teach it to compilers.
-
Refactoring Legacy Applications: A Case Study
To refactor legacy code, the ideal is to have a suite of unit tests to prevent regressions. However it's not always that easy. This article describes a methodology to safely refactor legacy code.
-
A Look At Elemental Design Patterns
Jason McC. Smith speaks with InfoQ regarding his new book, "Elemental Design Patterns", and details his approach to evolving how design patterns are documented.
-
Data Modeling: Sample E-Commerce System with MongoDB
The rich document capabilities and atomic operation guarantees in MongoDB makes it possible to model many different applications. Even rigorous requirements of conventional applications like e-commerce system are possible in a document database. This data model (i.e. "schema design,") is useful for developing applications around any restricted resource system, not just e-commerce systems.
-
Designing and Developing Cross-Cutting Features
Every developer has had to integrate with another system, API or component at one point or another. And, often, a business feature must span systems. If you’ve been on a project like this or have one in the pipeline then this article provides strategies to handle the change. Also, this article covers separating system boundaries and what that means for your technical design.
-
Faster, Better, Higher – But How?
One of the main challenges when designing software architecture is the consideration of quality attributes. Not only their design turns out to be difficult, but also the specification of these attributes. Consequently, many problems in software systems are directly related to the specification and design of quality attributes such as modifiability or performance, to name just a few.