Sunday, August 24, 2003

P800 phone blog

"this is a test on my SE P800. cool it works! The Opera browser has done a really good good job in rendering the pages in edit mode.... thankfully the blospot templates are coded in XHTML"

I have since then been doing more research into how i can use my P800/Symbian phone to upload pictures/commentary on the fly... it seemed to me that it would be a great (some would say sad!) idea to be able to use the camera to provide visual commentary supporting my text that is updated to my site...

I am really surprised that the Mobile carriers haven't jumped on to this, or then perhaps i shouldn't be surprised as they are only now moving up the protocol stack ( i.e. MMS!) and from their point of view anything that moves into the application stack is a control point for revenue generating services (think DoCoMo). So maybe if they were to bundle anything as useful as a phone-blog software on their phones they need to figure out a way of making money on it.

Companies like Jataayu (another privately held Indian software company) are making inroads with the big telco-carriers by licensing their apps onto their phones... perhaps time to offer them a mobile-blog app? - one for the boys there, i will let you know their response...

Tuesday, August 12, 2003

India IT superpower by 2006?

India is very likely to become an IT superpower by 2006, according Gartner who were recently quoted at a UK outsourcing conference. For many this may not seem a surprise, although the fact that Gartner believes this powershift in IT will occur so soon may raise a few eyebrows.

Whilst the UK has been slow to get onto the offshoring bandwagon the US has been slowly moving call-centres, back-office functions, and IT infrastructure to India over the past decade. Lured by the number of highly competent engineers that India produces every year, and coupled that with the fact that this english speaking workforce are cheap and have a hardworking and loyal work ethic second to none.

In the UK, there has definetely been a noticeable increase in high profiled announcements of companies striking deals to transfer callcentre and do BPO work in India. Driven by bottom line revenues, this shift, stategically makes sense since these sames companies also get the additional value of the talented IT market.

This of course, is all very depressing if you happen to be a skilled IT worker in the US or the UK, what and how should these workers should adapt is a tough question that i have been thinking about, and i simply don't really know where this is all going to take us. My feeling is that perhaps after 40-50 years of sustained growth in the western world we are seeing signs of a global balance. Try telling my younger cousins from India, who used to be in awe of the fact that i lived/worked in a foreign country, he doesn't feel like that anymore....

So, when the economy eventually picks up (assuming it doesn't suffer the fate of Japan's 10 year depression) things may be fine again, and we may forget about all those jobs that went abroad. Then again.

This time round we may need to bear in mind that the very countries that the UK and US are outsourcing to are expected to be creating much of the economic growth in the next 25 years. The question we must ask is with the loss of intellectual knowledge brought about through outsourcing these jobs may not come back. With the population in India (1.1Bn) and China (1.3Bn) accounting for one-third of the planet, both these countries have the fastest growing middle-class in south-east Asia that will need its time-free money-abundant lives filled.

And where will this leave us?

Will the U.K. become a nation of hedge fund managers and hairdressers? And will the U.S. simply continue in its preserve of Movies, Media, Military, and the high speed delivery of pizza. A laughing matter not.

Tech.Ed03, Barcelona, July 2003 - presentations


Just finished posting my ramblings from my recent visit to TechEd 2003. My postings are in the order in which i viewed the presentations, so as you go further forward, you may see some duplication on the material that was presented.

All in all. I enjoyed this years Tech Ed presentations. So what was i able to take back about Microsoft and their products:.

  • Windows 2003 just works. They have built on top of the stability of the previous release to offer (i) NLB and improved clustering, (ii) .NET framework 1.1, (iii) Web Services & UDDI, Virtual Shadow Copy, ....and much more im sure!

  • Office 2003. I didn't attend any of the seesions on Office, but from what ive read to date. I am impressed. I think the way that they are opening up Word using XML and XSD will really expand the way people will start to build producitivty applications. That coupled with InfoPane, which provides a context sensitive client side panel embedded in Word, which allows developers to build workflow based applications that leverage on XML and Web Services. Additionally they released InfoPath, an XML Forms editor that can be used send XML data to BizTalk... I really don't know where Office 2003 and InfoPath are going... but i think it will really open up new oportunites for building apps... i would recommend taking the time to follow these new developments.

  • BizTalk 2004. Of course, you could not go to TechEd without seeing the announcements for BizTalk Server 2004 (which by the way is an absolute darling of a product). This is more a reflection of how how quickly Micrsoft has taken leadership position in the EAI space in a very short space of time. While companies like SAP are making noises of their NetWeaver / SAP XI platform strategy, and IBM still in the process of integrating (and rebranding to IBM WBI) its recent acquisition of CrossWorlds and its ICS Server / Collaborations product... Oh and lets not talk about TIBCO's continual acquisition of products (last one being Talarian?), it sort of makes me think that these companies are really struggling to deliver a cohesive strategy. So I think Microsoft have really stolen a lead, with its organic development, that is in line with its product stack and their Jupiter product strategy. This is additionally supported by Microsoft entering the Gartner Magic Leader/Ability to Execute Quadrant, which means they must now be taken very seriously!

BizTalk 2004 introduction

Design goals
- Focus on making integration projects easier.
- Provide standardized way of building the solution.
- Provide standardized ways of making information available to information workers.
- Accelerating Web Services as way of unlocking legacy systems.
- BizTalk 2004 is Project Voyager (Jupiter v1) – Jupiter roadmap converges the other Windows Servers systems (e.g. Content Management, and Commerce).
- In BizTalk 2000/2002 documents were supported using XDR, BizTalk 2004 now supports XSD .

- The Web Services-Interoperability group (WS-I) gathers a set of standards known as profiles that can work together in an interoperable way (e.g. SOAP 1.1, WSDL x.y, HTTP 1.1, WS-Security, etc.). In BizTalk 2004 the WS-I basic profile is supported.

- BizTalk 2004 has a number of standard adapters automatically built into it (e.g. FTP. SOAP, SMTP, etc), and allows for newer adapters to be easily updated into the product.

- All schema mappings are executed internally using XSLT.

- BizTalk 2004 orchestrations can be imported and exported using the Web Services orchestration standards BPEL .

- BPEL is also GXA compliant

XML web services
- Compared to BizTalk 2002, which had 7 different development tools, all development in BizTalk 2004 uses Visual Studio 2003.

- Consequently, all the BizTalk ‘components’ are compiled to IL, and managed as a standard a .NET assembly. (Well mostly)

- Additionally a BizTalk orchestration can itself be exposed as a Web Service using ASP.NET

- Additional adapters are expected at the time of shipping BizTalk 2004.
- BizTalk 2004 has the concept of a Message Pipeline (they used to be called Channel’s in BizTalk 2002) that provides the decode/encode, decrypt/encrypt, parse, and extract of the messages.

- After a message goes through a Message Pipeline it ends up in the Message Box (in the past with BizTalk 2002, such state was stored in many places like the database, filesystem, WebDAV). This is all now persisted in MessageBox.

- In summary a typical solution flow would like: -
TransportàReceive pipelineàMessageBoxàOrchestrationàSend pipelineàTransport

- Built on top of MessageBox are additional services like Correlation & Content Routing, and Activation and Instance Management.

- Tracking tools and monitoring tools have been substantially improved from Biztalk 2002.

- Information workers have additional services that they use BizTalk for, namely around Business Intelligence (business activity monitoring, and human workflow)

- The MessageBox is central to the BizTalk architecture.
- All messages are persisted on SQL Server 2000 SP3.
- The messages are treated as rich objects with properties.
- MessageBox is based on stateless pub/sub architecture.
- This makes it very easy to scale out.
- Correlations are a way of declaratively identifying messages through its complete lifecycle within BizTalk (i.e. how do we know that this PO is related to this Acknowledgement)
- Large message support (can stream messages up to 2Gb without any problems.)

- System is mostly stateless. (Most of the routing occurs inside SQL Server)

- Except for the following:-
o Persisted orchestrations, (long running transactions)
o Message correlations, (must be routed to correct machine – in some cases)
o Hydration/dehydration,
o MSMQ (session based protocols)

- Can use NLB (windows or hardware) to scale front-end to the MessageBox (SQL servers)

- MessageBox is therefore the bottleneck; however they can also be scaled out. Although one of the MessageBox must be the master MessageBox.

- The Master database MessageBox can therefore take advantage of standard SQL Server clustering; this is an improvement over what could be done with BizTalk 2002, which was quite difficult.

- MessageBox is secured, stops other hosts from accessing it.

- Individual BizTalk processes can be targeted to specific hosts (secured using Service Accounts)

- No guest messages to be allows through the receive pipeline (must be authenticated - through this default behaviour can be disabled).

Developer user experience
- Visual studio is de-facto user experience for anyone working with BizTalk 2004. (Mapper, Editor, Orchestration designer, Pipeline designer)

- Schema mapper provides 98% of what is normally done with XSLT. (Also possible to launch to an external XSLT engine.)

- Functoids based on .NET (drag and drop)

- The BizTalk orchestration designer is much more sophisticated in BizTalk 2004. BizTalk 2002 had 6 shapes whereas BizTalk 2004 has 22 shapes.

- BizTalk orchestrations can now be composed of other orchestrations, making the task of designing the orchestrations more manageable compared to the cumbersome and complex approach in BizTalk 2002.

- Parallel actions. Looping constructs. Compensation constructs (long running.)

Information worker
- Exposed functionality through Ms-Office 2003, specifically using InfoPath 2003, it will be possible to route XML documents using Web Services through a BizTalk orchestration.

- Business Activity Monitoring (BAM) are a set of services that rely on SQL OLAP to analyse the data from the documents and/or processes to provide the business information worker with a view on the business process in real-time.

- The BAM information is presented to the end-user using Microsoft Office tools.

- BizTalk 2004 also contains a highly scaleable business rules inference engine.

- An Information worker can be more proactive about how the business is running, my taking the metrics that the business uses, and then run through the orchestration, analyse them using Business Activity monitoring, and then re-apply changes to the business rules based on the newer information.

- The rules composer is used to create the rules. The rules are always version managed, so any changes are made to newer versions, and not the deployed ruleset.

- The deployment of the ruleset is very easy, and independent of the BizTalk deployment assembly. This allows the business users to modify the ruleset without having to re-deploy the BizTalk orchestrations.

- The separation of the business rules from the business process makes good sense, since the business rules change more frequently than the business process.

Trading Partner Management
- BizTalk offers an improved SEED package, which is an easily distributable BizTalk package for trading partners (includes SharePoint Team Services, and InfoPath).

- BizTalk makes it easier to manage relationships with thousands of trading partners and separates this from the business process.

- Additionally, BizTalk 2004 introduces the concept of Service Links. Service Links offer a way dynamically binding a port to a partner at run-time, based on partner or message data. This is different to content based routing where the end ports are already bound.

Human based workflow
- Human-based-Workflow is a new feature provided in BizTalk 2004, which provide a layer of services on top of the Business Activity Monitoring Services in BizTalk 2004 that allow Office 2003 to track human based Office workflow activities.

- These human based workflows are characterised by the fact that they are task oriented using tools like Office 2003; that the workflows can be modified in run-time; process is ad-hoc and semi-structured;

- Human-Based-Workflows leverages the BizTalk Orchestration engine, and built on top of BPEL.

Automating Business Processes and Web Services using Microsoft BizTalk Server 2004

Orchestration is document-centric using XSD rather than XDR. Concurrency, decision branching, transaction processing are additional components available in the orchestration.

New in BizTalk 2004
- Integration with the .NET framework.

- Orchestration designer generates MSIL. (Fully compiled unlike BizTalk 2002, which was sort of interpreted.)

- Orchestration and Messaging engines are now combined.

- Deployment model is based on the standard .NET assemblies using Visual Studio.Net

- More complex business processes can now be constructed.

- Can compose orchestrations (abstraction to other orchestrations.) – allowing developers to build a library of orchestrations.

- Custom and advanced correlation.

- n:m schema mapping (now you can map several schemas to several schemas n:m)

- Flexible binding options (early, late, dynamic)
2002 just had early binding- static addressed for testing.
2004 now has late binding - for orchestration binding.
Note: (This is separate to port binding, which can be done later closer to time of physical production.)

- Move from 6 different tools in BizTalk 2002, down to a 1 single tightly integrated tool.

Basic features
- Send & Receive Message - building blocks for the business processes.

- Ports - named locations where we will be sending and receiving messages from (addresses, URI)

- Conditional Branching based on Boolean (decision) or message type. (Listen)

- Document Transformation (can integrate with the BizTalk mapper)

- Parallel Actions (fork and join, concurrency / synchronization)

- While Statement (while xyz do this… etc. etc. etc.!)

- Transactions
ACID transactions (same as what was in BizTalk 2002)
Long Running, compensation.

- Exception Handling (in BizTalk 2002 wasn't very rich model, now improved vastly, more programming centric C# model)

- Service Links (a concept in BPEL4S - a collection of ports that describe a particular action with your trading partner. At runtime you can determine trading partner to communicate with rather than coding port at design time.)

- Flexible Business Policies. (This refers to the rules inference engine capability.)

Port Binding
In BizTalk 2004 there are a number of options for binding ports:

- Specify now (URI, filename, etc.)
- Specify later (at some later time, the administrator determines where this message will be received from)
- Direct binding (communicate with other running orchestrations instances, or talk to the pub/sub MessageBox) … not clear on this one –SK.
- Dynamic (the reply to address is determined at runtime.)

- Using the BizTalk Orchestration designer a developer can easily drag a web port type and link it to a Visual Studio code Web Reference. In effect using the BizTalk designer a developer is able to bind a web port to a WSDL interface, which is bound to the auto-generated proxy code generated by Visual Studio.

Web services in BizTalk.
- Web Services Publishing Wizard – allows you to publish an Orchestration as a web service. By selecting the port that you want to expose, and by defining a target namespace, SOAP headers and Single-Sign on services. Visual Studio will create an project.

- BizTalk 2004 provides features that allow for a more robust environment for building web services, for example when an Orchestration is exposed as a Web Service, BizTalk will track and ensure retries to make sure of guaranteed execution.

Administering, Deploying, and Managing BizTalk 2004

BizTalk administrator
- MessageBox’s are assigned to a SQL Server database.

- Can now isolate BizTalk Orchestration Applications, MessageBox, Processing, Adapters, and Tracking onto specific hosts.

- These Hosts can then be mapped onto server instances.

- ReceiveLocations - where document flow in. (E.g. SharePoint, file, etc.)

- SendPortGroup - multiple subscribers (1:M)

Hosts - default host’s setup when BizTalk installed. "BizTalkServerApplication"

Note: The whole area regarding how BizTalk can scale up/across was brushed over rather quickly, and therefore its unclear how BizTalk 2004 takes advantage of any of the new features of NLB cluster and Server cluster capabilities in Windows 2003 or whether its independent of BizTalk.

Deploying Applications
- Developer use Visual Studio to produce Orchestrations, Pipelines, Schemas, Maps, and Rules. By using abstractions of the physical locations, and then wrapping them up in .NET assemblies.

- Scaling issues can be more easily managed when the administrator connects them up to the real physical world.

- BizTalk explorer is used to create the physical environment to the logical BizTalk application. (i.e. orchestration ports to physical ports, and mapping of applications to Hosts)

- Deployment wizard tool (is not part of Visual Studio) is used to create a deployment script. The tool ensures that the BizTalk assembly is registered in the GAC .

Use Visual Studio to deploy application à puts the assembly into the GAC. à Then use BizTalk explorer to set-up the send and receive ports. à Specify the physical locations. à
After that you need to bind the orchestration to the newly created send/receive ports.

How to move from dev to test to production? à Use "BizTalk Deployment Wizard" application à "export .NET assembly binding to a file." à specify assembly, specify location to place the BizTalk assembly binding file. à Creates xml script. à How to deploy to multiple machines? à Add a new project within visual studio. "BTSInstaller" à Build the project to create an MSI package.

Securing BizTalk
- BizTalk relies fully on SQL Server roles for access permissions (e.g. MessageBox, Configuration database, Tracking database.)

- Hosts are a generic container for a pipeline, or an orchestration or an adapter, and therefore becomes a security boundary.

- BizTalk provides the ability to isolate apps within hosts.

- Process isolation ensures code does not impact other hosts.

Public Key Infrastructure (PKI)
- BizTalk can accept encrypted S/MIME v2/v3 messages.
- BizTalk global address book is used for storing partner’s certificate (only public key)
- BizTalk server hosts has its own private key (they use the MY Certificate Store)

Authentication of Senders
- BizTalk will ensure hosts are trusted as well as the messages from these hosts.
- Adapters can be set to authenticate senders if required.
- If authentication is not required, then the sent message will be assigned a Guest ID.
- Establishing authentication of the message is a way to stop DoS attacks.

Note: Currently, the rejected messages cannot be trapped or re-routed.

Building an End-to-End Enterprise Application Integration Solution with BizTalk Server 2004
- There is a one to many (1:M) relationship against (receive port: receive location)

- Receive location (m) à receive port (1) à Published to MessageBox à Send port Subscribes to the MessageBox.

- Filter expressions are used against the send port to determine the messages that arrive.

- In BizTalk 2002 the terminology is different (receive function à channels à send ports)

- The receive pipeline is a stateless engine that parses, decrypts, and transforms. (Configured to the receive Port)

- This is connected to the MessageBox (running in SQL Server); this is the PUBLISHING of the message, (you can also promote any specific properties of the message)

- Very symmetrical architecture...

- A business process will SUBSCRIBE to a message...

Adapter framework
- AIC is symmetrical on send and receive ports. (on BizTalk 2002 this was just the send ports)

- Will have an FTP adapter.
- Will have a SQL adapter.

BizTalk orchestration 2004
- Performance will be 10 times that of BizTalk 2002 orchestration.

- Very simple super-scale out.

- Can import/export BPEL orchestrations.

- Nested processes / built in correlation.
- Business process contract interoperable across business boundaries... (Sort of like WSDL contract used for Web Services)

- OASIS 105 members expected to get a standard out (some time soon!)

- BPEL is implemented fully with Web Services.

Note: BizTalk 2004 Beta tips. Install sqlxml 3.0 sp1, turn off msmq...

Building Solutions Using the BizTalk 2004 Rules Engine

Manual processes have evolved to Automated process islands (e.g. ERPs!) as a result of evolving business processes we create connected processes (BizTalk2002 - externalising the process outside application) to one that is even more agile using BizTalk2004 (orchestration + business rules)

- Start with the premise that Processes DO CHANGE. Actually, the process tends to be the SAME. It is the policy within that PROCESS that CHANGES.

- Tracking is fundamental to the orchestration and rules.

- The Rules engine is a lightweight .NET application component that can run as an In-process within a BizTalk host.

- Developer will be able to drop a rules engine component into the BizTalk Orchestration designer.

What are rules?
- Basically they are predicates. (i.e. if then )
- Modify business policies (NOT processes) in real-time without rebuilding/redeploying.

Design goals.
- Rules engine can also be hosted in a WinForms component, or wherever!
- Security roles, define who can change these rules.

- Version management is also important; once rules are saved they are saved in SQL server. When they are published the ruleset they become immutable (i.e. they cannot be changed.)

- Rules engines can use English based vocabularies that map to .NET classes, database tables, XML Schemas.

- Instantiates the Policy Class... queries the Rules Store... holds rules in the rules cache.

- The Rules engine uses multiple Rules stores (XML / SQL Server / OleDB)

- Forward chaining inference mechanism.... [Finds all true statement.]

- Efficient pattern matching.
- Performance and scalability optimised.

- Eager-match algorithm for smaller rules sets & Microsoft patented algorithm for large rule sets.

Design Patterns
The following design patterns describe when to call the Rules Engine: -

- To dynamically determine which orchestration to call.

- To determine the path within the orchestration. [Using inference]

- To execute logic instead of burying it in the code.

When to use what?
When should you code in the rule policy and when should you code in the orchestration?

- When there are a large number of permutations to encode in control.
- Fact-based inference where control cannot be predefined.
- Point-in-time evaluations

- Workflows that require formal Control structures, long running semantics, and messaging.
- When Control flow is well understood and performance is critical.
- Visibility and tracking are important. (Process rather than policy)

Advanced Business Process Orchestration in BizTalk 2004

Transaction Scopes
Atomic transaction properties.
- Scope is a DTC Transaction.

- Timeout - how long it takes before we decide it’s a failed attempt.
- Retry - do you want to retry transactions.
- Isolation (read committed / seriazable) – database term.
- Synchronized - can only access transactions at the beginning and end of the synchronized transaction. [And not between]

Long Running Transactions.
- Business processes typically last longer than a few seconds.
- Atomic transactions are too resource intensive.

Nested Transactions.
- In BizTalk 2004 it is possible to have transactions inside transactions.
- When inner txn aborts, it does not necessarily mean that outer txn is aborted.

- Atomic transaction compensation is used to undo an atomic transaction within a longer running transaction.

Drag and drop scope shape component into orchestration designer à Can specify Atomic txn properties à Atomic transactions don't have exceptions since by their very nature they are rolled-back.

Correlation is a new feature in BizTalk 2004 to ensure that a message is correctly identified throughout the duration of its orchestration life cycle.

- Routes an incoming document to the appropriate instance of the business process.
- Property promotion. [Within each document, identify a property within a document that is unique within that business process.]

- Correlation sets are a collection of these promoted properties.

- Promoted fields are used for correlation.
- Distinguished fields are used for run-time calculations.

Note: Distinguished fields are different to Promoted fields.

Partner management
[A lot of work has been put into this functionality.]
- When the same business process applies across suppliers with different schemas.

- The business process can be bound to a Role. But doesn't bind the actual end-points.

- Orchestration Designer is used to define which is the best shipper to use at run-time. (i.e. how to make the decision about which supplier to use.)

Human Workflow Services using BizTalk 2004

Human oriented workflow is an area that has never been tackled by Microsoft before.

- Almost anything can be regarded as workflow.

- Ad-hoc tasks, collaborations, non-intrusive workflow, pervasive workflow, spans groupware, LOB, and systems management.

- Human Workflow Services are more focused on ad-hoc Task oriented stuff (fill out forms, organise events, campaigns, review document, RFP, recruiting, etc.)

- Provides Document Tracking displayed visually.

Demo #1
An example of an ad-hoc type workflow à Receive a document à Forward it to a distribution list à Person in distribution list à Opens the document in Word 2003. à Context sensitive task pane (SmartDocs) allows the user to à Delegate the document to another person in dist. List à This person approves the document.

Original sender of the document à Accesses the Workbench à Which shows dynamically a pictorial rendition of the tracking stream (i.e. what’s been happening to that document)

Demo #2
Utility called "sn.exe" that creates public/private key-pair (e.g. sn -k .snk) [creates a key-pair.]

Drag and drop "GAC Attribute" to AssemblyInfo.* à specify key-pair filename à then build.

Data Access Patterns: Messages or Data?

Layer: Architectural unit. (Presentation is equivalent to Facade)
Tier: Deployment unit.
Service: Functional unit.

- It used to be one service per tier.
- Tiers used to blend architecture and deployment.

That’s all going to change.
- Database is the least flexible in most architectures.
- Presentation is the most flexible.

- Presentation service - public interface whether its COM or presentation or GUI...

- Application logic sits in between.

- Near services or far services have different characteristics.

o Near Services (closely related machines, same organisation, reliable connection, trust domain, interoperable)

o Far services (Larger, less frequent messages, more interoperable, decoupled app logic, only related through contract, less common)

- The .NET Dataset is a very powerful mechanism, as it shifts loads away from data source.

- Identify tables that are updated {almost never, hardly ever, time to time, and pretty often} and whether it’s a read/only or read/write operation.

- The general rule of thumb is to minimize updates... whenever possible.

R/O Pattern.
Easy to replicate, multiple instances..

Deploying Visual Studio.NET Applications (incl. BizTalk 2004!)

- Microsoft has removed ‘dll hell’, although this may now have been replaced with ‘version hell’.

When deploying à Add a new project to system à Setup and Deployment Projects ("Web Setup Project") in Visual Studio.NET à Add Project Output à specify (Project name) includes compiled code, aspx, asmx files, etc.

- Visual Studio will detect Dependencies (i.e. .NET assemblies, COM, dll, etc.) that also need to be added...

- Creates a setup.exe, setup.ini, .msi (setup.exe only needed for pre-Win2k machines that don't have the auto-installer).

- All Visual applications uses the app.config XML file. [Automatically created by Visual Studio]

- Visual Studio allows programmatic component properties to be mapped to the app.config configuration file, therefore allowing these properties to be modified during run-time!

Global Assembly Cache (GAC)
- Only deploy to GAC if you have something to share.

- Assemblies must have a strong name (i.e. they must be digitally signed.) [particularly when you have multiple versions.]

Microsoft Solutions Framework (MSF v3)

MSF --> <--MOF

- MSF v1 (1991)
- MSF v2 (1998)
- MSF v3 (2003)

- MSF is related to MOF (Microsoft Operational Framework)
- MSF has been developed over the last 10 years. [Standish Groups?]

- Success rate on projects improved from 16% to 28%
- Challenged projects reduced from 53% to 49% [pain! but succeeded]
- Failed projects from 31% to 23% [failure, cancelled]

5 reasons why projects fail.
- Separation of goal and function.
(Programmers motivations or consultants’ motivations are going to be different)
- Separation of business and technology
- Lack of common language and process.
- Failure to communicate and act as a team.
- Process that are inflexible to change. (E.g. SSADM)

Projects on average:
- Cost overrun 189%
- Time overrun 222%
- Functionality delivered 61%
- Program manager [represents the constraints.]
- Product management [what is the user’s requirements.]
- User experience
- Development [any technology specialist incl. architect.]
- Test [ensure quality assurance, during all stages of project.]
- Release management [deployability, support, future operational needs.]
MSF Process model.
- Envisioning [Vision/scope approved, finding a focus.... get team together... business problems. who are the users.. 3-4 page vision documents]
- Planning [Project plans approved.]
- Developing [Scope complete.]
- Stabilizing [Release readiness approved. Move to production when the jelly wobbles the least...!]
- Deploying [Run pilots. Pre-production testing. Change management issues. ]

Sample documents at

DEVELOPMENT - Public Daily Builds
- Public Daily Build - Biggest improvement in software development.
- Building the product in an executable on a daily basis. Feels like a coherent whole.

- A strong indicator that a team is functional.
- A way to make the product and its progress VISIBLE.
- Focus on breadth NOT depth.
- Solves one major problem integration build.

- n x Daily build(s) lead to internal release.

- On a 4-6 months project (2 months build) ... first daily build will take 5 days or so...

- BVT - Build Verification Test.... minimal level of compatibility.

- 2 days of failed daily builds in a row is a problem, get the other programmers together to fix before continuing with other responsibilities.

- Use source code control. (VSS, Rational ClearCase)

- Each developer works locally (all code and executables on every workstation).

- Define quality levels. (BVT, TST, IDW, IDS, IDC)

- Automate the complete build process (batch files.)

- Upgrade to Visual Studio.NET supports daily build process [How?]

- Focus on high quality competent programmers.

Changing Role of Architects
- Systems Analysts no longer good enough.
- Today an architect must be an analyst, dba, programmer, and project manager.

Enterprise / Solution Architects must also consider the following views:
- Portfolio Management.
- Finances & Costs.
- Governance.
- Vendor Management.
- Technology Strategy and Innovation.
- Business Processes.
- Project life-cycle (i.e. MSF architecture, design, implementation, operations)

Case Study: Architecting Scaleable, Secure, Reliable Architectures

- Application built using Windows 2003, SQL Server 2000, .NET framework 1.1 running on a UNISYS ES7000 32 ways server
- Directory tree control driven from XML.
- Fat client talks .NET remoting to hub instance based CLR application that talks to server instance (ES7000)

- Deployment scenario that is flexible enough to support different technologies and architectures of the various departments/local municipals accessing it.

What’s important?
- ES7000 - crossbar interconnect - 16.Gb/s switched network between server components (i.e. CPU, Memory, IO, PCI, etc…)

- Server activated objects are always better than client activated objects.
- Class factory design pattern.

- Partition data locally.
- Minimal updates to global data.

- Minimize synchronization between threads.
- Use thread pools. (Don’t start and stop threads.)

Data access
- Dedicated connections per thread.
- Used connection pooling

Heap usage
- Few, large, long-lived items rather than many, small volatile items.

- .net framework 1.1 - take advantage of.
- Workstation and server use of pki/certificates.
- .net reflection to verify signatures of the assembly.
- Encryption is escrowed
- Access to SQL is through Stored Procedures only.
- All access methods for SQL Server over the network are turned off.
- Application code resides on the same server as the sql server.

Microsoft cluster services
Unisys cluster application defender (fail-over and recovery. watches and monitors)
Geo Spans (clusters across 200Km)

Wednesday, August 06, 2003

Wow... This is fantastic news, Ricky Gervais and the team that brought you "The Office" are planning 2-part christmas special. on BBC1 this winter.

One thing is for sure, there really isn't much good television programmes on anymore, its all full of cooking, diy, and chat show programmes. And most of the humour is tired, crass, and trying to be pseudo-intellectually funny.

Thats why when something which relies on the art of comic timing, and body language to be funny, its no wonder that people put it on the same pedestal as other great classics (e.g. Faulty Towers). How the tediousness and banality of daily office life could be brought to life through these guys is nothing short of sheer genius.

Ricky Gervais ("David Brent") and MacKenzie Crook("Gareth Keenan") i take my hat off to you. No, not even that. I would shake your hand Sir.