Archive for August, 2008

Identifying software needs to avoid undesirable consequences

 BOLD = Default choice if none given (does not mean this choice is the recommendation of the development group)



Intellectual Property Rights

ð       Source code to become part of the Public Domain – No protection for source code

ð       Source code is to be Open Source – Source code and releases could be done with a website

ð       Source code must be copyrighted

ð       Source code must be kept secret – Source must be encrypted and executable secured

Importance of Source Control for Code

ð       Only end result is needed and code will be entirely redeveloped if application is needed again – No Source Control

ð       Having the source code for the delivered programs is not needed but would like to maintain the code for review and understand that code will likely be lost or destroyed – Manual Source Control

ð       Project is not of high importance but the source code which were used for particular releases should be maintained –Source Control Required, but does not need to be administered

ð       Project is important and all source code during development must be maintained to enable branching of source code, historical tracking of changes, and fixing of code bugs – Administered Source Control Required

Importance of Code Quality

ð       Code will be developed to solve the specific problem only and may not be changeable, readable, reusable, or understandable – Code quality is not important

ð       Code must be readable, but may require significant study to understand

ð       Code must be readable and logically structured

ð       Code must be immediately understandable and will be used to build a significantly larger system



Software Failure Tolerance

ð       Failure is expected for some percentage of executions – No attempt will be made to recover from failure of the software

ð       Failure is not expected and should be minimized – Software should immediately fail upon any error and notify user/administrator

ð       Failure would be damaging and actions should be taken to mitigate the damage – Software Redundancy

ð       Failure would be catastrophic and actions should be taken to reduce chance of failure – Software and Hardware Redundancy

Software Resource Usage – Efficient utilization of Processing, Storage, Network, etc.

ð       There will be no desire to scale up the software and execution is not time sensitive – Software resource usage is not important

ð       Software resource usage is fixed but must be understood

ð       Scalability of the software is required – adding additional processing, storage, and network capacities will increase the abilities of the software

ð       Software must be massively scalable – adding additional processing, storage, and network capacities will increase the abilities of the software and the software is written to maximize the utilization of these resources



Dependency of software on other systems

ð       Software will fail without warning if an any external system is unavailable or does not function properly

ð       Software will not function properly without external systems, but will notify user or administrator of the failure

ð       Software will be usable without relying on external systems, but will lose functionality

ð       Software will be fully independent of external systems – any failure of external systems will not be noticeable by the software user but will be reported to administrators for review



Security of system data

ð       Data will not be secured and will be considered available to the public

ð       Access to the data must be limited to desired people, but those people will be physically able to release the data to the public

ð       Access to the data must be limited to desired people and to limited sets of information

ð       Data must be accountably secured for usage by a small number of individuals

Integrity of the data

ð       The data will be used for a limited time and its meaning will be highly dependent on external context and knowledge – Spreadsheets or limited database

ð       The data will be used for an extended period of time but not be protected from unintended alterations and its meaning will be highly dependent on external context and knowledge – Database with limited schema

ð       The data will be used for an extended period of time, protected from unintended alterations, with meaning that is not dependent on external context and knowledge – Database with well designed schema

Recovery of the Data

ð       Data loss will be unrecoverable but not important

ð       Data will be backed up periodically (days/weeks/months) or on request to allow recovery of data if a problem occurs

ð       Data interaction will be fully recoverable requiring an administered transactional database system

Data Processing Requirements

ð       System will process no data or small amounts of data and performance will not matter

ð       System will process data but will not be time sensitive

ð       System will process small volumes of data and will be time sensitive

ð       System will process large amounts of data and will be time sensitive



Software Architecture

ð       The architecture is not important – no consideration will be given to a proper architectural design

ð       A new unknown (to the development team) architecture will be created without resources given for proving out the design

ð       A new unknown (to the development team) architecture will be created with resources given for proving out the design

ð       System will be built of a known architecture which has been used previously

System Complexity

ð       Complexity of the system and software will not be a consideration – Software will tend to extremely complex even for simple systems

ð       System complexity will not be important as long as the code is readable

ð       It is desired that reducing the system complexity will be considered a significant factor as part of the design

ð       The system must be simple and easily understandable – Requires developers with considerable experience

Development Tools

ð       Development is not dependent on usage of particular development tools – development group is free to choose highly effective tools without consideration of cost

ð       Development is not dependent on usage of particular development tools, but development group must take cost of tools into consideration

ð       Development is dependent on usage of particular development tools, but the development group is free to choose the most highly effective tools within the dependency set without consideration of cost

ð       Development is dependent on usage of particular development tools, and the development group must take cost of tools into consideration

ð       Development tools must be free of cost even if it greatly increases development costs

Development Support Requirements

ð       No support of the system will be necessary after delivery or will come at significant cost and will not be timely – Zero support requirements

ð       Support of the system will likely be necessary but the cost must be minimized at the expense of timeliness – Volunteer support

ð       Immediate support of the system will be necessary but at lowest possible cost – Dedicated Volunteers or paid Intern support

ð       Immediate support of the system will be necessary even at higher cost – Dedicated professional support required


Read Full Post »


Microsoft has a distinct advantage over its competitors because it uses its own tools to create its products.  Historically, its only perceived meaningful competitor was Borland, which was why Microsoft was so joyous when Borland became irrelevant.  Even so, Microsoft has been able to use Office and Windows as smoke screens for its actual intentions – domination of the internet.  Described here is how I perceive Microsoft intends to accomplish this.

The public concept of the Internet changed in 1995 from being an interconnection of networks and associated tools to being viewed solely as the World Wide Web.  News groups, gopher sites, and telnet bulletin board systems were the main applications of the internet prior to that time.  The web was introduced almost as a logical replacement of the menu based gopher servers with hyperlinks instead of the gopher menus for navigation.  It is no wonder that Microsoft was not the first on the web bandwagon, but the introduction of WPF and XAML clearly signifies a change.  If Microsoft is successful in implementing its strategy, the public’s perception of the Internet will change from a data dominant format (web pages) to an application based format (WPF applications).

WPF and XAML are not about making web pages more interactive or flashy but are intended to obsolete web pages.  Instead of trillions of documents linked together, the web would be replaced by seas of Internet applications.  These applications will use REST based web services for interaction instead of HTML hyperlinks, eliminating the need for web search engines.  The internet will slowly become opaque to the search engine crawlers because interpreting XAML application code will not yield the same sort of meaningful results generated from HTML documents.

The introduction of WPF will generate a market for off the shelf internet applications that never fully existed with HTML.  The imposed connectionless nature of HTTP that hampers HTML is removed along with gaining the abilities to easily use local processing and storage. This removes the significant privacy concerns that many users have related to web sites while significantly reducing the need for web server capacity.  WPF enables the creation of new forms of internet applications.  For example, instead of newspapers maintaining their own separate websites, a single internet application could be created to access all media content.  But, how would internet applications be found if they are not searchable through Google? 

Microsoft has failed to establish a portal website and search site, so the next logical step is for Microsoft to buy an already established world-wide internet portal (i.e. Yahoo).  Microsoft’s “willingness” to walk away from the purchase of Yahoo is likely a ploy because the long term success of Microsoft strategy is enhanced by the acquisition of Yahoo’s portal and advertising knowledge.  But even if Microsoft is unable to purchase Yahoo, WPF and XAML are not only positioned to replace web and client applications but will also add dramatically to their capabilities (especially in the area of graphics and media).  Microsoft could have rolled out a reduced version of WPF and XAML years ago, but they have waited until the WPF/XAML technology is mature enough to crush anything that is possible with HTML.

Microsoft may know how to execute in the business software arena, but it will have to buy its way into an advertising strategy.  If acting quickly, Google could trounce Microsoft by using Microsoft’s own strategy.   They could embrace WPF to build an ad-based office killer, along with a market place for ad-based internet applications.  This would surely demoralize Microsoft.

The media’s claim that Google and Microsoft are competitors has always puzzled me.  What market does a “search engine/advertising” company and an “operating system/business software” developer share?  The talk from the media was mostly about Google’s threats into “Microsoft territory” (office, exchange, outlook, Windows, etc), but I have never heard about how Microsoft could damage Google. Microsoft attempts so far with search engines and advertising have not yielded Google-like results.  Until recently, I would have considered Google as benefiting from Microsoft’s dysfunctional strategy.  The new strategy to become an “internet business software/advertising” company almost certainly threatens Google.

Google is a powerful company that makes money from advertisements usually attached to web search results.  If Microsoft executes its strategy, then Google’s core search engine business might erode, but Google would not go down without a serious fight.  They have positioned themselves on the moral high ground and will perceive any fight with Microsoft as honorable.  It is believed by many that the slow death of Windows is starting to occur.  The limiting factor for Windows is not technology or lack of innovative ideas but legal constraints.  Likewise, the functionality of Microsoft Office has not significantly changed this decade.  If both Windows and Office are entering the end of life stage, then this is the time for Google to strike before Microsoft executes on its next strategy.

Why should Google take on Microsoft and not IBM, Oracle, or some other technology leader?  Beyond Yahoo, no other technology company could execute on an Internet application strategy as effectively as Google.  Yahoo has the internet presence but ultimately will become part of another company, which is likely why Microsoft is attempting to purchase it.  Yahoo merged with a company such as IBM would definitely make for an interesting alternative, which is something that Microsoft would want to block it.

Will Google use WPF or ignore it like they do with all other Microsoft tools?  There is a powerful emotional argument that can be made for Google to ignore it. 

Building applications with HTML is similar to building an application within a word processor.  HTML was created for document publishing and linking, not for interacting with users and executing processes.  Simple tasks accomplished with application code running locally often take heroic efforts to duplicate within a web page.  Web page development tools have become increasing better at hiding the underlying nature of HTML from the developer, but it is impossible to escape the nature of HTML completely.  Google Maps is an excellent example of this because it is an incredible web site, but the extraordinary effort Google took to develop it should not be understated.  If that same effort was applied using WPF/XAML instead of HTML, its name could be changed from Google Maps to Google GIS.

If HTML is a poor application development environment, then why are web applications so successful?  If your only view of the internet is as the web, then you are missing the bigger picture.  The Internet itself grew exponentially in the last decade and the web and email were the most accessible means for businesses to interact with customers, so they naturally grew with the Internet.  FTP, Telnet, Gopher, Usenet, MUDs, IRC, and other Internet applications have all but been ignored because businesses could not figure out what to do with them (although IRC is making a resurgence in the form of instant messaging).  There is nothing fundamentally special about HTML that inhibits it from also being replaced.  HTML is only dominant due to the network effect, and its replacement will likewise dominant the internet landscape.

Internet applications could alter the current supplier-customer relationship.  Purchasing through the internet usually requires transmittal of credit card information across the internet to the supplier or a third party.  Client side Internet application would remove this requirement as the client application could directly interact with the credit card company.  This would benefit both sides as suppliers would no longer need to deal with individual payments directly and customers would benefit by not having to transmit their personal credit card information to a third party.

Internet applications can also use client side processing and storage.  Data processing local to the client (e.g. graphical rendering) could be done with the client’s resources.


Imagine web applications that can securely access your organizations data directly!  The application code could be developed and maintained off-site without the data ever leaving the organization’s premises.  Unlike a website, the application would even be available if there was a problem with the Internet external to the organization.  Until now, to gain the benefits of browser based applications required either giving up control over the organization’s data or setting up an internal web server farm.

(work in progress…)

Read Full Post »