Submitted by alastairs on 4 November 2009 - 11:58pm
Windows 7 introduces a whole bunch of cool features, as I've mentioned here previously. Sometimes the simplest ones are the most effective, however, and there's nothing simpler or more effective than the in-taskbar progress indicator. If you haven't seen this already, when you copy a file in Windows Explorer, download a file using IE, or perform any of a number of similar actions that might take a while to complete, the progress information is displayed in the task bar icon for that application.
[img_assist|nid=116|title=Windows 7 Taskbar Progress|desc=This screenshot also illustrates the "Icon and Text" display mode|link=none|align=center|width=400|height=234]
Submitted by alastairs on 6 September 2009 - 8:28pm
That busy period at work that I mentioned hasn't really ended, and by the sounds of things it won't be any time soon. As such, it's likely that my Code Complete series is going to be put on hold for a while longer as we ride this current and move on.
Ok, so this is my first post on Code Complete for a little while; it turned out the busy period at work lasted a good couple of weeks longer than I thought it would! It was a quite a while back that I made these notes (mid-June, in fact), so if the post seems less coherent or I've got something obviously wrong, please leave a comment. Here be dragons.
This post deals with design heuristics. We've already touched on what heuristics are in the Software Development Metaphors post, so you might want to refresh your understanding before reading on. Inside, I will cover McConnell's description and critical evaluation of the most common design heuristics. These can be viewed as smaller steps in a larger process, or as individual methods to use at different stages of the design process.
Design is essentially an exercise in managing complexity, and it is incredibly important to manage correctly. Dijkstra (1989) stated that a single person working on a software development project needs to grapple with anything from one bit to a few hundred megabytes: this is 9 orders of magnitude. Given that software is always increasing in complexity, McConnell posits that this figure could be as much as 15 orders of magnitude or more today.
This post covers in some depth the issues around managing complexity, ways to attach it, and the importance of doing so. It will also cover desirable characteristics of design, and the different levels of design.
I have a couple of new posts waiting in the wings for this series. They're both quite lengthy, so they're taking a bit of time to write.
Things have also got considerably busier at work in the last week or so, and it's proving nigh on impossible to dedicate the time to reading and absorbing the material. As such, there will likely be a bit of a gap in my postings on this series after I've cleared out the back-log.
If you've been enjoying the series so far, and/or if you have any feedback on how to improve it, etc., please leave me a comment or two.
Chapter 5 of Code Complete covers the concept of Design in software construction. This is a pretty weighty chapter, so I'm going to tackle it in a mini-series of posts. Here I cover McConnell's description of the design challenges, including why it's so hard to get right.
This post is a something of a bite-size chunk, and hopefully it'll provide a measure of breathing space between two large posts.
[img_assist|nid=98|title=Design can be a wicked problem|desc=|link=none|align=center|width=400|height=292]
Part 1 of this post covered the importance of pre-requisites: why it is worth doing them, and doing them well; why it is a bad idea to jump straight into coding; and how to ensure that they are completed at your organisation (if they aren't automatically already).
This second post covers the three main pre-requisites, namely Problem Definition, Requirements, and Architecture.