Featured Articles

The Economics of Cloud Computing

by Bill Sempf In the mid-nineties, new directions in managerial accounting made cost center bookkeeping popular in large organizations. In this model, departments within an organization traded almost like a miniature economy, with some departments earning a net gain for the company and some departments delivering a net loss. The profit centers - as those who earned money are called - get to call the... Read more...


Selling Developer-Level Testing

By Jim Holmes

[Note: I’m very biased to Test Driven Development approaches, but you can use the approaches in this article for pitching any developer-level testing, be it writing tests first or writing tests after. Get writing some tests. ANY (good) tests. Now!] You’ve come back from some conference or user group meeting and now you’re all fired up about getting rolling with an exciting, empowering... Read more...


Why MEF

By David Giard

Microsoft Managed Extensibility Framework (MEF) is a framework for building extensible applications. Using MEF, you can build extensible applications constructed of loosely-coupled composable parts. By constructing an application of parts, any part can be replaced at runtime, without recompiling or redeploying the entire application. Scenarios for MEF One use of MEF is to create an extensible application... Read more...


Object Oriented Programming, Part 3: OOP Concepts

By David Giard

In this article, we will discuss the key concepts important to Object Oriented Programming (OOP). An object-oriented system has the following characteristics · Inheritance · Polymorphism · Abstraction · Encapsulation · Decoupling Some systems (and some languages) don’t fully support all the above constructs and still refer to themselves as “object-oriented”... Read more...


Object Oriented Programming, Part 2: Understanding Objects

By David Giard

Before we can do that, it’s important to understand the basics of objects before you can grasp Object Oriented Programming. Key Object Concepts Objects are essentially a collection of structured data stored in memory. An object is based on a class that defines how to create an object. In this article, I will describe the following concepts. · Classes · Class members o Properties... Read more...


Tidbits

An effective testing strategy

http://www.lostechies.com/blogs/jimmy_bogard/archive/2010/08/24/an-effective-testing-strategy.aspx

"On a recent large project, we had a goal early on that we didn’t want to have a lot of QA folks manually testing our software.  Finding bugs through manual testing is incredibly time consuming and expensive, so we opted to try and build as much quality in to the product.  That’s not to say that manual testing doesn’t have its place, as humans are fantastic about using software in ways you didn’t expect.

This was a long project, around 18 months, and will continue to have active development in the future.  Very early on we found that a good testing strategy was critical to the success of the project, especially for our team to be able to 1) continue to increase our velocity over time and 2) have the confidence to make both small and large changes in our application.

It took quite a while for us to settle on an effective strategy.  This was mostly because we had to learn how to design our application for testability, in all layers of the application.  Our team were all experienced in TDD before starting the project, but that wasn’t the only skill we needed to create an effective testing strategy."



Relationship Management at the Operational Level in Outsourcing

http://www.springerlink.com/content/x37081766tk88120/

"Abstract

Research suggests that achievement of a successful outsourcing relationship requires a tremendous amount of detailed management. In this paper we draw on relationship theory to understand the management practices of a particular outsourcing setup. An empirical study of a Danish company operating an off shore development centre with 400 employees located in India identified a host of practices that form a seemingly complex and ambiguous picture. To make sense of the studied practice we develop a framework that consists of four relationship management strategies coined select-a-friend, develop-a-friend, control-a-person, and control-of-output. We provide illustrative examples of each strategy; reflect upon the alignment between the type of outsourcing setup and the identified portfolio of practices; and outline theoretical and practi cal implications. Key findings are that all four strategies are used, play an important role and that continuous improvement of the portfolio of relationship management practices is paramount to ensure effectiveness. "


The Mission, Capabilities, and Business Output of Enterprise Architecture

http://blogs.msdn.com/b/nickmalik/archive/2010/08/10/the-mission-capabilities-and-business-output-of-enterprise-architecture.aspx

"In this post, I describe the capabilities needed by an EA team in order to fulfill the mission that I outlined above.  Clearly, if you disagree with the mission statement, you will expect to see different capabilities highlighted.  I would be surprised if any EA team adopts the mission statement above without tailoring it to your own organization"



A reasonable canonical definition of Enterprise Architecture

http://blogs.msdn.com/b/nickmalik/archive/2010/08/08/a-reasonable-canonical-definition-of-enterprise-architecture.aspx

"Clearly we want one.  A thread on LinkedIn a couple of months ago attempted to define the value of EA, and produced a tirade of over 1,300 entries!  But while individuals were busy chatting, the Enterprise Architecture Research Forum took a different approach. "



Modern SOA Methodology and SOA Adoption Using Agile Practices (Part I)

http://www.soamag.com/I42/0810-2.php

"There is widespread debate about the possibility of agile and SOA coexisting in an enterprise. One is about rolling up your sleeves and programming for today’s needs while the other is about big picture and reusable services for both today and the future. Although they seem contradictory agile and SOA have the same underlying intent and that is to deliver tangible business value using software on a continuous basis. "



How to Avoid Being the Asshole Architect

http://www.lessonsoffailure.com/developers/avoid-asshole-architect/

"Recently, I was the happy recipient of some very condescending “advice” from the architecture group of a client.  The tone, quality and delivery of the information completely overwhelmed the actual message (some of which was actually relevant, and some was off in left field).  This pleasant experience reminding me why the term “software architect” has come to be synonymous in some circles with “arrogant jerk who forgot what it’s like to code on a real project”."