The World’s Leading Microsoft .NET Magazine
   
 
realworldsa


Search this Blog

 








iPing-it!

---------------

---------------

Latest Entries

Who taught me to think like a Software Architect?

Friday, 13 June 2008 8:15 P GMT-05
I went to school for Electronic Engineering and while I was there I worked a job in logistics.  When I worked there I learned that warehouse hubs looked a lot like electronic components when viewed on a schematic.  They all had properties that effected the flow and the storage of goods, much like electric current and its relationship to the components of electronic circuits.
 
But that is not how I learned to think like an architect.
 
After college I worked in the electronic engineering field for several years.  I learned quickly that engineering is 80% planning and doing paperwork, 15% testing, and only 5% fun (building stuff).  This is where I learned to accept engineering could be gruelingly boring.
 
But that is not where I learned to think like an architect.
 
I have read almost every book and paper available on architecture, OOAD, and the languages I program with, but they are also not where I learned to think like an architect.
 
I have had the pleasure of working with some brilliant people, who have taught me a lot, but not how to think like an architect.
 
When I was a kid I had the pleasure of working as a carpenter's helper.  I got the glory jobs of lugging bricks to the brick layers, hauling  the truck loads of wood that were dropped in a huge pile to the builders, tarring the foundations, insulating the attics in well above 100% temperatures, cleaning up and burning the garbage, and hauling wet cement in wheelbarrows all over the place.
 
I also got to do some of the fun stuff like framing and roofing.  My boss was a perfectionist in the extreme and it was rare when we had teammates that could live up to his expectations.  It was even rarer if I did.  I watched him disassemble whole walls that I had built slightly off the mark. 
 
One day when hauling plywood (2 or 3 pieces at a time) for the roof to the second floor of a house, he yelled out, what are you doing, that will take all day, just throw it up?!?!?   The second floor was framed, so I would have to throw it through it between studs.  He came down to show me how, and he threw 3 or 4 pieces up and they landed right on top of each other.  I attempted it about 4 or 5 times smashing them into the studs every time.  Eventually he just had me hand them up to him through the wall, 2 at a time of course.
 
This builder was amazing.  In his later years he built houses on his own.  People would setup chairs to watch him set roof trusses by himself.
 
This is where I learned to think like an architect.  Not only from being on the job site, but from watching him off the job site as well.  Everything he did he planned for.  He drew up an architecture for everything he did.  From his daughters play house, to pool out back, to the horse barn he built, and ever house he built.  I was always amazed at how the different architectural views to his homes fit together to explain the architecture as a whole.
 
His planning and experience allowed for his agility.  On site mini planning sessions would be done drawing out the plan on a piece of 2x4 (wood).  Seeing the finish product was always amazing and satisfying.
 
This builder is my Dad.  After all the books I have read, projects I have been on, schools I have attended, and others I have worked with, what he taught me about work ethic and planning is still at the center of any successes I have had in this field of Software Architecture.
 
Thanks Dad, and Happy Fathers Day!!!!
 
P.S.  At the age of 50, my Dad pulled a Forrest Gump on us and decide to start running.  He has run a ton of marathons, including Boston, over Breckenridge, and in Hawaii.
 

Fixing the Windows SDK is not installed correctly WCF Service Configuration Editor Error

Thursday, 22 May 2008 4:18 P GMT-05
I have seen a lot of posts about the error "Windows SDK is not installed correctly" when trying to open the WCF Service Configuration Editor in Visual Studio 2008.

To fix it... open the Windows SDK Configuration Tool from the start menu.



Then...
1. select the latest version installed
2. select the VS versions you want the SDK applied to.
3. click make current.

Enterprise Library 4.0 for Visual Studio 2008 released!

Saturday, 17 May 2008 9:16 P GMT-05
Microsoft's patterns and practices team has released Enterprise Library 4.0 for Visual Studio 2008.

Enterprise Library 4.0 – May 2008 contains the following application blocks:
Caching Application Block. Developers can use this application block to incorporate a cache in their applications. Pluggable cache providers are supported.
Cryptography Application Block
. Developers can use this application block to incorporate hashing and symmetric encryption in their applications.
Data Access Application Block
. Developers can use this application block to incorporate standard database functionality in their applications.
Exception Handling Application Block
. Developers and policy makers can use this application block to create a consistent strategy for processing exceptions that occur throughout the architectural layers of enterprise applications.
Logging Application Block
. Developers can use this application block to include standard logging functionality in their applications.
Policy Injection Application Block
. Developers can use this application block to implement interception policies that can be used to streamline the implementation of common features, such as logging, caching, exception handling, and validation, across a system.
Security Application Block
. Developers can use this application block to incorporate authorization and security caching functionality in their applications.
Unity Application Block
. Developers can use this application block as a lightweight and extensible dependency injection container with support for constructor, property, and method call injection.
Validation Application Block
. Developers can use this application block to create validation rules for business objects that can be used across different layers of their applications.
Enterprise Library also includes a set of core functions, including configuration, instrumentation, and object creation. These functions are used by all other application blocks.

From the help download:
Enterprise Library 4.0 – May 2008 is a new release of the Microsoft patterns and practices Enterprise Library. Enterprise Library consists of a collection of application blocks and a set of core features such as object generation and configuration mechanisms. All of these are reusable software components designed to assist developers with common enterprise development challenges. This release of the Enterprise Library includes one new application block, the Unity Application Block, which implements a framework that provides object generation and dependency injection capabilities, plus other new features and enhancements.

Benefits of Enterprise Library
Application blocks help address the common problems that developers face from one project to the next. Their design encapsulates the Microsoft recommended best practices for .NET applications; developers can add them to .NET applications quickly and easily. For example, the Data Access Application Block provides access to the most frequently used features of ADO.NET, exposing them through easily used classes. In some cases, application blocks also add related functionality not directly supported by the underlying class libraries.

Goals for Enterprise Library
Enterprise Library is a collection of application blocks and services intended for use by developers who build complex, enterprise-level applications. These applications are typically deployed widely and have interdependencies with other application and systems. In addition, they generally have strict security, reliability, and performance requirements.

The goals of Enterprise Library are the following:
Consistency. All Enterprise Library application blocks feature consistent design patterns and implementation approaches.
Extensibility. All application blocks include defined extensibility points that allow developers to customize the behavior of the application blocks by adding their own code.
Ease of use. Enterprise Library offers numerous usability improvements, including a graphical configuration tool, a simpler installation procedure, and clearer and more complete documentation and samples.
Integration. Enterprise Library application blocks are designed to work well together and are tested to make sure that they do. It is also possible to use the application blocks individually.
This section contains the following topics that will help you to understand this release of Enterprise Library and how you use it alongside earlier versions or migrate your applications to this version.

Get it here.

Living for Hope in Fear of the F Bomb

Friday, 16 May 2008 2:04 P GMT-05
I remember years ago at one of the local consulting gigs I was on they held a weekly developer meeting. At the time, I was there temporarily in transition to another gig. The senior developers that worked for the company conducted random code reviews of the consultant's work. At the time there were about 5 company developers and probably about 7 or 8 consultants. We were working on multiple projects.

The first meeting I attended they started to list off the things they found wrong in the code. On about the 5th item, I asked if they were going to tell where that code was located so we could figure out who had been making the mistakes.

They said it was against their management style to embarrass people. No matter how hard I tried to convince them that if I didn't know I made a mistake, I would not be able to stop doing it, they refused to tell what code they were referring too. Every week they listed the same mistakes over and over again.

The F Bomb I am referring to is Failure. Most environments I have been in, failure is always reported as a perceived success. I find it so hard to comprehend never failing, because then you never get to the really important lessons learned. Sure every project has some degree of lessons learned, but a perceived success will not bring to light the lessons learned that are needed to bring about a success the next time.

The following is from page 42 of the book Emergent Design:

Giving Up Hope

Of course, one reason we have not changed the way we do things is because most of us have assumed the problem is not the process, but ourselves. In other words, we have believed that the reason the waterfall process does not succeed very often is that we are not doing it right.

Software developers have often been thought of as arrogant. I disagree; I think most are very self-questioning and tend to lack confidence. This can sometimes come off as arrogance, but in general, self-assured people don't have to brag.

Lacking any defined standards, software developers have traditionally had no way to determine, for themselves, if they were really good at their jobs. Without any notion of what makes a good developer, we live and die by our latest success or failure. This lack of a set of standards is part of what has kept us from becoming the profession we should be, in my opinion.

So, because we tend to worry that the failures in our projects stem from our own faults, we do not suspect that the problem might be the methodology itself.

Einstein said it: "Insanity is doing the same thing over and over again and expecting a different result."

I think we have been a little bit nuts. Well, maybe not nuts. Maybe just hopeful.

Think back to your high school mythology class and the story of Pandora's Box. Pandora, the myth goes, opened a box and unwittingly released all the evils of the world. The last thing that emerged from the box was hope.

When I was a kid, upon hearing this tale, I thought "Awwwwww. Well, at least we have hope!"

No, no. That is not the point. Instead, the point is that hope is evil.

As long as we hope that this time we will get the requirements right, and stable, then we will keep doing things the way we always have. If we hold out the hope that this time we will be able to write code without bugs, then we'll keep writing it as we always have. The hope that this time we will be on time, be on budget, just be better will keep us from changing what we do.

We give out T-shirts at our courses with cartoons and pithy phrases on them, and by far my favorite shirt says:

"I feel so much better since I gave up hope."



I had left and returned for round two at the company I mentioned above. They were desperately trying to deliver a project that was months overdue and tons over budget. I pitched in and helped out. After a few months of 70 - 75 hour weeks, we delivered.

I came in the next week to an invitation to an all day celebration party. The project was about 9 months late, it was budgeted for 1 million dollars, and the company spent 1.75 million developing it and got paid nothing towards the $750,000 lost. In truth, I came in expecting half of the company team's cubes to be empty, or at least getting to help them carry their belongings out the door. Needless to say the company shrunk from about 160 to about 30 people over the next year as it repeated the same process over and over and over again.

… and so began an insanity I had "hoped" I would see die with the dot-com boom crash. Years later, I have accumulated many more of the same types of stories in my story tool belt. Next week I will add a few more… people seem to love to hope...

Service-Oriented Architectures and Software Product Lines

Wednesday, 14 May 2008 9:24 P GMT-05
SEI has published a new report titled "Proceedings of the First Workshop on Service-Oriented Architectures and Product Lines". It discusses the commonalities and the differences with service-oriented architecture (SOA) and software product line (SPL) approaches.

Overview from SEI site:
This report contains the proceedings of the First Workshop on Service-Oriented Architectures and Product Lines (SOAPL) 2007 that was held on September 10th, 2007 in Kyoto, Japan as part of the 2007 Software Product Line Conference (SPLC 2007). This report includes an overview of the workshop, four invited presentations, details of the workshop's outcomes, and the workshop position papers.

Table of Contents from the Paper
Abstract vii
1 Introduction 1
1.1 About This Report 1
2 Workshop Organization and Format 3
2.1 Workshop Organization 3
2.1.1 Organizers 3
2.1.2 Facilitator 3
2.1.3 Participants 3
2.2 Workshop Format 4
3 Workshop Papers and Presentations 5
3.1 Papers 5
3.2 Presentations 5
3.2.1 Methods for SOA and Product Line Development 5
3.2.2 Managing Service Features and Variability 7
3.2.3 Application Examples 8
4 Additional Discussion Topics 13
4.1 What Are the Possible SOA-PL Connections? 13
4.2 Dynamic Aspects—What Are the Issues? 14
4.3 What Is a Reusable Service? 14
4.4 What Are the Architectural Aspects of SPLs Versus SOA? 15
4.5 What Is the Scope of a System in the Context of Services? 16
5 Workshop Outcomes 17
References 19
Appendix A: Software Product Lines and Service-Oriented Architecture: A Systematic Comparison of Two Concepts A-1
Appendix B: A Taxonomy of Variability in Web Service Flows B-1
Appendix C: Comparison of Service and Software Product Family Modeling C-1
Appendix D: Identifying and Specifying Reusable Services of Service Centric Systems Through Product Line Technology D-1
Appendix E: Product Lines that Supply Other Product Lines: A Service-Oriented Approach E-1

Get the paper here
There are also presentations from the authors of the papers available here

Smart Client Software Factory ( SCSF ) for Visual Studio 2008 Available

Monday, 28 April 2008 8:38 P GMT-05
The Smart Client Software Factory ( SCSF ) for Visual Studio 2008 is now available on the Microsoft downloads site.

Overview from Download Site:
The Smart Client Software Factory provides an integrated set of guidance that assists architects and developers in creating composite smart client applications. The software factory includes: QuickStarts, reference implementations, how-to topics, patterns, and Visual Studio .NET extensions. This release is for Visual Studio 2008.

Get the Smart Client Software Factory – April 2008 for Visual Studio 2008 here.
Get the Smart Client Software Factory – April 2008 Documentation for Visual Studio 2008 here.

Silverlight 2 End-to-End Data Centric Application

Wednesday, 23 April 2008 9:22 P GMT-05
Brad Abrams has put together a really nice post on Silverlight 2. He calls it, End-to-End Data Centric Application with Silverlight 2.

His goals, list at the beginning of his blog, are to show-

Explain the Silverlight Project Format
How to do rich layout and animation
Uses line of business controls for Silverlight such as DataGrid
Has a Linq based data layer on the server on the server
Exposes business logic over that data via a WCF web service
Consume the service on the client in Silverlight and databind to the DataGrid
Store result locally to minimize round trips to the server across instantiations with IsolatedStorage
Re-theme the UI to make it look more cool.
Do it all in code that you could easily write on stage in about 30-45 mins
Have Fun!

Definitely worth checking out, do so here.

Microsoft Operations Framework (MOF) 4.0 Released

Monday, 21 April 2008 10:05 P GMT-05
Brief Description from MSDN Site
MOF 4.0 is practical guidance for IT organizations contained in a set of 23 documents. With this release, MOF now reflects a single, comprehensive IT service lifecycle—it helps IT professionals connect service management principles to everyday IT tasks and activities and ensures alignment between IT and the business.

Overview from MSDN Site
Microsoft Operations Framework (MOF) 4.0 has been designed to help overburdened IT professionals quickly access useful, relevant content. It contains practical guidance—not just theory—and its streamlined approach makes it possible to use either the entire framework or one process from a particular service management function (SMF).

The guidance in MOF encompasses all of the activities, workflow, and processes involved in managing an IT service: its conception, development, operation, maintenance, and—ultimately—its retirement. MOF organizes these activities and processes into service management functions, which are grouped together in phases that reflect the IT service lifecycle. Each SMF is anchored within a lifecycle phase and contains a unique set of goals and outcomes that support the objectives of that phase. An IT service’s readiness to move from one phase to the next is confirmed by management reviews, which ensure that established goals are achieved and that IT’s goals are aligned with those of the organization.

MOF guidance is contained in 23 documents:

The MOF 4.0 Overview describes all of the MOF content and its goals. It is the ideal starting place for someone new to the framework or an executive looking for the big picture.

Four MOF phase overviews have been written primarily for IT managers and directors seeking a better grasp of IT service strategy. The overviews provide an introduction for the phase, describe the service management functions contained within, and detail the management reviews performed during the phase.

Sixteen SMFs contain specific activities and workflows designed primarily for the IT professionals who will be implementing the activities.

A glossary gives definitions of terms used frequently in MOF.

A spreadsheet maps earlier versions of MOF to version 4.0.

Get it here.

Models for Evaluating and Improving Architecture Competence

Monday, 21 April 2008 9:36 P GMT-05
SEI has released a new paper titled Models for Evaluating and Improving Architecture Competence.

Overview from the SEI Download Page
Software architecture competence is the ability of an individual or organization to acquire, use, and sustain the skills and knowledge necessary to carry out software architecture-centric practices. Previous work in architecture has concentrated on its technical aspects: methods and tools for creating, analyzing, and using architecture. However, a different perspective recognizes that these activities are carried out by people working in organizations, and those people and organizations can use assistance towards consistently producing high-quality architectures.
This report lays out the basic concepts of software architecture competence and describes four models for explaining, measuring, and improving the architecture competence of an individual or a software-producing organization.

The models are based on
(1) the duties, skills, and knowledge required of a software architect or architecture organization
(2) human performance technology, an engineering approach applied to improving the competence of individuals
(3) organizational coordination, the study of how people and units in an organization share information
(4) organizational learning, an approach to how organizations acquire, internalize, and utilize knowledge to improve their performance.

The report also shows how the four models can be synergistically applied to produce an evaluation instrument to measure an organization’s architecture competence.

Below is the Table of Contents:

1 Introduction 1
1.1 Terminology and Definitions 2
1.2 Models of Competence 7
1.3 Organization of This Report 9
2 The Duties, Skills, and Knowledge (DSK) Model 11
2.1 What Are an Architect’s Duties, Skills, and Knowledge? 12
2.2 Advantages and Challenges of the Approach 13
2.3 Processing the Raw Data 15
2.4 Duties 16
2.5 Skills 17
2.6 Knowledge 18
2.7 Using the DSK Model to Assess and Improve the Architecture Competence of Individuals 21
2.8 Duties, Skills, and Knowledge for a Software Architecture Organization 22
3 The Human Performance Technology Model 25
3.1 Using the Human Performance Technology Model to Measure and Improve Architecture Competence 27
4 The Organizational Coordination Model 29
4.1 Dependency 29
4.2 The Coordination Capability of an Organization 30
4.3 Measuring the Coordination Activities 31
4.4 Relating Organizational Capability to Dependencies 32
5 The Organizational Learning Model 33
5.1 The Components of the Organizational Learning Framework 34
5.2 Using the Organizational Learning Framework to Measure and Improve Architecture Competence 35
6 Considering the Models Together 37
6.1 How the Models Together Support Evaluation 37
6.2 Principles Embodied by the Models 38
6.3 Coverage Provided by the Models 39
7 Building an Assessment Instrument 43
7.1 Assessment Outcomes 43
7.2 The Foundations and Structure of the Instrument 44
7.3 Sample Questions 45
7.4 Reflections on the Instrument Questions 47
8 Summary 49
8.1 Next Steps 49
8.2 Conclusion 51
Appendix A: Survey of Practicing Architects 53
Appendix B: Complete List of Duties, Skills, and Knowledge 61
Bibliography 69

Get it here.

.NET 3.5 Enhancements Training Kit Available

Friday, 11 April 2008 8:34 P GMT-05
Overview from MSDN download site
The .NET Framework 3.5 Enhancements Training Kit includes presentations, hands-on labs, and demos.

This content is designed to help you learn how to utilize the .NET 3.5 Enhancement features including: ASP.NET MVC, ASP.NET Dynamic Data, ASP.NET AJAX History, ASP.NET Silverlight controls, ADO.NET Data Services and ADO.NET Entity Framework.

Right now the download does not contain too much.  Under Presentations, Demos, Screencasts, and resources there is only a message that says: Resources will be added in a future release of the training kit.

Get it here.

Microsoft Security Development Lifecycle (SDL) Guidance Available

Wednesday, 9 April 2008 9:08 P GMT-05
Microsoft has released Security Development Lifecycle (SDL) Guidance.



Microsoft is making the details of the SDL process generally available online for the first time. IT policy makers and software development organizations can leverage this content to enhance and inform their own software security and privacy assurance programs.

Below is the Table of Contents from the available document.

Introduction 3
Stage 0: Education and Awareness 9
Stage 1: Project Inception 11
Stage 2: Cost Analysis 13
Stage 3: Design Phase: Establish and Follow Best Practices for Design 15
Stage 4: Design Phase: Risk Analysis 18
Stage 5: Implementation Phase: Documentation and Tools for Users that Address Security and Privacy 20
Stage 6: Implementation Phase: Establish and Follow Best Practices for Development 22
Stage 7: Verification Phase: Security and Privacy Testing 24
Stage 8: Verification Phase: Security Push 26
Stage 9: Pre-Release Phase: Public Release Privacy Review 29
Stage 10: Release Phase: Response Planning 30
Stage 11: Release Phase: Final Security Review and Privacy Review 32
Stage 12: Release Phase: RTM/RTW 35
Stage 13: Post-Release Phase: Response Execution 36

Appendix A: Privacy at a Glance 37
Appendix B: Security Definitions for Vulnerability Work Item Tracking 38
Appendix C: SDL Privacy Questionnaire 40
Appendix D: A Policy for Managing Firewall Configurations 43
Appendix E: Required and Recommended Compilers, Tools, and Options for All Platforms 47
Appendix F: SDL Requirement: No Executable Pages 53
Appendix G: SDL Requirement: No Shared Sections 56
Appendix H: SDL Standard Annotation Language (SAL) Recommendations for Native Win32 Code 57
Appendix I: SDL Requirement: Heap Manager Fail Fast Setting 61
Appendix J: SDL Requirement: Application Verifier 64
Appendix K: SDL Privacy Escalation Response Framework (Sample) 66
Appendix L: Glossary 68
Appendix M: SDL Privacy Bug Bar (Sample) 70
Appendix N: SDL Security Bug Bar (Sample) 74
Appendix O: Security Plan (Sample) 79

You can download it here.

New WCSF Visual Studio 2008 and .NET 3.5 Guidance Bundles

Tuesday, 8 April 2008 3:18 P GMT-05
patterns and practices has released new WCSF Visual Studio 2008 and .NET 3.5 Guidance Bundles.

Web Client Composite Library for .NET Framework 3.5
This library provides reusable application blocks for creating composite responsive Web clients.

Web Client Composite Library for .NET Framework 2.0
This library provides reusable application blocks for creating composite responsive Web clients.

Web Client Contextual AutoComplete Application Block for .NET Framework 2.0
This application block provides guidance on how to provide a list of suggested values to the end user of your application during data input.

Web Client Contextual AutoComplete Application Block for .NET Framework 3.5
This application block provides guidance on how to provide a list of suggested values to the end user of your application during data input.

Web Client Model View Presenter Application Block for .NET Framework 3.5
This application block provides guidance on how to create testable ASP.NET user interfaces.

Web Client Responsive Composite Reference Implementation for .NET Framework 2.0
Web Client Responsive Composite Reference Implementation for .NET Framework 2.0

Web Client Model View Presenter Application Block for .NET Framework 2.0
This application block provides guidance on how to create testable ASP.NET user interfaces.

Web Client Modularity Application Block for .NET Framework 3.5
This application block provides guidance on how to create modular composite user interfaces.

Web Client Composite Automation for .NET Framework 2.0
This guidance package provides Guidance automation for creating composite Web clients.

Web Client Validation Application Block for .NET Framework 2.0
This application block provides guidance on how to improve responsiveness for UI validation.

Web Client Search Application Block for .NET Framework 3.5
This application block provides guidance on how to improve UI search patterns.

Web Client Responsive Composite Reference Implementation for .NET Framework 3.5
Web Client Responsive Composite Reference Implementation for .NET Framework 3.5

Web Client Search Application Block for .NET Framework 2.0
This application block provides guidance on how to improve UI search patterns.