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






Friday, February 25, 2011

Silverlight 4 Unleashed Book Review

This book is labeled as intermediate to advanced. I would agree with that listing. You won't find an overview of XAML in the book. The publisher has made Silverlight 2 Unleashed available for download and the book refers you to it for the basics. That is where you will find the XAML overview. The author did do a good job of outlining the Silverlight 2 Unleashed chapters in the beginning of book, and pointing you to it where appropriate.

Personally I would have preferred to have the chapters still considered relevant to have been updated and included. This would have made the book a beginners to advanced book. I have however seen complaints in reviews of other books that argue for the opposite. The other reviewers don't want material carried forward. I disagree and like everything in one place. This is just my personal opinion and I won't ding the book for it.

The book starts off with a high level history of Silverlight and an overviews of alternatives. It also gives some good examples of current Silverlight projects out there. There is then a short chapter on setting up your Visual Studio and Blend environments. After that the book gets down to business with a great chapter on user controls, custom controls, and templating a control. There is also more detailed information on templating a control later in the book.

The book is packed with great advice on how to build Silverlight applications correctly. It is an easy to read book, and will also make a great reference.

Highlights for me were the coverage of
Custom Controls
Blendability
MVVM
SketchFlow
Blend Behaviors
Line of Business Applications
The Optimizing Performance Chapter
And the Advanced Development Techniques Chapter

The author is a well known expert who created the MVVM Light Toolkit. He does not jam it down your throat, but does provide some useful information on it.

The highlight of this book for me is that the author really highlights the valuable features Silverlight has to offer. He explains them in-depth and then moves on. He doesn't waste a ton of pages redrawing a line or circle 20 different ways with different colors. He moves at a pace and depth that keeps you reading and interested while constantly feeling like you are learning.

There are some other good books out there on Silverlight. I have them all, good and bad. I am very pleased to have added this book to the collection. While reading it I didn't feel like I was reading something I read before. It all felt fresh because of the way the author presented the material.

The downloadable code is very well organized and very usable.

All in all I highly recommend this book to anyone involved with Silverlight.

posted by tadanderson at 5:09 PM 0 comments

2nd Upgrade to Tool for Reverse engineering SharePoint 2007/2010 to HTML, Text, and DGML Sitemaps

There is now an update for this tool here.

I have upgraded the tool I created for reverse engineering SharePoint 2007 and 2010 into HTML, Text, and DGML Sitemaps. The tool is now versioned at 1.4. Sorry, 1.3 didn't get uploaded. You have to copy the appropriate folder instead of just the file (Version 1.0) because the tool is dependent on the WPF Toolkit. The folder includes the WPF Toolkit DLL.

New features in this version include generating DGML diagrams which allow Root Sites to be put into groups, reports now include information on Services running on the Server and the Farm, Database Sizes, user and group account information, and application pool information.

The last version gave you the option to list the users on the sites, and flag sites that have not been updated for a while to show in RED. The user's emails are listed as well as their administration status.

The DGML tool that creates diagrams for Visual Studio 2010 now ties all the site collects to the web application at the top level, or gives you the option of displaying the top level sites as groups. Sites older than the day selected will be shown in RED. All the site nodes in the DGML are clickable.

The reason for the tool is that I recently needed to reverse engineer a SharePoint 2007 Farm to prepare for an upgrade to 2010.

I initially used the stsadm tool and PowerShell commands, but they were arduous to use. I looked around for open source options but could not find one. So I built this one. The SharePoint Diagram Tool reverse engineers SharePoint 2007 and 2010 SharePoint sites into HTML, text, and DGML for displaying in a diagram.

Just copy the appropriate folders to the server and run it.

You need admin rights on the box and to the content databases. If you generate files, they will be in the same folder as the exe. You also have the option of just copying the results out of the results textbox.

Note- These are not ASP.NET Site Maps. These are for analysis not navigation.

You can turn on the Report Errors to record any exceptions that occur. This can be helpful in troubleshooting permissions. Below are some screen shots:

Feature Panel

Click here for a larger image.


DGML No Groups

Click here for a larger image.


DGML with Top Sites in Groups

Click here for a larger image.


HTML Output

Click here for a larger image.


Text Output

Click here for a larger image.


I have uploaded the tools here.

posted by tadanderson at 8:47 AM 4 comments

Tuesday, February 15, 2011

Software Development Processes Out of Balance

I find a lot of software development environments out of balance. It only takes one area of the environment to be out of its element to throw off the entire software development environment.

Business Owners, Project Managers, Software Architects, Developers, Testers, and End Users all need to work together, but a common mistake made is that a lot of processes promote working together too much or not enough.

This unbalance can cause bottlenecks in the decision making process. There is a right time to come together to review progress on artifacts. To early in its development process can derail its progress by introducing unnecessary threads of thought on the subject. To late in the process can cause rework to have to take place that could have been avoided with earlier feedback.

Another dynamic that can have a terrible effect on the project is clearly defined roles that include who has the decision making power in a given situation. No one party should have the final say in all areas, but the party responsible for that area should always have the final say. In other words, beyond the cost of technical decisions, business owners and users should not have any authority when it comes to the final decisions on technology, the technical part of the team such as architects and developers make those decisions. Just as the business owners and users have the final say on business processes.

I have seen horrible results when business owners are allowed to make technical decisions. This usually happens because there is no qualified architect on the project to make proper technical decisions, and then defend the decisions when push comes to shove. In the absence of a qualified architect, I have seen way to many "technical" project managers try to make the technical decisions. More often than not, they are usually just "yes" men and women, because they do not really have the technical expertise to make the right decision.

The same out of balance issues can be found at a team level in an enterprise. An Enterprise Architecture team can very easily create complete chaos for an application development team, or have absolutely zero impact in an IT environment.

There is a lot of talk in the agility space about treating the team as if they have a collective ownership. This is often implemented as "everyone on the team does a little of everything, we are interchangeable".

As nice as that sounds, on decent size projects, it simply does not work. The context is off. The team succeeds and fails together, as one, but they are not clones.

If you apply the same line of thought to a football team odds are you won't be very effective if you try to make the team rotate in and out of all available positions. From center, to quarterback, to punter, to safety, to running back. The same is true on software teams. Developers skill sets must be taken into consideration when the process instance is being created.

Not only developers but every one on the team must be assigned a role, role responsibilities, and role authority. Architects do not tell business owners how to do there business, and business owners don't make technical decisions. Part of the technical decisions made by the architects are what will be delivered and when.

Business owners of course give input as far as their needs are concerned, but they do not decide how it is delivered (technically, not functionally) or when. They can give deadlines, but that just means the scope of what can be delivered will be changed to be able to meet the deadline. Project managers are like the referees, they make sure everyone is playing by the rules. I wish there were more project managers that understood that.

The overall message here is that for a process to be effective, the people in the process must be matched up with the right role, role responsibilities, and role authority depending on their qualifications. Boundaries are necessary to keep everyone in the role assigned. Not walls, boundaries. One of the most valuable lessons I have learned is to proof of concept my development team (more on that here). That way I can make adjustments to assignments and timelines after I have a clear understanding of their capabilities.

The only way to get a process back on track is to get someone involved that is qualified enough to shine some light on the issues, make suggestions on how to adjust the process, and to lead the clean up the messes. The entire team must be willing to be humble enough to accept the mistakes they have made. In other words, be ready to accept the truth that your baby really is ugly. Without that level of acceptance the only other option is to replace the team. That means anyone from the business owners to the developers (Project Managers, CIOs, Architects, Testers, etc.) who refuse to play ball. It often also includes a sit down with the customers to explain the new direction. Believe me when I say they won't be mad, they will be relieved to know their current pain is about to be reduced.

posted by tadanderson at 10:30 AM 0 comments

C# 4.0 Unleashed Book Review

The author of this book starts off by answering the question, "Why do we need another C# book?". I was asking myself that very question as I turned to the introduction. He says "In short, what sets this book apart from many others is its in-depth coverage of how things work."

As far as C# 4.0 books go, I have read C# 4.0 in a Nutshell: The Definitive Reference, Pro C# 2010 and the .NET 4 Platform, and CLR via C# (Dev-Pro) . All very good books, very good!!! C# 4.0 Unleashed belongs on the shelf with them. The author does indeed break down the C# language in a unique and very enjoyable way.

The book starts out with a great overview of the .NET Framework and history of C#. The author breaks the history down by versions. He continues this theme throughout the book as he covers features. He includes an icon indicating which version of C# included the feature he is going to cover. This helps in an environment that ranges from 1.1 to 4.0. Now when I find myself in 2.0 code, and I am trying to use a feature I am used to having available since 3.0, I can take a quick look to see if I am nuts, or it is just missing because of the version I am using.

He has included a ton of diagrams that provide a visualization of the topic he is covering. The diagrams really help to speed up the learning process. They really help with the chapters on LINQ.

The author also includes tons of sidebars that are interesting and helpful. A few examples include “No PIA”, “The Origin of the Name C#”, “The Story of a Guy Called Jim... Or How the Dynamic Language Runtime was Born”, “On Backward Compatibility and Keyword Reuse”, “Functions are Data!”, “Functional Techniques in C#: Currying”, “Where does the Name Lambda Come From?”, and “Don’t Repeat Mistakes”.

Pure is the one word I would use to describe this book. It is purely about the C# language. It briefly covers the Framework libraries that are available in the beginning of the book during the introduction, but then it is all about C# 4.0. 1600 pages of C# nirvana!!!

Some of my favorite sections of the book are ""The Evolution of C#", "Life Without LINQ", "Query Expression Syntax", "Co- and Contravariance", "DLR Internals", "The Holy System Root Namespaces", and "Classes Versus Structs".

The downloadable code is in one solution. There is one project per chapter which makes it very easy to find the sample and use it while reading the book.

All in all I highly recommend this book. It is good for both the beginner and the advanced developers.

posted by tadanderson at 9:49 AM 0 comments

Sunday, February 06, 2011

Pro BAM in BizTalk Server 2009 Book Review

This book covers everything you could possibly need to know about implementing a BAM solution. It is THE BOOK on BAM. No other book comes close to being as thorough as this book.

This book is also the best resource available for learning the ins and outs of the BAM WF and WCF Interceptor. It contains all the detail needed for implementing an enterprise wide BI gathering solution using the BAM WF and WCF Interceptor.

The book is very well written and the authors write in a style that make the topics easy to understand.

The downloadable code is very well organized and usable. The example code is easy to use, which is not always the case with BizTalk books.

All in all if you are considering learning BAM, this is by far the best option available.

posted by tadanderson at 6:20 AM 0 comments

Software Product Lines: Research Issues in Engineering and Management Book Review

In my experience Product Line Engineering makes possible the highest quality of agility possible in today's software engineering processes. If used correctly, it stands the greatest chance of achieving a high level of maturity as defined by the CMMI. I know agility and CMMI are not usually used in the same context, but true agility is only achieved through predictable, repeatable, and reusable processes that enable all artifacts to be part of the reusable assets. Being on the edge of chaos, as the agilist like to say they are, only produces more chaos. Product Line Engineering strives to eliminate chaos.

This book contains material that is from the first release in 2006. This is simply the soft cover version. The material is still as relevant today as it was then.

The book is broken up into 5 Parts which include Product line management, Product line requirements engineering, Product line architecture, Product line testing, and Specific product line engineering issues.

The book is a wealth of information. Some of the topics covered include Scenario-Based Method for Software Product Line Architecting, Experiences and Expectations Regarding the Introduction of Systematic Reuse in Small and Medium-Sized Companies, Capturing Product Line Information from Legacy User Documentation, The Orthogonal Variability Modeling Approach, Variability in Standard Languages Exemplified by UML 2.0, Dealing with Architectural Variation in Product Populations, Software Product Line Reference Architecture for Security, Product Line Use Cases: Scenario-Based Specification and Testing of Requirements, Software Product Line Engineering with the UML: Deriving Products, and Evaluation Framework for Model-Driven Product Line Engineering Tools.

Anyone considering venturing into Software Product Line Engineering should read this book. It contains essential information needed to succeed. Product Line Engineering is not easy, so the more information you have from the experts the better. This book contains a ton of expert information.

The book is very well written and is easy to read. The different subjects are all gone to in depth so you gain a thorough understanding of the topic. Each chapter ends with a very nice reference so you have the option of investigating the topic further.

All in all I highly recommend reading this book.

posted by tadanderson at 6:05 AM 0 comments

Wednesday, February 02, 2011

Good Bye .Net Reflector

It was nice while it lasted. I received the email below this afternoon announcing a $35 charge will soon be in place.

From this forum, it looks like Red-gate was hoping for a big pay day from Microsoft.

Quote from the forum:
"Right now I'm hoping MS wakes up to the importance of Reflector in .NET and realizes they have a severe gap in the SDK without Reflector. I hope they either acquire this software and include in the SDK or create something similar."

Personally I hope they don’t get it.

Email:
An open letter to the .NET community

Red Gate has announced that it will charge $35 for version 7 of .NET Reflector upon its release in early March. Version 7 will be sold as a perpetual license, with no time bomb or forced updates.

As many of you know, our original intention was to maintain .NET Reflector as a free tool. But, after two-and-a-half years of providing it without charge, we realized that we could not make the free model work. We know that this will cause pain for some people in the .NET community, and we apologize for the change in policy.

As a commercial company, we need to charge at least a nominal amount to keep .NET Reflector up-to-date and relevant. Without revenue coming in, we cannot dedicate a team of developers to ensure that Reflector remains a valuable part of .NET developers' toolboxes.

As always, your feedback is important to Red Gate, so please contribute any thoughts on this subject to our .NET Reflector forum.

Sincerely,
Neil Davidson
Co-CEO, Red Gate Software

Link to more:
Read answers to frequently asked questions about Red Gate's .NET Reflector decision.
Video interview with Simon Galbraith, Red Gate co-CEO, about the future of .NET Reflector.

New features in V7 of .NET Reflector.

Forum for feedback and discussion.

Free downloads of .NET Reflector.

You have been sent this special mail from Simple Talk because you are a current .NET Reflector newsletter subscriber. To unsubscribe from the .NET Reflector newsletter please click here. Or write to Simple Talk, Red Gate Software, Newnham House, Cambridge Business Park, Cambridge, CB4 0WZ, United Kingdom.

posted by tadanderson at 11:13 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