background preloader

Software Design

Facebook Twitter

Design Guide. Evolutionary Architecture and Design Perhaps the biggest shift in my thinking during my career has been towards an evolutionary approach to architecture and design.

Design Guide

When I was first taught about software design, it was as an activity separated from programming that should be completed before programming began. Now I see it as an activity that is intertwined with programming. I wrote about this shift in detail for Is Design Dead - one of my most popular web articles. You can find more articles and bliki entries under the evolutionary design tag. My colleague Neal Ford is a frequent writer and speaker who shares many of my interests and opinions (and an excellent source of ideas for me to clip).

Following on from this, he’s also recorded a video workshop on Agile Engineering Practices for O’Reilly that’s available on safari books online. Dependency Injection Evolutionary Database Design Many people are concerned about building a database in an evolutionary manner. EAA Work in Progress. Agile Guide. The New Methodology My introductory article on agile methods, focusing on the two key criteria that sets them apart from the traditional view of software process: adaptive planning and a people-centered approach.

Agile Guide

The original version of this article appeared in 2000 where it influenced the growing interest in agile methods, this updated version is still my favorite introduction. Is Design Dead? When Extreme Programming first appeared, many people thought it called for the death of software design. Still today, a common misconception of agile methods is that they eliminate design. It’s Not Just Standing Up Jason Yip’s definitive guide to running stand-up meetings. Agile and Offshore When we were looking into opening an office in India in 2002, people doubted that agile methods could be used in an offshore development project. Evolutionary Database Design In the early days, databases were seen as something that was not amenable to the evolutionary design process that comes with agile thinking. New software design technique allows programs to run faster. Researchers at North Carolina State University have developed a new approach to software development that will allow common computer programs to run up to 20 percent faster and possibly incorporate new security measures.

New software design technique allows programs to run faster

The researchers have found a way to run different parts of some programs -- including, for the first time, such widely used programs as word processors and Web browsers -- at the same time, which makes the programs operate more efficiently. In order to understand how they did it, you have to know a little bit about computers. The brain of a computer chip is its central processing unit, or "core.

" Computing technology has advanced to the point where it is now common to have between four and eight cores on each chip. But for a program to utilize these cores, it has to be broken down into separate "threads" -- so that each core can execute a different part of the program simultaneously. Every computer program consists of multiple steps. How to Write an Effective Design Document. Day by day, programmers are able to get more done in less time.

How to Write an Effective Design Document

With today’s high level languages, development environments, tools and the “rapid application development” mindset, both programmers and managers have become accustomed to extremely fast development cycles. Programmers are now more inclined to jump directly into development, fearing that every hour they are not writing code will result in an hour of overtime the weekend before the deadline. The process of designing before coding is becoming outdated. Documenting designs is becoming even rarer. Many developers have never written a design document and cringe at the idea of doing so.

Why write a design document? A design document is a way for you to communicate to others what your design decisions are and why your decisions are good decisions. This presents a problem, however. If this seems like too much work, it’s not. What makes a good design? Writing for a Peer Developer Figure 1 (click to see full size) Usage Configuration Model.