Real World Software Architecture

Real World Software Architecture is dedicated to providing information and experiences from the field of Software Architecture.



Subscribe with RSS or ATOM Add to Google

Links

  • Home Page
  • Real World Software Process Engineering
  • Suggested Reading
  • .NET Dev and Arch Collection
  • SEI Essays on SA
  • Software Architecture
  • Bredemeyer
  • wwisa
  • Product Line Engineering
  • PLEES
  • Software Product Lines
  • MSDN Architecture Center
  • patterns & practices






Wednesday, February 28, 2007

Tagged

Crap. I guess I am busted for not reading thoroughly enough. I read Arnon's Tagged blog a few weeks ago, but didn't notice my name. Hits from his site made me curious to see why they were coming in.

Well any way, here are the 5 things you don't know about me.

1. I did my first programming on a Commodore 64 Home computer. It had 64KB of memory and ran BASIC 2.0. I added, subtracted, multiplied, and was amazed.

2. I started my career as an Electronic Engineer. I got into programming Web Applications as a favor to someone using Claris on a Performa Mac with no internet connection. I distributed the Web Apps on a disk that also contained IE 1.0. I called them Web Bombs. I still think MACs are far superior to PCs, although I don't own one.

3. I am in love with a Lady that loves to travel. We take 2 trips a year. We have been to England, San Fran. CA, Las Vegas, Reno, Dominican Republic several times, Curacao, Alaska, Hawaii, Belize, Colorado, and on several cruises.

4. As a child I had a collection of magnifying glasses, that I termed "Ant Burners".

5. Technology books relax me. It's like reading the way life is suppose to be. I read programming books on vacation. Once on a cruise some guys with a singles group said, "Is that loser reading a programming book?". It was Deitel's C# book. I just thought to myself, "Well, I am the only guy on this deck with a beautiful lady by my side."

Here are the 5 that are it:
Thomas Beck, Philippe Truche, Chris Allwein, Adam Nathan, Steve Cook

posted by tadanderson at 12:26 PM 0 comments

Programming WCF Services Book Source Code

Because Oreilly has been slow to post the source code for the book Programming WCF Services, I have made it available from here.

posted by tadanderson at 5:03 AM 0 comments

Tuesday, February 27, 2007

Programming WCF Services

As always Juval has delivered excellence!!! This is a great book on WCF. The material in the book is unique in that it addresses the real world reasons for using WCF in the way Juval recommends. He gives information in this book that you are not going to find elsewhere.

The book is full of code that can be referenced and used as helper classes in your own code. The coding example explanations are very thorough.

The book covers using WCF in a Service Oriented fashion. It includes an appendix on coding service oriented applications giving the benefits, tenets and principles, practical principles, and optional principles. This is not "Service Oriented Architecture", it is "Service-Orientation".

In this book Juval takes us to the next level of programming. Object-Orientation -> Component-Orientation -> Service-Orientation.

If you are a .NET Architect or .NET Developer who is going to move on to .NET 3.0, you must read this book.

All the code from the book is available for download from the IDesign web site or in a single file here.

Get the book here.

posted by tadanderson at 6:40 AM 1 comments

Thursday, February 22, 2007

New Microsoft Visual Studio 2005 Team Foundation Server Power Tools

This latest release of the Microsoft Visual Studio 2005 Team Foundation Server Power Tools contains:

Workspace Command (tfpt.exe) - Use the workspace command for additional workspace operations not supported in the currently shipping Team Foundation Server command line (tf.exe).
Treeclean Command (tfpt.exe) - Use the treeclean command to see and optionally delete files in the current directory and all subdirectories that are not under version control.
Team System Process Editor - A tool integrated with Visual Studio that provides a convenient method of viewing and customizing process templates. When connected to Team Foundation Server, you can use this tool to customize work item type definitions and global lists on an active project.
Check-in Policy Pack - A set of handy check-in policies to address needs customers have expressed.
Build Test Tools Task - A tool that allows running unit tests by simply specifying the DLLs, or by specifying a file name pattern in TfsBuild.proj, instead of using .vsmdi files to specify tests to run.

Get them here.

posted by tadanderson at 8:14 AM 0 comments

Wednesday, February 21, 2007

Pro WF: Windows Workflow in .NET 3.0 and Pro WCF: Practical Microsoft SOA Implementation Reviews

These two books are definitely worth getting.

Pro WF: Windows Workflow in .NET 3.0
This is the first book out that shows you how to use the WF tools that are provided by Microsoft in Visual Studio Team System (VSTS) 2005.

The thing I like most about this book is that it is not just a tutorial book, it covers real world scenarios.

Every chapter is very thorough and each chapter builds on the previous chapter. I have listed them below.

A Quick Tour of Windows Workflow Foundation
Foundation Overview
Activities
Hosting the Workflow Runtime
Flow Control
Local Services
Event-Driven Activities
Workflow Persistence
State Machine Workflows
Transactions and Compensation
Workflow Rules
Exception and Error Handling
Dynamic Workflow Updates
Workflow Tracking
Web Services and ASP.NET
Workflow Serialization and Markup
Hosting the Workflow Designers

Get it here.

Pro WCF: Practical Microsoft SOA Implementation
This book covers everything WCF. I could have done without the SOA introduction, only because I have heard it so many times before. That being said, it is a good introduction to SOA.

The book goes on to cover all the ins and outs of WCF. The book covers the WCF programming model, queue management, reliable messaging, transactions, and security. It covers each topic very thoroughly.

It is written in a very readable format and is definitely worth adding to your library.

Get it here.

posted by tadanderson at 9:58 AM 0 comments

Sunday, February 18, 2007

Software Process News: EssUP (Essential Unified Process) and PLE (Product Line Engineering)

Two processes to keep an eye on in the upcoming months are the EssUP (Essential Unified Process) and PLE (Product Line Engineering).

EssUP (Essential Unified Process)
The EssUP is scheduled to be released for use in Team Foundation Server (TFS) in the next couple of weeks, if everything stays on schedule. This first release is suppose to consist of the practices along with templates and capabilities, and it will running in Visual Studio Team System 2005 (VSTS 2005)connected to Team Foundation Server.

The EssUP will provide a new option for those projects that need a light or medium level ceremony. It will provide a path for those projects that need to be agile in nature.

The current practices in the EssUP are:
Process Essentials
Product Essentials
Use-Case Essentials
Component Essentials
Iterative Essentials
Architecture Essentials
Team Essentials
Model Essentials

Here is a paper on the EssUP which covers all the practices in detail.

Framework for Software Product Line Practice
The Framework for Software Product Line Practice, Version 4.2 is being upgrade to version 5.0 some time this spring. This will include upgrades to the content of the framework as well as the additions of new patterns and some changes to the current ones.

The Framework for Software Product Line Practice, Version 4.2 is available on line here.

The a list of the patterns are also available here.

To read about the patterns you must buy the book Software Product Lines: Practices and Patterns, by Paul Clements and Linda Northrop.

The changes that are coming will include a second edition of the book Software Product Lines: Practices and Patterns.

Product Line Engineering Links:
Process Ladder
STATIC MODELING IN PRODUCT LINE ENGINEERING
USE CASE MODELING IN PRODUCT LINE ENGINEERING
FEATURE MODELING IN PRODUCT LINE ENGINEERING

posted by tadanderson at 3:38 PM 0 comments

Saturday, February 17, 2007

New Microsoft Patterns & Practices Performance Testing Guidance Site

VSTS 2005 provides some very nice testing functionality. The Microsoft Patterns and Practices team has set up a new site on CodePlex that provides guidance and techniques for performance testing with Visual Studio Team System 2005.

The how tos section includes:
Performance Testing
Capacity
Load Testing
Stress Testing
Test Cases/Scripting
Troubleshooting
Tuning
Workload Modeling

Check it out HERE.

posted by tadanderson at 8:59 AM 0 comments

Friday, February 16, 2007

.NET Framework 3.0 training kit for WorkFlow Foundation (WF), Windows Communication Foundation (WCF) and CardSpace

This .NET Framework 3.0 training kit for WorkFlow Foundation (WF), Windows Communication Foundation (WCF), and CardSpace includes a set of hands-on-labs, demos, and presentations.

It has 13 presentations, 10 labs, and 16 Demos in it.

Get it here

posted by tadanderson at 8:37 PM 0 comments

Thursday, February 15, 2007

Enterprise Library 2.0 Test Guide

This is a pretty thorough guide. This would have come in pretty handy in the past when I wrote some Enterprise Library Extensions. It is worth checking out.

From the MSDN Site:
Enterprise Library Test Guide provides guidance to testers and programmers who have extended or modified an Enterprise Library component and who want to apply functional testing techniques to their work.

This guide provides detailed description for performing functional tests on Enterprise Library components. Functional tests include design reviews, code reviews, and automated testing. The guide also describes how to test the components to determine whether they follow globalization and security best practices in addition to meeting performance and scalability requirements.

Check it out here.

posted by tadanderson at 1:57 PM 0 comments

Wednesday, February 14, 2007

UML STATIC MODELING IN PRODUCT LINE ENGINEERING (PLE) with SPARX EA

In my previous blogs I discussed Use Case Modeling and Feature Modeling in Product Line Engineering. This blog contains an introduction to PLE Static Modeling. This is only a brief introduction and as I said in my first blog, I highly recommend buying the book by Hassan Gomaa listed in the references.

Sparx EA TemplateI have built a template in Sparx EA that I re-use on each PLE project also. It has all the stereotypes the three blogs will discuss built into it. I hope you find it useful. You can get it here.

References
Designing Software Product Lines with UML: From Use Cases to Pattern-based Software Architectures By Hassan Gomaa. ISBN: 0201775956; Published: Jul 7, 2004; Copyright 2005.

Overview
As we move into the design of the individual modules we will be defining stereotypes that begin to take on the context of our application's domain. For example we may have stereotypes that build the context for our mobile device's components.

One of the hindrances we are going to have it that in UML 1.4 multiple stereotypes became supported. Sparx EA however does not support them. Product line engineering requires dual stereotypes be applied to classes. One represents its reuse categorization and the other represents its application role. We will be grouping the two stereotypes together and separating them by :: in Sparx EA. For example:



Static Modeling Guidelines
As mentioned above this document will not specify the actual stereotypes that will be used during the design of the product's components/modules until that phase of the project begins. This will be considered a living document that will need to be updated at that time. The application domain will determine the application specific parts of the stereotypes to be used. The following section outlines the Software Product Line Class Categories to be used.

Software Product Line Class Categorization
An abstract or parameterized class can be source of variability. A class that defines a variation point has vp in name of stereotype.

Top Level Product Line Class Categorization
• <> Kernel class
- Provided by every member of the Product Line (SPL)
- Used without change

• <> Optional class
- Provided by some members of the Product Line
- When used, it is used without change

• <> Variant class
- One of a set of similar classes provided by SPL
- Some identical properties, others are different

• <> Default class
- Default class among set of variant SPL classes

Abstract class reuse categories
• <> abstract kernel class
- Provided by every member of the family
- Abstract class provides standard interface for its subclasses
- SPL variability introduced through specialization

• <> abstract optional class
- Provided by some members of the Product Line
- Abstract class provides standard interface for subclasses

Parameterized class reuse categories
• <> parameterized kernel class
- Provided by every member of the family
- Configuration parameters need to be set by SPL member
- SPL variability introduced through parameterization

• <> parameterized optional class
- Provided by some members of the Product Line
- Configuration parameters need to be set by SPL member

• <<>> parameterized variant class
- One of a set of variant classes provided by SPL
- Configuration parameters need to be set by SPL member

• <> parameterized default class
- Default class among set of variant SPL classes
- Configuration parameters need to be set by SPL member

Concrete class reuse categories
• <> concrete kernel class

- Provided by every member of the family
- Class provides a standard interface for its subclasses
- SPL variability introduced through specialization

• <> concrete optional class
- Provided by some members of the Product Line
- Class provides a standard interface for its subclasses

• <<>> concrete variant class
- One of a set of variant classes provided by SPL
- SPL variability introduced through specialization

UML Stereotypes

Static Modeling Stereotypes
These are added as the Elaboration Phase and Construction Phase take place. You will need to define these as the project continues. These will be a result of application domain specific stereotypes that are defined combined with the above Software Product Line Class Categories.

posted by tadanderson at 9:22 AM 0 comments

Sunday, February 11, 2007

DinnerNow.NET- WWF, WPF, WCF, CardSpace, IIS7, .NET CF, ASP.NET AJAX, Linq

If you are into the following technologies:

.NET Compact Framework
ASP.NET Ajax Extensions
Linq
Windows Communication Foundation
Windows Workflow Foundation
Windows Presentation Foundation
Windows CardSpace
Windows Powershell
IIS7

The DinnerNow.NET sample app looks like it would be worth looking into. In this blog David Aiken talks about how they tried to simplify the installation process.

I wish I could give you first hand feedback on its install, but I am not interested in CardSpace, I have a minimal interest in AJAX (one more of necessity than desire), I don't have IIS7 running, and would not want to install the sample on my mobile device, so I won't be installing it.

I would install it and check it out if your situation warrants building an application with an architecture that calls for the above technologies. It looks like they did a very good job on this sample app.

posted by tadanderson at 10:14 AM 0 comments

Wednesday, February 07, 2007

FEATURE MODELING IN PRODUCT LINE ENGINEERING with SPARX EA

In my previous blog I discussed Use Case Modeling in Product Line Engineering. This blog contains an introduction to PLE feature modeling. This is only a brief introduction and as I said in my first blog, I highly recommend buying the book by Hassan Gomaa listed in the references.

Sparx EA Template
I have built a template in Sparx EA that I re-use on each PLE project also. It has all the stereotypes the three blogs will discuss built into it. I hope you find it useful. You can get it here.

References
Designing Software Product Lines with UML: From Use Cases to Pattern-based Software Architectures By Hassan Gomaa. ISBN: 0201775956; Published: Jul 7, 2004; Copyright 2005.

Overview
Use cases for product line engineering are the staring point for the feature modeling and analysis process. The purpose of the use cases are to capture the functional requirements and to get a clear understanding of them. The goal of feature analysis is to enable reuse.

Use cases should be grouped into use case packages. The use case packages will usually map one to one into Feature Packages. According to the author whose stereotypes we are using the packages are called feature groups. When we use the terms use case package and feature packages, we are referring to the same thing. It may not always be true that a use case package maps directly to a feature group, therefore each package must be reviewed and categorized during Feature Analysis. The feature package can include several use cases and those use cases each contain several features, however, one use case may contain several feature packages which contain several features. Use cases and features have a many to many relationship.

General Feature Modeling Guidelines

Features have five categories.





Features Categories
Features are categorized as

Default features
• Coincide with Alternative features. A default feature is the feature implemented if an alternative feature is not selected.

Common features
• Provided by all members of product line

Optional features
• Provided by some members of product line

Alternative features
• Choice of features
• One of the alternatives may be a default

Parameterized feature
• Defines a product line parameter
• Type, permitted values, default value

Feature Groups (Packages)
A feature group is a group of features with a particular constraint on their usage in a product line member








Types of feature groups:

Mutually exclusive features

Zero or One out of a group of features

Exactly one of a group of features
One and only one out of a group of features

One or more of a group of features
One or more out of a group of features

Mutually inclusive
If one feature is picked, the other must be picked

How to Describe a Feature
Features will be modeled as well as described in a textual format in the Software Requirements Specification. There are two different industry standard ways to record features and requirements in a textual format. One way is too record the goals of the system, the features of the system, and the system requirements needed to implement the features. The other way, which is the way Gomaa (see references) does it, is to use feature packages and features, where features and requirements mean the same thing. In order to abstract the requirements into groups he uses feature groups, which we will also be doing.

The main goal of this document is to provide guidelines on the modeling the features. Below in the UML Stereotypes section, there are samples descriptions for modeling.

UML Stereotypes

Feature Stereotypes
• «common feature» Feature Name {prerequisite = P} {mutually includes= Feature Name}
Example: «common feature» Factory Kernel
Example: «optional feature» Clock {prerequisite=Multi-line Display}

• « optional feature» Feature Name {prerequisite = P} {mutually includes= Feature Name}
Example: «optional feature» Light, «optional feature» Beeper {mutually includes= Speaker System}

• «alternative feature» Feature Name {prerequisite = P} {mutually includes= Feature Name}
Example: «alternative feature» French, «alternative feature» Spanish

• «default feature» Feature Name {prerequisite = P} {mutually includes= Feature Name}
Example: «default feature» English

• « parameterized feature» Feature Name {type, permitted value, default value}
Example: «parameterized feature» ATM Password Length {type = integer, permitted value = 4..8, default value = 4}

Feature Group Stereotypes

Mutually exclusive features
«zero-or-one-of feature group» Feature Group Name {Alternative = A1...An, Prerequisite = P}
Example: «zero-or-one-of feature group» Roof Rack {alternative = Basic Rack, Ski Rack, Bicycle Rack}

Must select one feature
- «exactly-one-of feature group» Feature Group Name {default = D, alternative = A1...An, prerequisite = P}
Example: «exactly-one-of feature group» Display Unit {default = One-line Display, alternative = Multi-line Display}

Can select one or more features
- «at-least-one-of feature group» Feature Group Name {default = D, feature = O1, ..., On, prerequisite = P}
Example: «at-least-one-of feature group» Hotel Reservations {default =
Single Booking Reservations, feature = Block Tourist Reservations, Block Conference Reservations}

A group of optional features depend on another optional feature
- «zero-or-more-of feature group» Feature Group Name {feature = First Optional Feature Name, ..., Nth Optional Feature Name, prerequisite = Prerequisite Feature Name}
Example: «zero-or-more-of feature group» Automated Drive Control {feature = Cruise Control, Automatic Traction, prerequisite = Automatic Transmission}

posted by tadanderson at 5:08 PM 0 comments

Monday, February 05, 2007

VSTS (Visual Studio Team System) 2005 SP1 IIS VSS Error in abstractionlayerdispatcher.cpp

In this blog I summarize my thoughts on the VSTS 2005 SP1. Which in the end I have had nothing but issues with.

Another issue is:
"Unexpected error encountered. It is recommended that you restart the application as soon as possible.".
- Error : unspecified error
- File : vsee\pkgs\vssprovider\abstractionlayerdispatcher.cpp
- Line number : 4701.

After installing the service pack, VSS bindings to sites in IIS do not work. You get the above error. I have had to change all mine to work through the file system, which is aggravating in debug, because you have to manually attach to IIS every time.

I can't run the VS web site because of ports changing, and this is a smart client app.

It appears that this was happening to others prior to the SP1 upgrade.
See this and this
But it was not happen to us until we did the upgrade

posted by tadanderson at 7:44 AM 0 comments

Previous Posts

  • DevOps: A Software Architect's Perspective Book Re...
  • Scaled Agile Framework (SAFe) LiveLessons Video Se...
  • Bulletproof Android: Practical Advice for Building...
  • Swift for Programmers Book Review
  • Security in Computing (5th Edition) Book Review
  • Swift in 24 Hours, Sams Teach Yourself Book Review
  • Sparx Systems Releases Enterprise Architect 12
  • Learning Swift Programming Book Review
  • Android Security Internals: An In-Depth Guide to A...
  • Adaptive Code via C#: Agile coding with design pat...



Archives

  • December 2005
  • January 2006
  • February 2006
  • March 2006
  • April 2006
  • June 2006
  • August 2006
  • October 2006
  • November 2006
  • December 2006
  • January 2007
  • February 2007
  • March 2007
  • April 2007
  • May 2007
  • June 2007
  • July 2007
  • August 2007
  • September 2007
  • October 2007
  • November 2007
  • December 2007
  • January 2008
  • February 2008
  • March 2008
  • April 2008
  • May 2008
  • June 2008
  • July 2008
  • August 2008
  • September 2008
  • October 2008
  • December 2008
  • January 2009
  • February 2009
  • March 2009
  • April 2009
  • May 2009
  • June 2009
  • July 2009
  • August 2009
  • September 2009
  • October 2009
  • November 2009
  • December 2009
  • January 2010
  • February 2010
  • March 2010
  • April 2010
  • May 2010
  • June 2010
  • August 2010
  • September 2010
  • October 2010
  • November 2010
  • December 2010
  • January 2011
  • February 2011
  • March 2011
  • April 2011
  • May 2011
  • June 2011
  • July 2011
  • August 2011
  • September 2011
  • October 2011
  • November 2011
  • December 2011
  • January 2012
  • February 2012
  • March 2012
  • April 2012
  • May 2012
  • June 2012
  • July 2012
  • August 2012
  • September 2012
  • October 2012
  • November 2012
  • December 2012
  • January 2013
  • February 2013
  • March 2013
  • April 2013
  • May 2013
  • June 2013
  • July 2013
  • August 2013
  • September 2013
  • October 2013
  • November 2013
  • December 2013
  • January 2014
  • February 2014
  • March 2014
  • April 2014
  • May 2014
  • June 2014
  • July 2014
  • August 2014
  • September 2014
  • October 2014
  • December 2014
  • February 2015
  • March 2015
  • April 2015
  • June 2015
  • July 2015
  • September 2015

Powered by Blogger