UNIT 4: SYSTEM DEVELOPMENT -(PROGRAMMING AND TESTING) WEEKS 7 & 8
The System Development Phase features a key step in the SDLC, that is building the program (software), which includes programming and testing. The previous phases lay the foundation for system development; the following phases ensure that the product is developed and functions as required. The output of this phase is a working software, ready to be deployed
After getting the design or blueprint of the proposed system from the design phase, it is converted into a suitable computer program. This is known as programming or coding. It is the process of translating the system specification into program statements or codes. The programming is done to conform to the detailed design carried out at the system design phase. Depending on the nature of the project, the programming may be done by a number of programmers may be constituted to write the program. It may also be outsourced to a consultant whose job is exclusively to develop programs. In some situations too, a decision may be made to purchase already existing software, if it meets the requirements established by the designs.
Therefore programming sub-phase comes in when the organization decides on bespoke software instead of going for an off-the-shelf application package. A bespoke software refers to a tailored made software that matches exactly the client’s needs, it is designed to fit the client’s requirements. Bespoke software offers a variety of benefits over the off-the-shelf software, especially in customization, scalability and security.
An off the shelf application package on the other hand as the name suggests, is ready to use software right after it has been purchased. It is a product developed for the mass-market, which means it is expected to respond to the needs of as many users as possible. Though it may offer many more features than a bespoke software, unfortunately, off the shelf application package often does not meet the exact expectations of users.
Characteristics of High-Quality Programming
Though Coding methods vary from programming language to programming language the following are the fundamental the characteristics of high quality codes and should be noted if the program is to be developed in-house.
- Maintainability: This means it is easy to find and fix bugs (errors), as well being easy to add new features as and when required.
- Readability: This denotes how easy it is to read and comprehend the logic of the
- Understandability: This should not be confused with readability. Understandability means the ease at which the program logic can be comprehended.
- Reusability: High-quality coding/programming is one where the developer has made it easy to reuse parts of code, e.g. functions, classes, data structures, etc., in other parts of the program.
- Robustness: This is where the program codes can handle unexpected inputs and conditions
- Reliability: This denotes the situation where the code is unlikely to produce wrong results. This means the codes can be relied on because it either works correctly or reports errors to the user of the software.
In as typical SDLC, the project team will be faced with the decision either to develop the software using their team members or they should buy an already made software. This is referred to as the make or buy decision. When they decide to develop the software themselves as part of the project, that software is called in-house or bespoke software. In-house software is a software developed within an organization for their specific use with their own resources, such as personnel, ICT equipment, etc. It is a tailored software developed with a specific organization’s needs in mind.
Advantages of Developing Software
- The software meets the needs of an organization as it is designed with specific purposes by the staff of the organization who understand the internal operation of the organization.
- It is well documented.
- It is flexible to modify, customize and easy to use.
Disadvantages of Developing Software
- It may take a long time to develop software, as compared to other forms of software. This may be due to the fact that the developers may be involved in other official jobs, which may cause distractions.
- The total cost of software developed is high since it takes a long time to develop it. It is also because the entire cost of the software development is borne by the organization alone.
- Because the software is developed for use within an organization, it is usually used and understood by a few people.
APPLICATION PACKAGE SOFTWARE
An option of developing a system is by purchasing an application software package. Application package software, or simply an application package, is a collection of software programs that have been developed to be sold to third-party organizations. Application packages are generally designed to support commonly performed business functions and appeal to multiple types of user organizations. Although the package can be tailored to an organization’s specific needs by changing some parameters, the software itself is not designed with a given organization in mind, unlike custom-designed software.
Information systems developers have taken advantage of the fact that organizations have and do a lot of things in common. They have thus developed a lot of software for various uses such as for accounting, payroll, inventory, ticketing, billing, accounting systems, human resources software and enterprise resource planning (ERP) software and are being offered for sale. Thus organization may decide to opt for these prewritten and pretested software packages if they meet their requirements.
Advantages of Application Package Software
- Application packages are readily available to implement after they have been purchased, since the application package is available in the finished form.
- It is quick and easy to install.
- Usually, the quality of application packages are good since the firms engaged in the development of packages have a lot of experience and are specialized in it.
- Software costs are minimized as more copies are sold. This makes packages cheaper than in-house software
Disadvantages of Application Package Software
- An application package may be slow in terms of execution.
- The package may not fully meet the needs of an organization since it is a generic software.
- It may be poorly documented.
- Some application packages lack after sales support.
Factors to Consider When Evaluating an Application Software Package
- The functionalities of the software: It is important to establish the functionalities of a package before a decision is taken on it as a software may not perform the function it is supposed to do or it may perform it in a manner unacceptable to the user. The best way to ensure the software will perform as desired is to use the software on trial basis.
- Flexibility of the software to modification: The software should be adaptable to a wide variety of modifications to suit different user-related situations.
- User-friendliness of the system: The package should be straightforward, clear, simple and easy to remember; the display should be attractive, clear and it should operate quickly.
- Hardware and Software resources required by the system: Software vendors usually
specify the systems requirement of the software to ensure the optimal performance of the software. It is therefore essential for you to know that the software’s system requirements are in line with your ICT equipment and operating system.
- Cost of the software: Compare prices from different vendors and bargain for a good
- Documentation: Without adequate documentation, not much can be derived from
even the software. A good documentation is supposed to describe what the software does, how to use the software, how to recover from errors, etc.
- g. Maintenance Support: It is essential to know the kind and quality of maintenance
supports that vendor of the package offers to their clients.
- h. Purchase from a Reliable Store, Distributor or Vendor: It is good to purchase a
software from a trustworthy source with a track record to deliver after sales support
Testing is an activity to check whether the actual results match the expected results and to ensure that the software system is defect free. The main principle of testing therefore, is to find defects by subjecting the software to different conditions for corrections to be effected. Before implementing the new system, series of test runs are done. Testing is very important for a successful system development.
Testing is done in a planned way by constructing test cases/data. Test data should contain both correct data and erroneous data and should test all possible situations that could occur. The output of the program for each test data is compared with the expected output to know whether there is any defect or not. If the output of the program matches the expected output, then there is no defect.
The role of users in testing is very important as they understand the nature of the data and how they expect the data to be processed within the system. Users are also in a position to come out with unusual and less common data, which are needed to test how the program performs under such conditions.
The following basic testings are done at this phase before a system is deployed:
- Unit testing.
- Integration testing.
- System testing.
- Acceptance testing.
- Alpha testing
- Beta Testing
Unit Testing: In programming, a unit may be an individual function or procedure. Unit test, therefore, is testing each program separately in the system. It thus denotes the testing of an individual unit. The goal of unit testing is to isolate each part of the program and show that the individual parts are correct and devoid of errors. The programmer usually performs unit testing.
Integration Testing: Testing the individual programs does not guarantee that the data passed between them is correct. Only by performing integration testing for programs can one ensure that the programs work together properly. Integration Testing is thus an extension of unit testing in which the individual modules of the program are combined and tested as a group. The interaction among the various subsystems of the system is tested. Integration testing is normally done after unit testing.
System Testing: System Testing checks complete end-to-end scenarios in a way a user would use the system. System testing is thus the testing of the whole system so as to determine if the units (modules) work together as desired. All processing options and outputs are verified by users and the IT project development team to ensure that the system functions correctly. System testing tests not only the design, but also the behaviour and even the expectations of the customer.
Acceptance Testing: An acceptance test is carried out to provide final certification that the system is ready to be deployed live. It is usually done at clients’ location, by the user, once all the bugs found in system testing phase have been fixed. The main purpose of acceptance test is not to find defects but to check whether the system meets the requirements of users for their organization to determine whether they should accept the delivery of the system. The system is accepted for installation when all stakeholders are convinced that the system meets the set objectives set at the analysis phase. In some cases (e.g., a major corporate or governmental system) acceptance testing can be very formal and encompass many days or even weeks of testing.
Alpha Testing refers to the system testing carried out by the test team within the developing organization (i.e. at the developer’s site). It is done by the team at the end of the software development phase and before beta testing is done with the users.
Beta testing is the system testing performed by a select group of users. Beta testing takes place at customers’ sites, and involves testing by a group of customers who use the system at their own locations and provide feedback, before the system is released to other customers. Beta testing is often called ‘field testing’
Black-box and white-box testing are two common approaches to testing. Black-box testing is not an alternative to white-box techniques. The two approaches are likely to find different class of errors and thus both methods are used during SDLC.
In black-box testing, the internal logic of the software is not looked into while testing. The testing is done by entering input data and checking whether the output obtained is per requirement or not. Black-box Testing therefore just focuses on inputs and output of the software system without bothering about internal knowledge of the software program. Here, test cases are designed from users’ requirements.
White-box testing, sometimes called glass-box testing or structural testing is a testing technique that designs test cases based on the information derived from the source code. Usually white-box testing is done by the developer of the program who knows what the code is and therefore the right person to generate test data. It provides more information on the tested object than Black-box testing. However, it is an expensive test method.
QUALITY ASSURANCE (QA)
An important activity that goes hand-in-hand with testing is quality assurance. QA is the review of system or software products and its documentation for assurance that the system meets the requirements and specifications. Software Quality Assurance (SQA) is a technique that includes procedures and tools applied by software professionals to ensure that software meets the specified standard for its intended use and performance. It reviews and audits the software product and its activities throughout the life cycle of system development. The main aim of SQA is to provide proper and accurate visibility of the software project and its developed product. The purpose of QA is to provide confidence to the customers through the constant delivery of products according to specifications.
Objectives of Quality Assurance
The objectives of conducting quality assurance are as follows:
- To monitor the software development process and the final software developed.
- To ensure whether the software project is implementing the standards and procedures set by the management.
- To notify groups and individuals about the SQA activities and results of these activities.
- To ensure that the issues, which are not solved within the software are addressed by the upper management.
- To identify deficiencies in the product, process, or the standards, and fix them.