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






Saturday, January 28, 2006

Visual Studio 2005 C# Code Snippets

The initial Code Snippets that installed by default with VSTS 2005 included a much larger library of code snippets for the Visual Basic.NET than it did the C# developer. A nice size library for C# developers is now available here.

It includes the following:
-Application Code Snippets
-Collections and Arrays Code Snippets
-Connectivity Code Snippets
-Crystal Reports Code Snippets
-Database Code Snippets
-Datatypes Code Snippets
-File System Code Snippets
-Math Code Snippets
-Operating System Code Snippets
-Security Code Snippets
-Smart Devices Code Snippets
-Windows Forms Code Snippets
-XML Code Snippets

They have also posted the Refactoring Code Snippets so you can rebuild them if you end up trashing them.

posted by tadanderson at 9:00 PM 0 comments

Friday, January 27, 2006

Smart Client Baseline Architecture Toolkit

The Smart Client Baseline Architecture Toolkit is worth taking a look at.

Although they are just getting started with this, it has the potential of being a really good learning tool and is worth taking a look at now, and following it as the team builds onto it.

From the Toolkit's Documentation overview:
The Smart Client Baseline Architecture Toolkit provides a range of tools that offer many benefits for architects and developers of smart client applications and components. It is an integrated collection of tools, patterns, source code, and prescriptive instructions that guide developers throughout the development process.

Typically, architects and developers identify and discover the best practices and patterns in a new domain during application development. As patterns and practices are discovered, the applications must be refactored to maintain consistency. When communication between development teams is low, each team incurs the cost of discovering and refactoring. Even then, different applications often embody different standards and practices. Alternatively, development teams can investigate and attempt to identify best practices and patterns before starting a development project in a new domain. This can be a time consuming and difficult activity, as patterns and practices are most easily identified during actual application development.

With the VS Guidance Package for Smart Client Development, architects and developers can quickly incorporate many of the best practices and patterns of smart client development. These practices and patterns were identified during the development of many smart client applications and components.

The guidance package allows architects and developers to focus their efforts on the business problems at hand and to create smart client applications that effectively address those problems.

posted by tadanderson at 4:41 PM 0 comments

Wednesday, January 25, 2006

Essential Unified Process (essUP) and MSF

I have been hearing a lot about the Essential Unified Process (essUP).
A few links to the chatter: SD Times and eweek articles.

Ivar Jacobson's Introduction to essUP can be found here.

So far I have not seen anything that makes it different from the original Unified Process, but it is definitely something to keep an eye on. The Unified Process has been the heart beat of successful processes for years now.

According to the SD Times article (link above) we can expect to see something the end of this quarter or the beginning of the next.

I am glad to hear this will be coming out built into the MSF framework that allows it to be tied into VSTS 2005. The process frameworks presented by Microsoft so far have not impressed me, as I stated here.

One thing that has me puzzled though is Ivar states the essUP will include a subset of the UML language for use with essUP. I wonder, will Microsoft step up and provide some UML modeling tools to support this subset that are integrated into VSTS 2005, or will we be left with Visio or a third party tool?

Hopefully Microsoft will also step into putting together an MSF framework for product line engineering. Especially since it is the core of their new Software Factories movement.

posted by tadanderson at 12:49 PM 0 comments

Tuesday, January 24, 2006

Enterprise Library for .NET Framework 2.0

Enterprise Library, the collection of reusable and extensible application blocks for enterprise development, has been improved and updated specifically for Visual Studio 2005 and the .NET Framework 2.0 (January 2006)
Get it here: Just Released: Enterprise Library for .NET Framework 2.0
I just got this installed and the team has done a great job from what I have got to play with so far.
The Quickstart Applications and the documentation look great. They have really been busy. Hats off to the team that put this together.

posted by tadanderson at 8:21 PM 0 comments

Windows Vista Developer Stories

This is a nice Vista Features overview for developers. Every 2 weeks they update it.

posted by tadanderson at 3:04 AM 0 comments

Monday, January 23, 2006

The Industrialization of Software: A very interesting Blog

Check out this blog (The Industrialization of Software) for some very interesting insight into the world of Software Development:

http://softwareindustrialization.com

It is a blog dedicated to the advancement of software industrialization.

posted by tadanderson at 12:43 PM 1 comments

Sunday, January 22, 2006

UML in VSTS 2005 provided by Sparx EA

One of the problems I have found in VSTS 2005 is the lack of modeling tools for the Software Architect. Jack Greenfield addressed and answered my concerns here. He also said MS is working on some addressing some of the issues. I responded to him here.

I needed something today to allow me to continue doing my job which currently is implementing a product line engineering process. I am using UML on this project. In case you are interested, here is a list of the tools we are evaluating from MS and their status. I answered Steve Cook's question as to what UML I would like to see supported by MS here.

XDE was out because it is not supported in VSTS 2005. Since no improvements have been made to Visio's UML features for so long, and there are no plans to improve it, Visio was out. We ended up going with Sparx EA because of the price.

So far, no complaints. I have put together a baseline project structure for our core assets and on for our product development. There was one small glitch with the importing the .eap file into a SQL 2000 repository. But that was fixed by simply removing a foreign key constraint from the Sparx database Schema. I also set up a repository in SQL Server 2005 and that is working fine too. We are just about to start all the dirty work of creating all the assets. In a few weeks I will follow up and let you know how the tool is working.

One side note. The Visio XMI export tool found for download here, turned out to generate a useless export. I posted to the MS Modeling and Tools forum to see if anyone has had luck with it here, but no luck so far. I was hoping to be able to move some of the work done in Visio over to EA, but no luck. We will have to reproduce it all.

posted by tadanderson at 5:31 AM 0 comments

Wednesday, January 18, 2006

Is the .NET Show Dead????

This same show has been up since the beginning of November. Are they out of business????

posted by tadanderson at 8:35 AM 0 comments

May Rational R.I.P.

I would like to take a moment to say good-bye to Rational. Although IBM acquired them a while ago, It occurred to me today when I received their latest news letter that I have found nothing of value in them for months now.

I am not saying IBM doesn't make very valuable contributions to the software community, and I expect that to continue. But like Microsoft and Sun the contributions will come within the context of those contributions being tainted and being of valuable to the advancement of IBM. Which isn't bad at all, especially if you use their products. There will be some contributions that are not tainted as there will be some from the other giants in the industry. However, Rational was one of the places I would go for an untainted view of best practices for architecture and development advice. XDE was a great tool and I will miss it a lot.

Developing in .NET is great, and I hope MS pulls through with there promise to deliver industry standard integrated advice to the Software Architects. They openly admit we were ignored in the initial releases of VSTS 2005. My primary resource for advice will remain SEI and independent authors. I am so glad they are around and are doing what they are doing. Without them I would be lost. You will notice I don't believe in pretending to invent new wheels, I search out proven wheels that work, and use them.

Nothing new has been done in our industry for years, we have just twisted things a little, renamed them a little, restructure them a little, and re-released them. Yeah, more classes have been added to libraries, new ways of distributing the compiled code have come into play, SOA and ESB have been a silly movement I see as silly as the .com boom days, Software Factories are around the corner, more pattern catalogs are being produced, but they are all built on the genius of our predecessors. Software Engineering is even debated about being a reality or fantasy, for what reason? Because all these rapid changes to the same core building blocks leave peoples heads spinning wondering what they are doing and with what. You need to dig so deep through all the fluff before hitting solid ground, it's practically impossible to get there.

A philosophical debate about all this stuff is a waste of time. What works today across the industry for the needs of the industries customers is all that matters. It only works, if it has worked repeatedly and can be considered institutionalized. At the rate MS, IBM, Sun, etc. dump stuff out their doors, nothing from them has a chance to get institutionalized. Luckily organizations like SEI are pulling the best out of all these releases and putting together the best practices that have a chance to get institutionalized. That is also what Rational once did.

Again, good-bye Rational… it was nice having you around in the days before you where swallowed into the belly of the great IBM whale…

P.S. May Allaire R.I.P. also….

posted by tadanderson at 7:13 AM 0 comments

Monday, January 16, 2006

Architect Site with some cool info...

This site has a lot of cool info on it...

http://www.rgoarchitects.com

posted by tadanderson at 12:31 PM 0 comments

Wednesday, January 11, 2006

Why must Microsoft confuse us with renaming industry accepted standards?

I think it is great Microsoft recognizes the value in Quality Attributes, but why in the heck rename them?

We now have Quality Attributes from SEI, Non-functional requirements from the Unified Process and the RUP, and Perspectives which is used in this book which is based on the IEEE Std 1471, which is a great book by the way.

And now 'Quality of Service Requirement' from Microsoft.

posted by tadanderson at 7:56 AM 0 comments

Sunday, January 08, 2006

Microsoft Certifications and Getting a .NET Architect Education

I am often asked how I learn what I learn, and why I refuse to get certifications. I refuse because I suck at memorization. I have to learn theory and apply it. On all my gigs people notice the load of books I carry in. They are my brain in a bag.

I don't look down on those that value certifications, and I pity those that are forced by there companies to get them so they can qualify for partnership programs. But I simply will not bother with Microsoft certifications. I would take them if a company wanted me to in order to qualify them for a project, but I would force them to pay for them and pay me for the time I spend getting it done.

I was recently handed a resume with certification logos all over it. I told the PM that was a red flag, and I would need to grill the guy even harder because of them. He thought I was joking. But the company wants him on board for the Certs so they can qualify for a higher Microsoft Partnership status. That is fine, but looking through his real world experience, he was not impressive. Having certifications don't count in my book as anything except for great memorization skills. I need more skills than that.

There are some credentials programs that I hold in high regard. The SEI certificate programs are much more that an exercise of memorization.
http://www.sei.cmu.edu/activities/credentials/programs.html

I may be bias because I learn everything from books, seminars/webcasts, the web, and hands on doing. I have been asked what books I read to keep up. I thought it would be easier to share a few pictures of my office than list them all. I didn't bother going to the attic where I keep the archived ones.

http://www.corporatewebbing.com/RWSA/Library.htm


*** I have posted this in the Microsoft Architecture forum and on my .NET Journal Blog site. Those sites are getting feedback that may interest you. I also have a poll on the .NET Journal Blog site on this topic I would appreciate you taking.

These are the links:
Microsoft Architecture forum
.NET Journal Blog site

posted by tadanderson at 11:45 AM 0 comments

Saturday, January 07, 2006

.NET 2.0, Patterns, Architecture, OOAD, Books and Links

Every project process repository I put together includes a resource of links and books to help educate the team on parts of the process they may need to learn.

Here is the lastest set of books I compiled: http://www.corporatewebbing.com/rwsa/Architecture.htm

Here is the latest set of links I compiled:
http://www.corporatewebbing.com/rwsa/links.htm

posted by tadanderson at 7:32 AM 0 comments

Friday, January 06, 2006

Steve Cook asked-- Tad, which parts of UML do you think we should implement?

I answered which parts of UML do you think we (Microsoft) should implement?

Here- http://realworldsa.dotnetdevelopersjournal.com/umltoolsfromms.htm

posted by tadanderson at 9:29 PM 0 comments

Wednesday, January 04, 2006

Dependency Injection, Generics, Enterprise Library 2.0, Composite UI Application Block, and the ObjectBuilder Framework

The Composite UI Application Block and the Enterprise Library 2.0 use Generics extensively and introduce dependency injection through the P&P ObjectBuilder framework.

If you plan on using the Composite UI Application Block or the Enterprise Library 2.0, you need to understand dependency injection and Generics.

Both dependency injection and Generics are well worth investigating. Understanding both topics can help you improve you own designs. After getting a better understand of both topics with the resources below, I suggest investigating the Composite UI Application Block and the Enterprise Library 2.0. They have proven to be the best resource I have found for getting a thorough understand of applying dependency injection and Generics in production level code.

Links to both the Composite UI Application Block and the Enterprise Library 2.0. can be found here:
http://www.corporatewebbing.com/rwsa/links.htm

Information on Generics can be found here:
http://msdn2.microsoft.com/en-us/library/512aeb7t.aspx
http://research.microsoft.com/projects/clrgen/
http://www.amazon.com/gp/product/0764559885/104-9495318-2199144?v=glance&n=283155

A great summary on dependency injection can be found here: http://www.martinfowler.com/articles/injection.html

The ObjectBuilder- A little more info...
The ObjectBuilder framework is used to create and inject instances of objects of the appropriate type into the application at runtime.

The following summary comes from the Composite UI Application Block help file:

ObjectBuilder Architecture
ObjectBuilder uses a pipeline of strategies that allows multiple operations to take place as objects are instantiated and prepared for use. This allows you to control the order that the processes take place. It also supports controlled disposal of object instances by executing the appropriate pipeline processes in the reverse order.

ObjectBuilder strategies manage the processes performed on objects during construction and disposal. The ObjectBuilder pipeline is organized into stages, and each stage of the pipeline contains multiple strategies. You can implement your own strategies as a .NET class with a specific interface.

Design of ObjectBuilder
The construction and disposal of object instances is a common process in most applications, and particularly in business applications such as those built using the Composite UI Application Block and the Enterprise Library. For this reason, these blocks take advantage of an underlying sub-system called ObjectBuilder that performs all of the repetitive and necessary tasks for creating object instances, while still providing a high level of flexibility.

ObjectBuilder encapsulates features that simplify the creation of object instances. It can:

  • Ensure the creation of specific concrete class instances, even when requests are for abstract types.
  • Ensure the return of existing object instances when this is appropriate, or always generate new instances.
  • Create the appropriate objects based on configuration data.
    Intelligently select the appropriate constructor when a class exposes more than one constructor.
  • Automatically apply values to public properties that contain attributes, and execute methods on the object, in response to pre-defined policies.
  • Respond to attributes declared on the properties and methods, which influence the creation and naming of the new object.
  • Communicate automatically with objects that support the IBuilderAware interface to indicate, for example, that object creation is complete.
  • Provide a tear down facility that can remove settings from existing objects by reversing the chain of operations.

ObjectBuilder is a low-level utility that, in most cases, you will not interact with directly in your applications. The classes in the application blocks use it to generate object instances in response to your code creating the classes declared within the application blocks.
However, you can use the features of ObjectBuilder directly in your applications and your own frameworks if you wish. You can also influence the behavior of ObjectBuilder by creating your own strategies or modifying the existing strategies.

Copyright © 2005 by Microsoft Corporation. All rights reserved.

posted by tadanderson at 5:19 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