27 January, 2006

Overview of WinFX

At a high level, WinFX consists of these basic components:
• .NET Framework
• Microsoft® Windows® Communication Foundation (formerly code-named "Indigo")
• Microsoft® Windows® Presentation Foundation (formerly code-named "Avalon")
• Microsoft® Windows® Workflow Foundation (formerly code-named "WinOE")

.NET Framework
The core API contains classes that are shared by all types of WinFX applications. For more information, see .NET Framework Conceptual Overview. They are largely part of the System namespace as well as descendants such as System.Collections. The .NET Framework APIs include support for:
• Basic value and reference types, such as Int32, String, and Uri
• Collections and Data Structures
• Data
• Graphics and Drawing
• Input/Output
• Basic networking
• Security
• Threading and runtime services

The .NET Framework also provides support for creating Web applications and Windows applications.
ASP.NET is a unified Web platform that provides all the services needed to build enterprise-class Web applications. The classes that make up the API are largely part of the System.Web namespace, or its descendants. For details, see ASP.NET Web Applications. Windows Forms is a platform for developing Windows client applications. A Windows Forms application can also act as the local user interface in a multi-tier distributed solution. Windows Forms extends the core API with a clear, object-oriented, extensible set of classes that enable you to develop rich Windows client applications. The classes that make up the API are largely part of the System.Windows.Forms namespace, or its descendants.

Windows Communication Foundation
Windows Communication Foundation is the new service-oriented communications infrastructure built on top of web services protocols. The advanced web service support in Windows Communication Foundation provides interoperable secure, reliable, and transacted messaging. For details, see What is Windows Communication Foundation?
The Windows Communication Foundation service-oriented programming model is built on the .NET Framework and radically simplifies development of connected systems. It unifies a broad array of distributed systems capabilities in a composable, extensible architecture that supports multiple transports, messaging patterns, encodings, network topologies, and hosting models. It is the next version of several existing products: ASP.NET’s web methods (“ASMX”) and Microsoft Web Services Enhancements for Microsoft .NET (WSE), .NET Remoting, Enterprise Services, and System.Messaging. The classes that make up the Windows Communication Foundation API are largely part of the System.ServiceModel namespace and its sub-namespaces. Windows Communication Foundation supports a variety of scenarios, including:
• One-way and duplex messaging
• Synchronous and asynchronous remote procedure calls
• Callbacks
• Sessions
• Multi-contract services
• Transport- and message-based security, reliability, and ordered delivery
• Queued messaging
• Transaction support

Windows Presentation Foundation
Windows Presentation Foundation is Microsoft’s unified presentation subsystem for Windows. It consists of a display engine and a set of managed classes that allow you to create rich, visually-stunning applications. Windows Presentation Foundation also introduces XAML, which allows you to use an XML-based model to declaratively manipulate the Windows Presentation Foundation object model. To learn more, see Windows Presentation Foundation. The classes that make up the API are largely part of the System.Windows namespace or its descendants. The primary components are:
• An application model with support for navigation, windows, and dialog boxes
• UI data binding
• A rich set of extensible layout and control objects
• 2D and 3D graphics
• Animation
• Media
• Documents

Windows Workflow Foundation
Windows Workflow Foundation is a new workflow development platform built on the .NET Framework.
Windows Workflow Foundation provides a programming model for developing and executing a wide variety of stateful, long-running, persistent workflow applications. Windows Workflow Foundation provides out-of-the-box workflow functionality that for easily developing workflow-based applications such as document management, commercial page flow, IT management, and various line-of-business applications. Applications can load the workflow engine and plug a variety of runtime service components into it. Windows Workflow Foundation is highly extensible, so you can create your own custom components to address your particular business concerns. Windows Workflow Foundation also offers ASP.NET support to make it easy for you to build and execute workflows that run in the Internet Information Services (IIS)/ASP.NET environment.

14 January, 2006

Software Architect Tasks


The software architect has overall responsibility for driving the major technical decisions, expressed as the software architecture. This typically includes identifying and documenting the architecturally significant aspects of the system, including requirements, design, implementation, and deployment "views" of the system.
The architect is also responsible for providing rationale for these decisions, balancing the concerns of the various stakeholders, driving down technical risks, and ensuring that decisions are effectively communicated, validated, and adhered to.

02 January, 2006

Rational Unified Process RUP


The Rational Unified Process or RUP provides a disciplined approach to software development. It is a process product, developed and maintained by Rational Software. It comes with several out-of-the-box roadmaps for different types of software projects. RUP is an iterative process that identifies four phases of any software development project. Over time, the project goes through Inception, Elaboration, Construction, and Transition phases. Each phase contains one or more iterations where you produce an executable, but perhaps incomplete system (except possibly in the Inception phase). During each iteration you perform activities from several disciplines in varying levels of detail. The above is an overview diagram of the RUP.

RUP provides guidance for all aspects of a software project. It does not require you to perform any specific activity or produce any specific artifact. It does provide information and guidelines for you to decide what is applicable to your organization. It also provides guidelines that help you tailor the process if none of the out-of-the-box roadmaps suits your project or organization.

RUP emphasizes the adoption of certain best practices of modern software development, as a way to reduce the risk inherent in developing new software. These best practices are:

1. Develop iteratively
2. Manage requirements
3. Use component-based architectures
4. Model visually
5. Continuously verify quality
6. Control change


These best practices are woven into the Rational Unified Process definitions of:
Roles – sets of activities performed and artifacts owned.

Disciplines – focus areas of software engineering effort such as Business Modeling, Requirements, Analysis & Design, Implementation, Test and Deployment.
Activities – definitions of the way artifacts are produced and evaluated.
Artifacts – the work products used, produced or modified in the performance of activities

http://en.wikipedia.org/wiki/Rational_Unified_Process

01 January, 2006

Extreme Programming XP

Extreme Programming (XP) is a lightweight code-centric software development process for small projects. It is designed by Kent Beck and came to the software industry’s attention on the C3 payroll project at Chrysler Corporation around 1997. It is based upon iterations that embody several practices such as Small Releases, Simple Design, Testing, and Continuous Integration. XP promotes several techniques that are effective for the appropriate projects.

Extreme Programming is based on 12 principles:

  1. The Planning Process -- The desired features of the software, which are communicated by the customer, are combined with cost estimates provided by the programmers to determine what the most important factors of the software are. This stage is sometimes called the Planning Game.
  2. Small Releases -- The software is developed in small stages that are updated frequently, typically every two weeks.
  3. Metaphor -- All members on an XP team use common names and descriptions to guide development and communicate on common terms.
  4. Simple Design -- The software should include only the code that is necessary to achieve the desired results communicated by the customer at each stage in the process. The emphasis is not on building for future versions of the product.
  5. Testing -- Testing is done consistently throughout the process. Programmers design the tests first and then write the software to fulfill the requirements of the test. The customer also provides acceptance tests at each stage to ensure the desired results are achieved.
  6. Refactoring -- XP programmers improve the design of the software through every stage of development instead of waiting until the end of the development and going back to correct flaws.
  7. Pair Programming -- All code is written by a pair of programmers working at the same machine.
  8. Collective Ownership -- Every line of code belongs to every programmer working on the project, so there are no issues of proprietary authorship to slow the project down. Code is changed when it needs to be changed without delay.
  9. Continuous Integration -- The XP team integrates and builds the software system multiple times per day to keep all the programmers at the same stage of the development process at once.
  10. 40-Hour Week -- The XP team does not work excessive overtime to ensure that the team remains well-rested, alert and effective.
  11. On-Site Customer -- The XP project is directed by the customer who is available all the time to answer questions, set priorities and determine requirements of the project.
  12. Coding Standard -- The programmers all write code in the same way. This allows them to work in pairs and to share ownership of the code.
For information on XP, go to The Rules and Practices of Extreme Programming, or Extreme Programming: A gentle introduction.

http://en.wikipedia.org/wiki/Extreme_Programming