Sunday, January 28, 2007

 
(Selling More, By Having An Adaptive System, An XYZ Company Story)

Section 8: Preferred Development Tools


Section Contents

1) .NET Platform
2) C# Programming Language
3) FXCop – Verification of Coding Standards
4) Visual Studio 2005
5) SQL Server 2005
6) Business Domain Data Models
7) CSLA and Supporting Frameworks
8) Rule Externalization Tool
9) Other Possible Tools -- Open Source (Free)

1) .NET Platform

If staying with Windows for developing projects, .NET seems to be a natural choice as:

· It’s where Microsoft wants all developers to go.
· Offers a better development environment then anything else Microsoft currently has.
· Compares favorably with all its competition.
· Is a growing development market.

2) C# Programming Language

Within .NET, C# tends to be the language of choice for people building large general business transaction systems based on frameworks. Many substantial free C# tools, frameworks, and instruction packets have been released for enterprise development in this arena already. It’s likely that this market which was initially well received is only going to get hotter now that it’s exhibiting some maturity having under gone a second release. Moreover, in conjunction with this release, Microsoft is currently giving away development tools in all .NET languages that are free to download for the next year, along with a free copy of the SQL Server database, which should spur this market on even more.

When .NET 1.0 was released with the three primary CLR languages, VB, C#, and C++ by Microsoft, those languages were very alike in capabilities and were not pushed for any particular purpose. They were instead just offered as familiar paths for developers coming from the Win32 languages VB, J\C, and C++. However, programmers transitioning to .NET languages wanted to do the same types of things they had previously done with the similar named Win32 languages. VB programmers wanted to be able to quickly build rudimentary business systems, J\C programmers wanted to build frameworks and n-tiered enterprise applications, and C++ wanted to build performance based systems. Microsoft listened and in .NET 2.0 they have added different types of features for each of those different camps of programmers to reinforce the purpose for which they want to use the different languages.

3) FXCop – Verification of Coding Standards

There is a free software tool called FxCop that will analyze C# code to make sure it is in compliance with Microsoft coding standards. This tool is being widely adopted by development groups and would likely prove worthwhile to use. It could be run by individual developers to perform the most tedious aspects of ensuring adherence to coding standards, leaving more time for high-level logic reviews by other developers.

4) Visual Studio 2005

Visual Studio is the development environment that is primarily used for .NET development, and therefore is likely a good choice to go along with C# and .NET.

Visual Studio 2005 was released at the same time as C# 2.0, .NET 2.0, and SQL Server 2005 and all these products have been designed to work well together.

5) SQL Server 2005

Although, SQL Server 2005 has just been released, it should be proven technology by the time any re-write is released, or any part of the rewrite.

SQL Server 2005 also has good compatibility with C# 2.0 and .NET 2.0 and all three of these development tools should complement each other.

6) Business Domain Data Models

A good source of business domain data models\templates for a manufacturing company that supplies retailers can be found in the book The Data Model Resource Book Revised Edition, Volume 1, by Len Silverston.

Len Silverston’s models can be used as a starting point or as a baseline for checking ones own modeling efforts. In total, he offers 500 plus pages of advice for building an enterprise manufacturing system.

7) CSLA and Supporting Frameworks

CSLA (Component-Based, Scaleable, Logical, Architecture) is a base framework with the goal of facilitating intelligent business components that execute within scaleable systems. The framework is described in the book Expert C# 2005 Business Objects by Rocky Lhotka.

Some nice advantages of the CSLA framework are:

o All source code is provided without restriction for company use.
o It focuses on smart business components, usable by both Window and Web forms.
o The author describes the workings of the framework in-depth in his 600-page book.
o Along with his reasoning behind the development choices he made.
o He makes periodic releases to correct bugs and add requested features.
o Others have extended its usefulness e.g. by providing templates for code generation.
o A public forum exists where developers can get questions answered.

It also follows all the development and design best practices for adaptable systems I mention in my document Developing Custom Enterprise Systems – Some Guidelines.

While the CSLA framework is an excellent starting point, it still needs to be extended to provide additional enterprise level services and features. Some good sources for such extensions are the book Developing Application Frameworks in .Net by XIN Chen and Microsoft’s free Enterprise Patterns. Again, these are well-documented sources offering developers hundreds of additional pages of explanation on how to use the framework services they cover and they provide all source code without restriction on its use within a company.

I do advocate trying to keep the overall framework and system no more complex then it needs to be, because frameworks and large systems are fairly daunting to new developers, and if the learning curve isn’t a reasonable thing to overcome, degradation can occur as those new developers try to extend the framework and system without a full understanding of what they are doing. On the other hand, if they do comprehend how the framework is organized and slip easily into the development team sharing a common vision, then the whole team can be very productive.

8) Rule Externalization Tool

I have no specific tool in mind here, it may be desirable to build one, or extend the chosen framework to incorporate one. Externalizing Business Rules is becoming quite popular and if done well, can make a system more adaptable. Some excellent ideas on this topic can be gleaned from the book Business Rules Applied, by Barbara von Halle.
Ms Halle is an author who is also familiar with Len Silverstons’s Template\Universal Data Models work and both authors ideas tend to dovetail well.

9) Other Possible Tools -- Open Source (Free)

In moving to the active .NET market many additional development tools can be freely obtained (now and with more to come) from the Open Source community to help with the project. For example, products such as NAnt, NUnit, and NDoc, which are tools that respectively do, automated application delivery, generate unit tests and provide a test harness for running those tests in an automated fashion, and generate system documentation.

An excellent description of making agile use of these tools to produce working software in frequent release cycles is discussed in the book Ship-IT! A Practical Guide to Successful Software Projects by Jared Richardson and William Gwaltney. A very readable and small book of only 200 pages offering lots of pragmatic suggestions.

Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?