3.2.6 Hardware and Software Factors associated with Design



Customisation of existing software solutions

Many custom off-the-shelf (COTS) packages allow customisation using a programming language included as part of the COTS package. 

These languages allow developers to include features not included in the original package.



Selection of language to be used

Algorithms should be written in such a way that they could be implemented in a variety of languages. 

The most appropriate programming language should be selected after considering each of the following criteria:

  • Is the programming logic driven by the user or by the programmer?
    • The answer to this question will determine whether the language selected should use 
    • an event-driven approach or a sequential approach.
    • Event-driven languages allow the user to choose the order in which processing 
    • occurs. For example, a Word Processor is clearly an event-driven piece of software.
    • Sequential languages ensure that the software executes in a distinct order. The 
    • programmer determines the order of processing when writing the software. The user 
    • must follow a distinct route through the software.
  • Does the language provide for all the required features of the solution?
    • The reason so many programming languages exist is that solutions to different 
    • problems require different features within languages.
    • Careful consideration of features required to implement a solution, and an intelligent 
    • selection of an appropriate 
    • more efficient final products.
  • What hardware and operating system ramifications are there?
    • Many programming languages are designed for particular operating systems. As operating systems are specific to particular types of hardware, the programming language selected will most likely have hardware ramifications.
    • This problem is particularly prevalent when using COTS (Customised off-the-shelf) packages as development tools. Most COTS packages are designed to operate under a specific operating system.
  • Is a graphical user interface (GUI) required?
    • For personal computer-based applications the use of a standard GUI is almost obligatory.
    • Software products that operate with minimal user interaction are often best developed without the extra overhead of a GUI interface.
  • What is the experience of the developers?
    • The first programming language learnt by a developer is always the most difficult. As developers become proficient in further languages, the learning curve flattens.
    • Nevertheless, learning a new programming language is a difficult and time-consuming task. Before deciding on a language for implementation, the experience and expertise available within the software development team need to be examined.
    • If a new language is used, then development times will need to be extended.

All these questions need to be considered carefully.



Factors to be considered when selecting the technology to be used

Throughout this chapter our focus has been on the correctness, efficency and performance of algorithms

Clearly enormous performance improvements can be achieved when algorithms are improved, such as changing an algorithm from O(n2) complexity down to O(n) complexity. 

However algorithms do not govern performance alone. The various other technologies including hardware and software will of course have a significant impact. 

Many software projects are part of complete new information systems, therefore the system designers have control over all the software and hardware components that will be used. 

For software only projects the selection of an appropriate programming language is within the control of most software developers as is the target operating systems and some general or recommended hardware requirements.

Consider:

  • Performance Requirements
    • The specific performance requirements should be established so that tests can be developed to ensure these requirements are met.
  • Benchmarking
    • Benchmarking a product is the process of evaluating the product by comparing it to an established standard.
    • When other competing products are also compared to the standard then it is possible to compare the competing products.
Comments