Advanced Software Design

Software Licensing Schemes

Software Licensing Schemes

  1. Traditionally, software licenses have been sold on a “per seat” basis. Customers own each license they purchase, but they must adhere to its usage provisions. In most cases, customers also own the media that the software comes on. In all cases, the developer retains ownership of the copyrighted software code.
  2. When the software is revised or modified, customers are encouraged to purchase upgrade licenses so they can make use of the new features. Many customers find it more convenient to purchase subscription licenses instead of individual version upgrades. Subscriptions allow customers to receive all upgrades within a given time period.
  3. Software rental is a variation of the traditional licensing model. Under this scheme, software “times out” and can not be used beyond a specified date. Software rental is a glorified “pay-for-use” scheme. Despite their relatively high cost, software rental schemes allow customers to use the software for only the period of time they require.
  4. A refinement of the software rental scheme is the “pay per use” scheme. Under the “pay per use” business model, customers would only be charged for the time they actually spend using the software. They would not be charged for idle time. Microsoft among others (e.g. @Home), is currently experimenting with the idea. Competition being what it is, other software companies can be expected to follow suit. Pricing policies have not yet been established. When they are, AE firms should determine if the scheme makes economic sense. This software marketing scheme has been promulgated in part as a response to the “free internet software” movement mentioned elsewhere in this document. Some pay-for-use schemes require users to have internet access so the software company can monitor its use. It remains to be seen if software developers will continue to market pay-for-use products through retail outlets. It is more likely that software developers will prefer to build internet based applications that can reside on their own web servers. This may make monitoring very easy for the developer.
  5. Software covered under the traditional and pay-for-use licensing schemes can be loaded on stand alone workstations or network servers. More recently, both licensing methods have been adopted for use over the internet. Customers are being offered pay-by-the-minute access to remote internet sites. Traditional licenses are also being sold for the same internet software so customers can “self host” the software on their own intranet site.
  6. Variations on all these schemes are currently being offered by many of the large software companies (i.e. Autodesk, Corel and Microsoft). We can expect to see this trend continue to develop in the future.
  7. Note the continuing popularity of “open source” (i.e. free) software. As the use of Java and other object oriented languages takes hold, the push toward reusable non proprietary software code will intensify. Such a movement will foster the development of on-line (i.e. Internet based) software libraries and repositories.
  8. The continued consolidation among computer manufacturers will lead to increased reliance on branding to differentiate products in the marketplace. In the future, fewer manufacturers compete for market share.
  9. Note the continued practice of periodic upgrades and regular product releases. This practice has a direct impact on an AE firm’s budget planning process.
Software Complexity

Software Complexity

The trend toward increasingly complex software will continue. By the year 2010, many software packages will include 10 million lines of code. Some software packages will include 100 million lines of computer code. Computer-Aided Software Engineering (CASE) methods will slowly evolve as new languages and programming approaches are developed. By the early 2010’s, most commercial software packages can be expected to include 5 million lines of code. Large military software packages will exceed 100 million lines of code. Large enterprise sized commercial software packages will exceed 400 million lines of code.

Artificial Intelligence

Artificial Intelligence (AI) and Expert Systems

Artificial Intelligence is a branch of computer science which is attempting to emulate human-like thought processes on a computer. Its current focus is on “rule-based” software which models the human decision making process. The technology has advanced to the point where these Expert Systems are able to infer or deduce solutions to problems for which they have never been given an explicit formula. This represents a significant theoretical and technological breakthrough. Ultimately, AI techniques should make computers easier to use because they could in theory, understand the implied wishes of users. AI has been around for some time but is only now emerging as a practical technology due in part to the recent advances made in micro-chip design (see 32 bit micro-processors & Memory chip advances above).

The widespread availability of very high speed computing will spur increased development of Artificial Intelligence software in all areas of human knowledge. The decision making capabilities of computers will become increasingly impressive as these systems incorporate complex expert systems, inference engines and neurocomputers. (excerpted from an article by James Martin entitled “Applied Intelligence: Modeling Technology for the 21st Century” printed November 14, 1988 edition of PC Week)

Practical applications might include such things as:

  1. Difficult architectural skills will become automated. The first true computer-aided design software will begin to appear within 2 – 5 years.
  2. The first true electronic sketching systems will begin to appear in the not too distant future (3 – 5 years).
  3. A new generation of easier to use business software will be introduced within 2 – 5 years.
Object Oriented Programming

Object Oriented Programming

Note the triumph of Object Technology. Objects in files, increased interoperability of software (ability of software to share and manipulate objects created by other software applications) coupled with the increased number of data appliances that are seen as network objects means tighter integration of data systems becomes possible. The networking paradigm will become plug-in modules that identify themselves as they plug-in to networks. The network thus becomes smart enough to be infinitely re-configurable on the fly (i.e. objects seeing objects).

Aspect Oriented Programming

Aspect Oriented Programming

Object Oriented Programming may soon develop into “Aspect Oriented Programming”. Aspect Oriented Programming allows developers to create a custom software application using computer code from a variety of different programming languages. Programs created in this manner are situationally aware and self-optimizing. They can detect which computing environment they are operating within and activate relevant portions of their code.

Software Deployment Styles

Software Deployment Styles (Network vs. Stand-Alone Software)

The benefits of using server based software include:

  1. Use of server based software will reduce an organization’s overall training cost. The use of server based software tends to reduce the number of software titles deployed by an organization. Reduced software diversity allows more in-depth training for the smaller number of software packages deployed.
  2. Increased reliance on server based software will make the use of network management tools more effective.

The benefits of Decentralization include the following:

  1. Stand-alone software does not have to be retrieved from a central location on the network each time it is used.
  2. Stand-alone software does not generate a great deal of network traffic (i.e. less bandwidth required compared with network apps).
  3. End-users have greater control of the configuration of their workstation.

“Centralization vs. Decentralization of Application Software” by David Schuff & Robert St. Luis; Communications of the ACM, June 2001 (Vol. 44 Number 6)

(Previous Page)(Next Page)