Chapter 4
System Design & Technology for In House Software Development
What is a System Requirements Specification [SRS]? Functional requirements. Performance requirements. Interface requirements. Operational requirements. Resource requirements. Verification requirements. Acceptance testing requirements. Documentation requirements.
Quality requirements. Safety requirements. Reliability requirements. Maintainability requirements Characteristics of a good SRS. Server Client Model Architecture Design. Advantages of Three-Tier Architecture. Best available Open Source Software & Technology. Advantages of Open Source Software Disadvantages of Open Source Software.
Table of Content
System design and Technology Used for Inhouse Software development Project

System Design & Technology for In House Software Development
4.1 What is a System Requirements Specification [SRS]?
A software requirements specification (SRS) is a comprehensive description of the intended purpose and environment for software under development.
The SRS fully describes what the software will do and how to expect its performance.
A software requirements specification serves as a communication medium between the customer and the supplier.
Upon completion and acceptance of the software requirement specification by all parties, the requirements engineering phase reaches its conclusion.
This is not to say that, after the acceptance phase, any of the requirements cannot be changed, but tightly controlled changes must be made.
Both the customer and the supplier should edit the software requirement specification because initially, neither has the knowledge of what is required (the supplier) and what is feasible (the customer).
Types of Requirements are
1) Functional requirements
Functional or behavioral requirements are a subset of the overall system requirements. System behavior, redundancy, and human aspects use these requirements to consider trade-offs.
2) Performance requirements
All performance requirements must have a value that is measurable and quantitative, not a value which is perceptive. Measurable values, such as rate, frequency, speeds, and levels, state the performance requirements.
3) Interface requirements
At this stage, interface requirements are handled separately, with hardware requirements being derived separately from the software requirements.
Dealing with an existing software system or any requested interface standard is included in software interfaces.
4) Operational requirements
Operational requirements give an “in the field” view to the specification, detailing such things
as:
- How the system will operate?
- What is the operator syntax?
- How the system will communicate with the operators?
- How many operators are required and their qualifications?
- What tasks will each operator be required to perform?
- What assistance/help is provided by the system?
- Any error messages and how they are displayed, and
- What does the screen layout look like?
5) Resource requirements
Resource requirements divulge the design constraints relating to the utilization of the system hardware.
6) Verification requirements
Consider how customer acceptance will be conducted after the project with verification requirements.
Make a reference to the verification plan document here. Verification requirements specify how to measure and verify the functional and performance requirements.
7) Acceptance testing requirements
The acceptance test requirements detail the types of tests to be performed before customer acceptance.
Formalize these tests in an acceptance test document.
8) Documentation requirements
The documentation requirements specify what documentation will be supplied to the client, either through or at the end of the project.
The documentation supplied to the client may incorporate sufficient information as well as user guides and any other relevant documentation.
9) Quality requirements
Quality requirements will specify adhering to both international and local standards.
10) Safety requirements
Safety requirements cover not only human safety but also equipment and data safety. Human safety considerations include protecting the operator from moving parts, electrical circuitry, and other physical dangers.
There may be special operating procedures, which if ignored may lead to a hazardous condition occurring. Equipment safety includes safeguarding the software system from unauthorized access either electronically or physically.
An example of a safety requirement could include the system using a monitor that conforms to specific screen emission standards or the system being installed in a Faraday Cage with a combination door lock.
11) Reliability requirements
Reliability requirements are those that the software must meet in order to perform a specific function under certain stated conditions, for a given period of time. The level of reliability requirement can be dependent on the type of system.
12) Maintainability requirements
Maintainability requirements look at the long-term lift of the proposed system. Requirements should take into consideration any expected changes in the software system, and any changes in the computer hardware configuration.
Characteristics of a good SRS are
1) Complete,
2) Consistent,
3) Traceable,
4) Unambiguous, and
5) Verifiable
System Design & Technology for In House Software Development
4.2 Server Client Model Architecture Design.
Server Client architecture is the Architecture of a computer network in which many clients (remote
processors) request and receive service from a centralized server (host computer). Client
computers provide an interface to allow a computer user to request services of the server and to display the results the server returns.
Servers wait for requests to arrive from clients and then respond to them. Ideally, a server provides a standardized transparent interface to clients so that clients need not be aware of the specifics of the system (i.e., the hardware and software) that is providing the service.
Today, workstations or personal computers often host clients, while more powerful machines elsewhere on the network usually house servers.
This computing model is especially effective when clients and the server each have distinct tasks that they routinely perform.
In university data processing, for example, a client computer runs an application program for entering students’ information. Meanwhile, a server computer runs another program that manages the database in which the information is permanently stored.
Many clients can access the server’s information simultaneously, and, at the same time, a client computer can perform other tasks, such as sending e-mail. Both client and server computers being considered intelligent devices, the client-server model differs completely from the old “mainframe” model. The mainframe model utilized a centralized mainframe computer that performed all the tasks for its associated “dumb” terminals.
Two basic client-server architecture
Two 2-tiers
In a thin client setup, the server performs all the application processing and data management. Fat clients: run some or all of the application logic.
Three 3-tiers
Allows for better performance than a thin-client approach and is simpler to manage than a fat-client approach.
Advantages of Three-Tier Architecture
Developers traditionally use a 3-tier Architecture (3TA) when building web applications. It makes a logical separation between the presentation layer, the business logic layer, and the database layer.
- The main advantage of 3-tier system is that all business logic can be defined once within
the business layer and then shared by any number of components within the presentation layer. - One can make changes to business rules in one place, and they will be instantly available throughout the whole application.
- It is possible to change the contents of any one of the tiers (layers) without having to make
corresponding changes in any of the others - Enables parallel development of the different tiers of the application.
- Complex application rules are easy to implement in the application server. Easy to implement changes
- Superior performance for medium to high-volume environments.
System Design & Technology for In House Software Development
4.3. Best available Open Source Software & Technology
This section will discuss the best available open-source software and technology used in the field of the education sector worldwide.
List of some recommended Open Source Software
- Application software
I. Drupal CMS
II. Open Office
III. Moodle Learning Management Software - Operating systems
I. Linux - Programming languages
I. PHP
II. JAVA - Server software
I. Apache Web Server
II. Tomcate - Database
I. PostgreSQL
II. MySQL
Advantages of Open Source Software
Open-source software is free to use, distribute, and modify. It has lower costs, and in most cases, this is only a fraction of the cost of their proprietary counterparts.
Open-source software is more secure as the code is accessible to everyone.
As bugs are discovered, anyone can address them, and users need not await the next release.
A large community continuously analyzes the facts, resulting in secure and stable code.
Open source is not dependent on the company or author that created it. Even if the company fails, its users continue to exist and develop the code. Also, it uses open standards accessible to everyone; thus, it does not have the problem of incompatible formats that exist in proprietary software.
Lastly, the companies using open-source software do not have to think about complex licensing models and do not need anti-piracy measures like product activation or serial numbers.
Disadvantages of Open Source Software
The main disadvantage of open-source software is not being straightforward to use. Learning open-source operating systems like Linux cannot be achieved in a day. They require effort and possibly
training from your side before you can master them. You may need to hire a trained
person to make things easier, but this will incur additional costs.
Other Chapters of System Design & Technology for In House Software Development
- Art of Shyamalendra Nath Baruah of North Guwahati Assam.
- Software Development Projects by Shyamalendra Nath Baruah
- Assamese Pod Cast by Shyamalendra Nath Baruah
- Co-Founder of HumtyDumty.in & AssamYellowPage.com













