Wednesday, February 22, 2012

Metropolis

Information technology is evolving in a fashion similar to how American cities have evolved over the last two centuries. The opportunities and pressures of the technological revolution have driven our metropolises to adopt new frameworks, models, and patterns for commerce and communication. Recent developments in IT are analogous. What can we learn about the present and future directions of IT by studying the recent history of our urban centers?

Read more ...

Friday, February 17, 2012

Presentation Layer Architecture

The presentation layer is a vitally important part of an application — an inappropriately architected presentation layer can lead to too much complexity, a lack of flexibility and an inefficient and frustrating user experience. Thin client applications have well known benefits over traditional rich client applications in terms of deployment and manageability and this has led to their popularity in recent years. However, with the advent of smart clients, the choice of presentation layer architecture is no longer straightforward. Rich clients have evolved into smart clients that can combine the central management advantages of thin clients with the flexibility, responsiveness, and performance of rich clients.

This article discusses the thin and smart client approaches and provides guidance on how to choose between them.

Read more ...

Monday, December 05, 2011

We Don't Need No Architects

The role of an architect in software development has come under attack of late. On software projects, the title Architect is often ambiguously defined and the value provided by architects is not easily quantifiable. The perception that architects live in an "ivory tower" disassociated from the realities of delivering a software solution contributes to some of the animosity toward those of us with the title.

This article presents a defense of the practice of architecture in software development. It defines the qualities of an effective architect and describes the skills required to succeed in this profession. The article examines widely held perceptions of architects and some of the mistakes that architects make which contribute to negative perceptions. Ultimately, the intent is to show the value good architects bring to a software development effort.

Read more ...

Monday, November 07, 2011

Java Message Service

The Java Message Service (JMS) API is a Java Message Oriented Middleware (MOM) API for sending messages between two or more clients. JMS is a part of the Java Platform, Enterprise Edition, and is defined by a specification developed under the Java Community Process. It is a messaging standard that allows application components based on the Java Enterprise Edition (JEE) to create, send, receive, and read messages. It allows the communication between different components of a distributed application to be loosely coupled, reliable, and asynchronous.

Source: Wikipedia

Enterprise Service Bus

An enterprise service bus (ESB) is a software architecture model used for designing and implementing the interaction and communication between mutually interacting software applications in Service Oriented Architecture. As a software architecture model for distributed computing it is a speciality variant of the more general client server software architecture model and promotes strictly asynchronous message oriented design for communication and interaction between applications. Its primary use is in Enterprise Application Integration of heterogenous and complex landscapes.

The concept has been developed in analogy to the Bus concept found in computer hardware architecture combined with the modular and concurrent design of high-performance computer operating systems. Motivation was to find a standard, structured and general purpose concept for describing implementation of loosely coupled software components (called: services) that are expected to be independently deployed, running, heterogenous and disparate within a network. ESB is also the intrinsincly adopted network design of the World Wide Web and the common implementation pattern for Service Oriented Architecture.

Source: Wikipedia

Friday, October 14, 2011

Model–View–Controller (MVC)


Model–view–controller (MVC) is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates "domain logic" (the application logic for the user) from the user interface (input and presentation), permitting independent development, testing and maintenance of each (separation of concerns).

The model manages the behaviour and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller). In event-driven systems, the model notifies observers (usually views) when the information changes so that they can react.

The view renders the model into a form suitable for interaction, typically a user interface element. Multiple views can exist for a single model for different purposes. A viewport typically has a one to one correspondence with a display surface and knows how to render to it.

The controller receives user input and initiates a response by making calls on model objects. A controller accepts input from the user and instructs the model and a viewport to perform actions based on that input.

An MVC application may be a collection of model/view/controller triads, each responsible for a different UI element.

Source: Wikipedia
More Details: MSDN

Service-Oriented Architecture (SOA)

In software engineering, a Service-Oriented Architecture (SOA) is a set of principles and methodologies for designing and developing software in the form of interoperable services. These services are well-defined business functionalities that are built as software components (discrete pieces of code and/or data structures) that can be reused for different purposes. SOA design principles are used during the phases of systems development and integration.

SOA also generally provides a way for consumers of services, such as web-based applications, to be aware of available SOA-based services. For example, several disparate departments within a company may develop and deploy SOA services in different implementation languages; their respective clients will benefit from a well-understood, well-defined interface to access them. XML is often used for interfacing with SOA services, though this is not required. JSON is also becoming increasingly common.

SOA defines how to integrate widely disparate applications for a Web-based environment and uses multiple implementation platforms. Rather than defining an API, SOA defines the interface in terms of protocols and functionality. An endpoint is the entry point for such a SOA implementation.

Service orientation requires loose coupling of services with operating systems, and other technologies that underlie applications. SOA separates functions into distinct units, or services, which developers make accessible over a network in order to allow users to combine and reuse them in the production of applications. These services and their corresponding consumers communicate with each other by passing data in a well-defined, shared format, or by coordinating an activity between two or more services.

SOA can be seen in a continuum, from older concepts of distributed computing and modular programming, through SOA, and on to current practices of mashups, SaaS, and Cloud Computing (which some see as the offspring of SOA).

Source: Wikipedia

Friday, February 12, 2010

Team Foundation Server


Software development teams of all sizes struggle with many of the same issues such as poor communication and collaboration, lack of consistent processes, and a scramble to ensure quality at the end of the development cycle. And although most teams struggle with the overhead of information gathering and reporting, they still suffer from an inability to make accurate, real-time decisions.

Microsoft Visual Studio Team System is an integrated application lifecycle management (ALM) solution comprising tools, processes, and guidance. With Visual Studio Team System, all members of a software development team can:

  • Collaborate and communicate more effectively with other team members and business stakeholders.
  • Ensure quality throughout all phases of the development process.
  • Improve visibility into project status and quality, and use that data to make informed, real-time decisions.
  • Wednesday, September 23, 2009

    Courier: First Details of Microsoft's Secret Tablet

    It feels like the whole world is holding its breath for the Apple tablet. But maybe we've all been dreaming about the wrong device. This is Courier, Microsoft's astonishing take on the tablet.


    Courier is a real device, and we've heard that it's in the "late prototype" stage of development. It's not a tablet, it's a booklet. The dual 7-inch (or so) screens are multitouch, and designed for writing, flicking and drawing with a stylus, in addition to fingers. They're connected by a hinge that holds a single iPhone-esque home button. Statuses, like wireless signal and battery life, are displayed along the rim of one of the screens. On the back cover is a camera, and it might charge through an inductive pad, like the Palm Touchstone charging dock for Pre.

    Until recently, it was a skunkworks project deep inside Microsoft, only known to the few engineers and executives working on it—Microsoft's brightest, like Entertainment & Devices tech chief and user-experience wizard J. Allard, who's spearheading the project. Currently, Courier appears to be at a stage where Microsoft is developing the user experience and showing design concepts to outside agencies.

    Microsoft has a history of collaborating with other firms, especially in the E&D division: Zune and Xbox have both gone through similar design processes. (And plans for the Microsoft Store leaked through a third-party agency were confirmed as genuine prototype layouts and concepts.)

    The Courier user experience presented here is almost the exact opposite of what everyone expects the Apple tablet to be, a kung fu eagle claw to Apple's tiger style. It's complex: Two screens, a mashup of a pen-dominated interface with several types of multitouch finger gestures, and multiple graphically complex themes, modes and applications. (Our favorite UI bit? The hinge doubles as a "pocket" to hold items you want move from one page to another.) Microsoft's tablet heritage is digital ink-oriented, and this interface, while unlike anything we've seen before, clearly draws from that, its work with the Surface touch computer and even the Zune HD.