Thursday, October 4, 2007
Monday, September 17, 2007
His latest post is about Software Factory verticalisation, ie how can we leverage off the essentially horizontal (cross-cutting) software factories that Microsoft P&P are developing, to specialise them for our particular (and narrower focussed) domain?
His post raises some interesting related issues about the practical application of software factories.
The current crop of horizontal factories - SCSF(Smart Client Software Factory), WCSF(Web Client Software Factory), WSSF(Web Service Software Factory) - are all general purpose / cross cutting. They should provide a way of insulating / abstracting from the physical solution domain, eg .NET 2.0/3.0/3.5, etc.
The issue I'm raising is - how do we future proof our factory developed applications, to allow us to take advantage of ever changing technologies, and allow us to "easily" upgrade to the next version of our vertical or horizontal factories.
Without strategies to handle this, are we destined to have to rewrite / refresh our apps / products every few years ? If we accept this - then it's legacy / obsolescence by design, and we loose many / most of the gains we have made by using a software factory approach.
It seems to me that the answer lies with modelling (via DSLs) so that our IP assets are maximised in (DSL) models and other factory assests, and we "just" have to update the mappings to lower levels when they change.
But with the factory approach spanning vertical factories to horizontal factories to physical solutions, this introduces some interesting configuration management and upgrade challenges.
Also "interesting" is the choice of which horizontal factory (from Microsoft P&P) you should use. For our smart client product line, we were planning to use the SCSF, but depending on who you talk to - development of it has either stopped / slowed to a crawl, and the supposed replacement is Acropolis. I don't see any evidence with Acropolis that they are taking a software factory approach. This is indeed a challenge for those of us who would like to embark on a software factory / product line approach.
Thursday, September 13, 2007
As part of the Extensibility implementation we have been looking into a bug in the last day or so, related to Icon images in a treeview. The bug is that in Windows XP the icon images didn't appear, in Vista they did, for the same EXE. The odd part? It was working in both until just recently.
So what happened?
As part of doing a review, and some related bug fixes, I noticed that the visual styles weren't enabled, so I 'fixed' them. Now I'm running Windows Vista, so simply putting Application.EnableVisualStyles before Application.Run worked beautifully. You might ask why this hadn't been done earlier, well it had, sort of. The application starts multiple threads, with a message loop and form on each, there are reasons for this that I won't go into here. The bug I fixed was when I notice we'd only called Application.EnableVisualStyles on the initial thread, and I added the call into each new thread.
As I said, this worked swimmingly for me, but a while later when the other Devs got the latest code (they're using Windows XP) things got interesting. There is a treeview on the form and it's icon had disappeared! But only on the Windows XP machines?? I tried running the EXE on my Vista machine and the images appeared, so it's obviously a runtime issue and not a compile time one.
The answer, a lesson learned long ago but unfortunately forgotten. Under Windows XP the Application.EnableVisualStyles exhibits some interesting behaviour. I'm not going to try to explain why, I'll defer to those more knowledgeable in this area. I found a Code Project article and an old but informative blog that I think do a good job of explaining the issue.
Note that as part of the fix for this you must call Application.EnableVisualStyles and Application.DoEvents BEFORE you call the constructor for the form. This is due to the message loop and is explained in the blog article referred to above.
Sunday, September 9, 2007
Rico Mariani was recently appointed chief architect of Visual Studio. He's been blogging a lot about .NET performance over the last few years. His latest entry points to a talk he gave to Gamefest 2007 with the same title as this blog entry.
"This talk is for those who want to understand the inescapable performance consequences of the managed programming method: the things you cannot avoid and the things you can. The presentation explains those few characteristics of managed code, such as array bounds checking, application domain isolation, and write barriers, that profoundly affect the code generation at a primitive level. Comparing and contrasting the consequences for the .NET Compact Framework and the classic .NET runtime, the talk explains the reasons for these overheads, the benefits they provide, and what practices minimize the associated costs. Additionally, we discuss some commonly occurring costs, such as boxing, that aren't inherent to all managed code, and we offer some tips for minimizing those costs."
Also on his blog is a link to various articles on performance that he's written.
Wednesday, September 5, 2007
I've been reading Alan Cooper's book The Inmates are Running the Asylum. He makes a strong case for the discipline of Interaction Design. The inmates are developers and the Interaction Designers will ensure systems are built fit for purpose rather than matching the usually complex interaction idioms that developers build, because they are used to working with the complex. Definitely worth a read, so see me or Ben for a copy. Hunted around for some additional material, and came across Jenifer Tidwell's book Designing Interfaces which is pretty much available online. Also here are some links from Darryl Chantry, one of the UX presenters at TechEd : http://www.odannyboy.com, http://www.cameronmoll.com, http://www.adaptivepath.com, http://www.molecular.com, http://www.uie.com. Also worthy of a look is Shane Morris's blog.
Tuesday, August 21, 2007
Benjamin Day Consulting have a $25 tool - "Dubbelbock TFS 2.0 lets you access Team Foundation Server (TFS) source control from Windows Explorer (explorer.exe). Now you can go to any file in an existing TFS Workspace, right-click and you'll then see the Dubbelbock TFS context menu with options like Check In, Check Out, Undo, and Get Latest." Could be very useful for document management. I've had a play with it and it seems to work fine - the only issue is that on some machines there is a problem with installing it :-( . It seems to install ok on Vista machines I got people to try, but not always successful on WinXP. I contacted the author and he's aware of the problem - offered me a free copy if I could find out what is "missing".
It also has a system tray utility that allows you to create "stencils" for work item types, and then create / edit work items using the stencils. This functionality is similar to the Codeplex project Fissum. As Microsoft have now released the Visual Studio 2005 Team Foundation Server Power Tools, which includes a work item templates feature, it's probably a better way to go.
Sunday, August 12, 2007
Fábio Pedrosa talks about Snoop, "a great utility to explore running WPF applications. It displays the visual tree as well as properties and events. It can be used to map UI elements to the underlying project classes. This application is very similar to the famous Spy++, but for WPF applications. You can inspect the insides of any WPF application, including Microsoft Expression Blend (also a WPF application)."
Another Codeplex project - Source Code Outliner Power Toy - "is a Visual Studio extension that provides a tree view of your source code's types and members and lets you quickly navigate to them inside the editor."
In the June 2007 edition of MSDN magazine there's an article on how MFC has been souped up in Orcas "Most of the enhancements made to MFC focus on UI. When an MFC application is recompiled with Visual Studio "Orcas," it gets an automatic face-lift for Windows Vista—that is, common dialogs will be enhanced, toolbars will follow Windows Vista themes, and window frames and title bars will sport Aero™ transparency. This face-lift happens without modifying any code—all you need to do is recompile the application."
Thursday, August 9, 2007
Kathy Kam is a project manager on Acropolis so went along to see if Smart Client Software Factory can really be replaced by Acropolis - certainly not right now as we were warned that it's only very early stages with an expectation of a 2008 timeframe.
Didn't really get clear a picture of where Acropolis is being pitched from the preso - although she did say that they were getting inspiration from old MFC wizard and CAB/SCSF- so asked her a few questions afterwards.
Apparently the SCSF lives on with the next work being to include WPF, plus the teams are talking bi-weekly. This is different to the blog talk from Glenn Block when Acropolis was announced ("we currently have no further plans for SCSF releases"). To further questions, there was talk of plans for some level of migration tool (may just be a document) from SCSF to Acropolis, but that SCSF would be deprecated.
The picture that's forming for me is that Acropolis is something more lightweight than SCSF so not certain about its use for hard core apps.
Was a bit disappointing to see WPF transitions demo'd and very little about the patterns which underpin Acropolis.
So might be time to check out what looks to be a really comprehensive set of blog articles by Jeremy Miller - The Build Your Own CAB Series Table of Contents
Brian Harry gives a summary of lots of work item enhancements that I've been looking for:
- A focus on requirements and traceability. Among other things, the MSF CMMI guidance has been updated to include new work item types and reports. MSF Agile will be updated in the future.
- Hierarchical work items for work breakdown and status rollups.
- Extensible link types to be able to relate work in whatever ways fit your process.
- Querying over links to enable traceability and easily answering hard questions about ongoing work.
- Querying based on group membership to be able to scope to the people on your team easily.
On Codeplex there is now a 496 page book Team Development with Visual Studio Team Foundation Server which is sure to be riveting reading.
Have been reading Matt Winkle's blog so good to see his preso. WF is definitely a dev's tool, but I asked him about how you could get more use out of the workflows that BAs create (in Visio).
Can host the WF designer of course, but not too friendly, can use a 3rd party product like K2 (which is based on WF), or can roll your own designer. Matt also suggested looking at Sharepoint Workflow Designer which uses an Outlook Email Rules type interface to enable authoring of workflows around Sharepoint 2007 lists.
So checked out the K2 guys and they have a tool which enables authoring of workflows using Visio 2007 and the wiring up to built-in "BlackPearl" wizards, or custom (Visual Studio) code. It only need runtimes for participants in workflows at cost of $A 200.
Went to a session on Project Server / Timesheets (sounds boring) to see if we could use the Project Server 2007 VSTS connector to get timesheeting for tasks, etc that we use in Team System. Timesheets in Project Server look very enterprisy (approvals, etc) so didn't look promising for task WIs. Asked the presenter about how TFS & Proj Server are aligning, and got the same answer as last year - sorry don't know much about that stuff that devs do.
Talked to the Process MeMtoR guys who have a RUP like methodology tool. They add an Owner field to WIT they track in MS Project (not sever), and map this field to resources in Project - so they can schedule on a team basis rather than AD users - see video.
Went to a session by Don Kilen who's a product manager for SQL Server Katmai. Although SQL Sever 2008 will be launched in late Feb 08 with all th eother stuff, expect RTM in Q2/08. Interesting that that only features that they consider shippable make it into CTPs, and this includes the full doco. So I checked this out with the doco download (130Mb) and sure enough there was full doco on the new HierarchyID type, including a couple of lessons.
Some interesting features in the June & July CTPs:
"ORDPATH improvement provides an important new functionality to our customers who use hierarchical data. It provides a superior way of modeling hierarchies in SQL Server by introducing the HierarchyID system data type and corresponding built-in methods which are designed to make it easier to store, query and operate hierarchical data. HierarchyID is also optimized for representing trees, the most common type of hierarchical data."
FileStream data type which allows large binary data to be stored in the file system and yet remain an integral part of the database with transactional consistency
Other interesting features he mentioned are a sparse columns - so that you will be able to have up to 100K columns / table, spatial data types - a flat earth data type (GEOMETRY) and a round earth data type (GEOGRAPHY), and new index types for hierarchies, indexes on filtered values within columns, and spatial indexes.
Will also be improved compression on the fly with not too much performance impact (lots of CPU with multi-cores & I/O still relatively slow), and synchronized programming model (like Outlook / Exchange ? ) and virtual earth integration.
Thursday, August 2, 2007
Wednesday, August 1, 2007
Microsoft has apparently shunned the modeling world by offering no software modeling tools, apart from giving us a diagramming tool like Visio. They have also turned their backs on UML and the OMG's Model Driven Architecture approach.
Pedro Silva points to an article in eWeek that gives a summary of what is happening in the modeling space in the industry.
As per Joseph Cooney's blog, Valve software, makers of games like half-life etc listed a high-level breakdown showing what the typical client PC specifications from the users of their software. The survey size is almost 1 million, but although obviously biased towards gamers, gives an indication of what people are using.
Tuesday, July 31, 2007
The project description says: "A .NET expression parser and evaluator that uses a custom compiler and lightweight codegen to compile expressions to IL and emit them to a dynamic method."
Worthy of a look.
Although they won't be at Oz TechEd, Tom Hollander ( EntLib fame who is now back in Oz) has a session on Software Factories (ARC308 - Thu Aug 9 - 11:30am)