Software design and development
Software is an application program i.e. coded commands that allow users to perform number of specific tasks. Most of applications include business software, educational software, medical software, databases, and computer games. Software applications are mostly used in businesses, but now days it is used in each human activity. A software system consists of executable source code and Compiler and operating system to run that software and documents to manufacture, use, and maintain the code. Software development comprises number of tasks to develop complete software:
System Requirement and Analysis (SRS): The very first stage is system requirement and analysis. Under requirements analysis main aim is to define what are the user's requirements, what the user want the system to do? Study the old system to know the system exactly. What should be needed to develop the system? Is it cost effective, what function the system performs? This involves asking questions to the customers, users and others about the system, what is to be accomplished, how the system fits into the needs of the business and finally how the system will be used. Keeping all this in mind the requirement analysis report is made and if the user approves that report then jump to feasibility study.
Feasibility Study: Feasibility study is done to check and document project's viability. Check weather it is feasible or not to design the required system. It is just an analysis of possible alternative solutions to a problem and select the best solution. Within a feasibility study, six areas must be reviewed, including those of Economic, Technical, Schedule, Organizational, Cultural, and Legal. For example: whether the project has higher priority and profits than other projects that might use the same resources? How difficult it will be to build, and whether the firm has enough experience using that technology? On the basis of results of feasibility study one can decide whether to proceed with the project, or not.
Design: In the design stage, first plan is made for how the system is designed. What will be the time period? What modules are to be designed? The plan is expressed using a design method and notation. Many methods and notations for software design have been developed. Which approach is suitable, top down or bottom up approach? Each method focuses on certain aspects of a system and ignores or minimizes others. So to choose best method is main task, then divide the problem to small modules. In design phase the DFD (Data Flow Diagram) Report is produced and is checked weather it meets user's requirements or not, If yes then jump to coding phase.
Coding: The coding phase of the software life cycle is concerned with the development of code that will implement the designed modules. The whole design is divided in small modules that perform specific task and coded. After that they are linked together to perform the required user task. The code written is called source code and language used to write that code is High-level language. The choice of language used may be an individual's choice or may be decided by company. Ideally the programming language best suited for the task at hand will be selected. After compiling that code the code is converted to low-level language i.e. Machine language and the data is input and user get the required results. If the results are according to the requirements then jump to testing.
Testing: Testing is the process of Verifying a software product to find bugs. Testing has two goals find bugs and demonstrate correct execution. During testing the whole software's modules are tested using different data sets. Testing is performed at unit level and module level, known as unit testing and integration testing respectively. Testing is done at both ends i.e. at developer's end and other at user's end. There are two types of testing Black Box and White Box testing.
Black Box Testing: In Black Box Testing the whole system is tested as one complete system. For example, when black box testing is applied on the software, the tester would only know the inputs and what the expected outputs should be, but not how the program actually outcomes those outputs. That's why black box testing can be considered as testing with respect to the specifications; no other knowledge of the program is necessary.
White Box Testing: White box testing is also referred as glass box, structural, clear box and open box testing. Various software testing technique whereby explicit knowledge of the internal workings of the item being tested are used to select the test data. White box testing uses specific knowledge of programming code to examine outputs. The test is accurate only if the tester knows what the program is supposed to do. He or she can then see if the program diverges from its intended goal. White box testing does not account for errors caused by omission, and all visible code must also be readable.
For a complete software examination, both white box and black box tests are required.
Maintenance:
During maintenance various tasks performed are:
- Correct errors
- Correct requirements and design flaws
- Improve the design
- Make enhancements
- Interface with other systems
- Convert to use other hardware
- Retire systems
- Major aspects
- Maintaining control over the system's functions
- Maintaining control over system modification
- Perfecting existing acceptable functions
- Preventing system performance from degrading to unacceptable levels.
Maintenance is of three types:
Adaptive: To Adapt the System in new environment i.e. change of operating system, change of hardware etc. All these tasks come under adaptive maintenance.
Corrective: If the system starts malfunction, i.e. it does not work properly then to correct the errors and set the system to perform the right task. All these tasks come under corrective maintenance.
Enhancing: To add new modules to the previous software, Just to enhance the functionality of the system. All these tasks come under enhancing maintenance.
|