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, April 29, 2011

JustDecompile- New Free .NET Reverse Engineering Tool from Telerik

Telerik has picked up the slack for Red Gate and stepped up to provide the community with a new reverse engineering tool for .NET.

It blew up on XP for me, but works fine on Windows 7 64x.

Overview (from download site)
JustDecompile is a new, free developer productivity tool designed to enable easy .NET assembly browsing and decompiling. Currently available as a BETA, JustDecompile builds on years of experience in code analysis and development productivity originally created for JustCode, Telerik's Visual Studio productivity add-in. JustDecompile lets you effortlessly explore and analyze compiled .NET assemblies, decompiling code with the simple click of a button. Download the BETA and provide feedback in the Forums to help shape the official version, targeted for the Q2 2011 release this summer.


Click here for larger image

Get it here.

posted by tadanderson at 11:04 AM 2 comments

Thursday, April 21, 2011

Visual Studio ALM Rangers Architecture Tooling Guidance 2.1 (ABE) is available

The Visual Studio ALM Rangers have released a new ALM guidance package for Visual Studio 2010.

Overview from Visual Studio ALM Rangers Site
The architecture tooling guidance contains practical guidance for Visual Studio 2010 Ultimate, common usage scenarios, hands on labs, and lessons learnt in-the-field from the communities, focused on modeling tools.

The guidance scenarios include understanding and reverse engineering an existing application or starting a new application from scratch. These are both common challenges that any development lead or architect faces. The intent is to present you with examples that show how these tools can support you in real world scenarios, and to provide you with practical guidance and checklists, instead of an in-depth tour of the product features.

This latest version contains a new Visual Studio Extension which includes guidance automation and hands-on labs, in addition to the existing guidance. See the download page on the companion Codeplex site for a series of short videos that introduce the new extension features.

Download the extension here.
Check out more about the ALM Rangers here.

Some screenshots below:


Click here for larger image


Click here for larger image


Click here for larger image


Click here for larger image

posted by tadanderson at 6:19 PM 0 comments

Tuesday, April 19, 2011

101 Windows Phone 7 Apps, Volume I: Developing Apps 1-50 Book Review

I was planning on waiting until Mango was released before I downloaded the Microsoft phone tools. Two things changed my mind, Mix 2011 and this book. When I saw this book coming out I pre-ordered it immediately.

The author calls his book "unconventional". The question I had was will this be unconventional in a good way, or a bad way. I am happy to report the book is unconventionally awesome!!!!

The book is broken down into 8 parts. 1- Getting Started, 2- Transforms & Animations, 3- Storing & Retrieving Local Data, 4- Pivot, Panorama, Charts, & Graphs, 5- Audio & Video, 6- Microphone, 7- Touch & Multi-Touch, 8- Accelerometer Tricks, and then 5 handy appendices that include a XAML Reference, Theme Resources Reference, Animation Easing Reference, and a Geometry Reference.

The book is designed to be read from front to back. The author builds on topics as he goes, but it also makes a great reference.

Each chapter is an application that teaches a topic. For example Chapter 1: Tally covers Application basics, Chapter 2: Flashlight covers Application Bar, Timers, Brushes, and Message Box, Chapter 3: In Case of Emergency covers Orientation, Keyboard, and Emulator-Specific Code, and Chapter 4: Stopwatch covers the Grid, StackPanel, User Controls, Alignment, and Progress Bar.

Appendix A, the Lessons index is arranged by topic and points to the chapters that cover it. For example Background Worker is listed as being covered in chapters 11, 24, and 25.  Throughout the book there are also sidebars that answer FAQs, dig deeper, offer tips, and give warnings.  There is no filler/fluff in this book which is not true of many books these days, especially 1130 page books!!!

Each chapter cover and lists the XAML and the code behind.  That makes it possible to read the book without having to have a computer with the code nearby.

I still don't have a windows phone (I am typing this review in OneNote for the iPhone). The author points out the trouble this may cause when developing. Not being able to test on a real phone could really come back to bit you if you deployed to the Windows Phone Marketplace. Although he points out where to get one for development purposes (without a voice or data plan) they are $500.00. That is not going to fly. The same phones are $0.01 with a voice and data plan. I wish Microsoft would buy up a bunch of refurbished ones and resell them at a reasonable price.

I will be buying a Microsoft Touch Mouse as soon as they become available to help with programming for gestures.

The downloadable code is sweet. It contains some copies of applications the author has published to Windows Phone Marketplace. There is a fully functioning application for each chapter.

The book is in full color so it is a pleasure to read. The author has a great writing style. I haven't put the book down since it arrived. The one problem you will have is that a lot of the applications are simply fun to play, so you may find yourself getting side tracked. I have been bugging my dog with the talking parrot sounds and been playing darts a lot. This is by far the most fun I have had reading a book in a long time!!!!

With Mango just around the corner, now is the time to get up to speed on Windows Phone. This book makes it a pleasure to learn the platform.

All in all, if you are interested in Windows Phone development at all, this book is a must have!!!!  It will definitely become a classic.  This is one of the best programming books I own, and I own a lot of them.

posted by tadanderson at 5:27 PM 0 comments

Wednesday, April 13, 2011

Microsoft Silverlight 5 Beta Offline Documentation Available for Download

Microsoft has posted the Microsoft Silverlight 5 Beta Offline Documentation. Below is an overview taken from the new documentation that outlines the new features covered in the documentation.

Overview (From Documentation)
Silverlight 5 Beta includes several new features that are based on customer suggestions. This topic introduces some of the new features and improvements in Silverlight 5 Beta.

This topic contains the following sections.

Controls
Out-of-Browser
User Interface
XAML
Data
Application Model
Media
3D Graphics
Text
Related Topics

Controls

ItemsControl Search
A user can now search a list of items in an ItemsControl using keyboard input. You can specify the property that identifies an item for search purposes by setting the TextPath attached property.

DrawingSurface
DrawingSurface is a new control in Silverlight 5 Beta. DrawingSurface defines an area where 3-D content can be composed and rendered. You implement the rendering behavior through the event data of the Draw event. For more information, see the 3-D Graphics Overview overview and the Walkthrough: Creating and Animating a 3D Textured Cube in Silverlight.

Out-of-Browser

You can display multiple Window instances in trusted, out-of-browser applications. This enables you to create non-modal dialog boxes, tear-off windows, and user-adjustable layouts that can span multiple monitors. For more information, see the Window class.

User Interface

Detecting Double-Clicks
Silverlight 5 Beta adds a ClickCount event data property to the MouseButtonEventArgs event data class. You can use this property to detect double-clicks, based on platform settings for the time duration that two clicks should be considered a double-click.

XAML

Silverlight 5 Beta now has a MarkupExtension base class. By implementing the ProvideValue(IServiceProvider) method, you can define a custom markup extension, which can be understood and used by the Silverlight XAML parser. Services that are intended for markup extension service context enable several scenarios that were not possible in Silverlight 4 XAML. For example, it is now possible to implement a similar markup extension behavior to the x:Type markup extension from WPF XAML.

Certain structures that did not support an attribute syntax for setting their properties now support attribute syntax on properties. These structures are: CornerRadius, Thickness, Size, and Rect.

Data

Data Binding
Silverlight 5 Beta enables you to debug data bindings by setting breakpoints on bindings in XAML. When a breakpoint is hit, you can use the Locals window to examine the state of a binding and identify any issues.

Silverlight 5 Beta also includes several data binding enhancements, some of which were previously available only in Windows Presentation Foundation (WPF). These enhancements enable you to do the following:

Use data bindings with styles. To do this, use the Setter.Value property as a binding target. You will typically do this in XAML using the binding markup extension.

Bind to ancestors in the visual tree. To do this, set the Binding.RelativeSource property to FindAncestor.

Associate bound objects to data templates implicitly by type instead of explicitly by template name. To do this, set the DataTemplate.DataType property for each implicit template instead of specifying x:Key values.

Bind to dynamically-generated properties. To do this, implement the ICustomTypeProvider interface on classes with dynamic properties.

Application Model

Silverlight 5 Beta includes the following enhancements for trusted applications:

Trusted applications can now access the local file system without restriction.

Out-of-browser trusted applications can create multiple Window instances.

System administrators can enable trusted applications to run inside the browser, simplifying enterprise deployment and application updates. This also enables you to use some previously out-of-browser-only features inside the browser, including the WebBrowser and NotificationWindow classes.

Media

Sound Effects
Silverlight 5 Beta includes new classes for sound effects. You can use the classes in the Microsoft.Xna.Framework.Audio namespace to create and manage sound effects in your applications.

Variable Playback Rate
Silverlight 5 Beta includes the ability to check and change the playback rate of media. MediaElement now includes a PlaybackRate property and a RateChanged event.

3D Graphics

Silverlight 5 Beta introduces the ability to use hardware accelerated 3D graphics in your Silverlight applications. This opens up a whole new set of scenarios that are possible in Silverlight, such as 3D drawn controls, data visualizers, 3D charts, scatter points, geographic overlays, and 3D games and simulations.

The core of the XNA Games Studio 4.0 graphics libraries is now included in Silverlight 5 Beta. Developers familiar with XNA will be able to quickly get up to speed with Silverlight 3D graphics programming. For more information, see 3-D Graphics Overview and Walkthrough: Creating and Animating a 3-D Textured Cube in Silverlight.

Text

Character Spacing
Silverlight 5 Beta includes the ability to increase or decrease the amount of space in between characters in text. You can do this by using the CharacterSpacing property available in the Control, TextBlock, and TextElement classes.

Inter-line Spacing
Silverlight 5 Beta enables you to increase or decrease the space between lines of text to increase readability or to change the look and feel of the body of text. You can do this by using the LineHeight and LineStackingStrategy properties available in the Block, TextBlock, TextBox, and RichTextBox.

Display Overflow Content in RichTextBox
In Silverlight 5 Beta, you can display the content that does not fit in a RichTextBox in a RichTextBoxOverflow control.

You can get it here.

posted by tadanderson at 5:30 PM 0 comments

Saturday, April 09, 2011

Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures Book Review

If you want to learn to use UML as a communication tool on your software development projects, this is the book too own. It contains a ton of examples and covers every aspect of the UML you will need to know to successfully use it on your projects.

The book starts out with an introduction to software architecture and object oriented analysis and design with UML.

There is then a short chapter on UML notation, a chapter on software development processes, and one on software design and architectural concepts. The last chapter in part one introduces COMET (Collaborative Object Modeling and Architectural Design Method), which is the author's software modeling and design method.

To me COMET is not really that much different than the Unified Process, which is a great process. COMET just breaks out the testing activities a little differently. COMET is a very usable process and if used correctly should lead to successful software development projects.

Part two of the book is all about modeling. There is a chapter on Use Case Modeling, Static Modeling, Object and Class Structuring, Dynamic Interaction Modeling, Finite State Machines, and State-Dependent Dynamic Interaction Modeling.

By the time you are done with part two of this book you will know all you need to know to produce high quality diagrams that can be used between the different stakeholders on your projects as very effective communication tools.

Part three of the book covers software architecture. There is a chapter on the Overview of Software Architecture, Software Subsystem Architectural Design, Designing Object-Oriented Software Architectures, Designing Client/Server Software Architectures, Designing Service-Oriented Architectures, Designing Component-Based Software Architectures, Designing Concurrent and Real-Time Software Architectures, Designing Software Product Line Architectures, and a chapter on Software Quality Attributes.

If the chapter on Software Product Lines interests you, I would highly recommend buying the author's book tilted Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures. 

I really the like the way part two introduces the different perspectives you need to have when considering the type of architecture you are building.  The way the author accomplishes this is unique to this book.  I have not seen it broken down this way before, and it really provides some great insight.

Part three contains several case studies.  Each one provides a detailed design of the system being discussed.  These are great for seeing how well the design techniques in this book work.  You get a complete understanding of each of the systems in the case studies by the time you are done reading the chapter.

This book is really well written and organized.  You can read it from front to back or use it as a reference.  Each chapter ends with exercise questions.  I usually just ignore these, but since the author has decided to include the answers I enjoyed trying to answer them. 

The book has an appendix which contains a nice catalog of software architectural patterns. It is a summary of architectural structure patterns, communication patterns, and transaction patterns. It contains a summary of the pattern and the location it is used in the book.

All in all this is a very high quality book packed with very valuable information any architect at an level of experience will benefit from.  Hi highly recommend this book!!!!

posted by tadanderson at 10:00 AM 0 comments

Friday, April 08, 2011

Every Enterprise Needs a Modernization Strategy

An enterprise without a modernization strategy is an enterprise with a painful future of paying technical debt with the highest interest possible. This is especially true of custom developed applications.

Software changes, period. So why not include a strategy for change in your enterprise. I have seen a lot of enterprises that pride themselves on being ready for requirement changes during their application development projects, but very few that ever consider a modernization strategy.

Modernization should be architected into your applications. History has continuously shown us that in our industry nothing stays new very long. I have seen some large projects need to upgrade the version of the .NET framework before they even get the first release to production, but they never even consider that an option, so they deploy a legacy application on their first release.

Most of the projects without a modernization plan lack architectural guidance as a whole. The projects that plan for modernization don't simply recreate the mess they were intended to replace. I have seen projects deliver 2 years worth of work, only to realize they just delivered themselves a legacy system that will require them to start over from the beginning.

Too many projects today pick their technology based on the skills of their available team. If their skills are not up to date, then neither will the software they build be.

Modernization needs to be baked into your development process. Development processes don't end upon delivery, they continue until the application is retired. Any application in production should be updated as new versions of the software they are built with are released.

This is especially true with brownfield development, yet brownfield development projects are where I see modernization overlooked the most. This happens mainly because there is heavy development still going on in the environment, and all the resources are being dedicated to delivering the new functionality.

I see a lot of environments that could be increasing productivity and quality with new tools available in new releases of developer tools and frameworks.

There are a lot of things in software development that can come back to bite you, and not having a modernization strategy for your custom built applications is one that is guaranteed too.

posted by tadanderson at 12:32 PM 0 comments

Tuesday, April 05, 2011

SDLC 3.0: Beyond a Tacit Understanding of Agile Book Review

This book is a really nice overview of the current state of modern software development processes. There isn't a better collection of information on SDLC in one place that I have seen.  It gives a great overview of the Unified Process, MBASE. Scrum, XP, Lean, FDD, Agile-Up, and Lean-Agile.

After the book thoroughly explains what SDLC 3.0 is, it shows how it relates to current processes like PMBOK, Enterprise Unified Process, TOGAF, Zachman, and Acquisition (COTS).

The author has created a plugin for IBM Rational Method Composer, but it is not available to the public. It is used during the author's consulting engagements. Having the process repository available in a configurable format is a must to make it usable for anything beyond an educational resource.

I really like the fact that the author introduces Systems Thinking. One major resource the author missed is the book Software Process Dynamics.

I like the way the author breaks down the decision process of deciding whether or not to do a detailed architectural analysis. Not often found in pro-agile books.

This is my favorite 'Agile' book to date.  It is by far the most practical and down to earth.  It doesn't slam tradition software development processes, but rather points out their strengths and shows how to use those strengths.

All in all I highly recommend this book for anyone interested in learning more about software development processes.

posted by tadanderson at 4:52 PM 0 comments

Friday, April 01, 2011

Developer's Guide to Microsoft Prism 4: Building Modular MVVM Applications with WPF and Silverlight Book Review

This is a nice concise overview of all the topics related to development with Microsoft PRISM 4.0.

It is not exactly the same content that is available for download.  It is a trimmed down version of it.  For example it does not cover upgrading from a previous version or go into the implementation details of the examples.  It gives an overview and points you to the topic in the online MSDN documentation.  Personally I would have preferred the content to have been included.

The book starts out with an overview of PRISM terminology and the reasons for using PRISM (as well as the reasons not to).  It then offers a chapter on each of the following topics- Initializing Prism Applications, Managing Dependencies Between Components, Modular Application Development, Implementing the MVVM Pattern, Advanced MVVM Scenarios, Composing the User Interface, Navigation, Communication Between Loosely Coupled Components, Sharing Code Between Silverlight and WPF, and Deploying Prism Applications.

I think the book is organized well and is written in an easy to read format.  It contains a lot of diagrams that help you understand the topic.  It works well as a reference because it has a very nice index.  The book also contains a ton of links to more information about the topics it covers.

PRISM is a big topic.  This book is a great place to start learning it.  Actually the best place to start.  Learning the architectural and design techniques the team used when putting PRISM together will help any architect or developer increase their skillset.  This book contains a nice overview of MVVM, MEF, UNITY (Inversion of Control/Dependency Injection),  and many popular design patterns (Command, Adapter, Application Controller, Event Aggregator, Facade, Observer, Service Locator, etc.) which makes it worth reading, even if you are not planning on using PRISM anytime soon.  Learning how PRISM works is worth the time.

All in all, if you are a .NET Architect or Developer I highly recommend reading this book.

posted by tadanderson at 10:04 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