Architecture principles epitomize architecture's function: to clearly define the necessary constraints on a system's design without prescriptively defining all the design details. A good set of principles can provide context and justification for design decisions and can foster team collaboration and communication.
Boyan Mihaylov covers his experience when working with both traditional waterfall software architectures and agile ones. He depicts the similarities and differences between these with a focus on three areas: the specifics of the software architect role, the timespan of the software architecture, and the output of the software architecture.
Today’s software applications have a lot of concurrent tasks that are distributed over multiple threads, processes, processors and PCs. This article introduces a visual modeling technique to describe and specify the application’s execution architecture. Within Philips Healthcare the Unified Execution Diagram has proven to be very useful for designing and documenting the execution architecture.
In this article, Aaron Kendall uses the "metadata-driven design and development" approach by Kevin Perera to show how to rapidly create a mobile application that can evolve during runtime.
Grady Booch is interviewed by Mark Collins-Cope covering topics ranging from UML and Unified Process to Programming Languages and the future of software innovation.
In Key Value data stores, data is represented as a collection of key–value pairs. InfoQ spoke with Casey Rosenthal from Basho team about data modeling when using Key Value NoSQL databases. 1
Agile considers working code as the most important team artifact, but we still need modeling. Kenji Hiranabe explores the spaces where modeling fits, with focus on development scaling. 7
Understanding the software architecture of what you're building can prevent chaos and encourage collective code ownership. But how do you do this without resorting to big design up front and UML? 9
Raul Rugiero proposes an extension to the UML use cases so they may be enhanced in order to allow enhanced UML tools to properly handle links between use cases and tests. 7
Gathering feedback early and often is the key to success on most development projects. Wireframing is a great technique for gathering feedback and guiding a team before any code has been written. 12
Creating models in a form or another is very common, their combination with the code has been challenging. The article describes proven practices for working with both models and code. 3
Modeling failure during architecture phase to ensure availability in production