A technical specification describes how the system will be implemented internally. It covers non-functional aspects of the system such as the hardware and software architecture, interfaces to other systems, data base, programming language used, etc. A technical specification document explains the following items.
- Hardware specification
- Hardware configurations for the web server, application server and work stations
- Database specification
- Database management system (For example Oracle, Sybase, SQL Server)
- Database server configuration
- Data structures
- Data mapping
- Database table design and relationships between database objects
- Mirror databases (if any)
- Software specification
- Programming language (For example, Java, C#)
- Database driver used by the application (For example, JDBC)
- Web server (For example, Apache) and its configuration
- Application server (For example Microsoft IIS, Tomcat, Websphere, Weblogic), its configuration and directory structure for the code
- Network specification
- Network Communication protocol
- Routing algorithm
- Security specification
- Authentication and authorization services implemented in the system
- Virus protection software
Most software applications follow some form of MVC (Model View Controller) architecture. The GUI (Graphical User Interface) design specifies the View or presentation layer. The database forms the Model or data access layer. The Controller or business objects layer may have one or more strata. It encompasses the software code that accepts data from the GUI, processes it and stores data to or retrieves data from the database. The technical specification contains details of the application’s architecture and the implementation of each of its components namely the Model, View and Controller (and their mode of communicating with each other). It also describes the query and report generation architecture.
The technical specification of a software system specifies backup and recovery processes. It explains how load balancing and synchronization is done between mirror servers and contains file naming conventions, implementation method for batch processes, mode of interaction with external systems and fault tolerance (failsafe mechanisms).
The technical specification describes services utilized by the system. A service is a specific functionality provided by an external entity to the system through a network. It may be an internet based web service or a service provided by another application within the organization that houses the system.
Load Balancing and Scalability
The hardware and software configuration of servers (such as RAM size, CPU speed, Operating System, hard disk capacity, version of software used, IP addresses) in the development, unit testing, integration testing, user acceptance testing and production environments are charted out in the technical specification. It also explains the scalability of the application or its ability to continue to work well without disruption when the volume of data flowing through the system increases. The maximum load that servers can handle and what should be done if there is a business requirement to increase the load are specified. For example, can the system accommodate more loads of data by increasing the RAM size and processing speed of the application servers or by adding more database servers?
A technical specification is prepared by a technical architect taking into consideration the needs of the business, available budget, time and resources.