Information Technology and Ethics/Steps for Software Development

The software development life cycle is the process of developing, testing, implanting and maintenance of software.

Information Gathering and Planning
This is the first step in software development, in which teams gather the business requirements. At this phase, the primary emphasis of the project team and project managers is to identify the specific features required from any program under consideration. Clients give programmers an abstract view of what they need the program to do, at this time IT Professionals communicate whether or not the client's specification are able to be reached. Sometimes Clients have requirements that contradict one another and this may make it difficult for the programmer to do their job. At this point, it may best for the programmer to provide the client a demonstration of code to communicate better what the client wants or expects. Scope document states what the client expects from the project, describes the objectives and costs. If the project is developed outside of the company or organization the scope could be used as a legally binding document. The scope should contain the following: Programmers may also want to review current systems (if any) to identify any existing procedures that may continue in the new system. During the planning process IT professionals may want to replace the hardware in order to facilitate the new system.Finally, a requirement specification document is created to act as a guidance for the next stage of the software development process.
 * The Project Name
 * The project definitions
 * The project owner, sponsors, and stakeholder
 * The problem statement
 * The project goals and objectives
 * The project requirements
 * The project deliverable
 * Milestones
 * Cost Estimates

Design
This is the next stage in the software development process. The prototype design for the application is created in this stage using the requirement specification document. System designs aid in the specification of hardware as well as system needs. In software architecture, it also aids in the definition of an entire system. The system design specifications are used as input for the next step of the software development methodology. The testers build test strategies during this phase by describing what to test and how to check it.

Development and Testing
During the development phase, IT workers develop system interfaces, screen layouts and how the system would generate reports. Users would then review and approve these features. Software designers may decide to input redundancy has to protect the system from failure if an error occurs. Programmers then complete the program, writes the code and test the software with different testing techniques. The testing ensures the software works as specified in the project scope. If the project fails to meet a milestone, the budget, or the project requirements the clients may sue IT professionals for any of the following:
 * Fraud
 * Misrepresentation
 * Breach of Contract

Implementation, Documentations and Testing
The implementation process begins with the client and IT workers coming together to create a strategy of implementation. Following the receipt of the design documentation for the software to be built, the work is split evenly into numerous parts and modules. This is where the actual code starts. The production of excellent codes by the software developers is the major emphasis of this phase. This is the most time-consuming phase of the entire process. This stage is important for the developers. If anything goes wrong during the testing step, or if any errors are discovered in the codes, the coding process will have to be repeated, and the cycle will continue until the project is completed. All types of functional testing, including integration testing, unit testing, system testing, acceptance testing, and non-functional testing, are completed at this point. This strategy covers the who, what, when, where and how. Then the process of correcting and converting data to the new system begins. Procedures for both users and IT workers are created. Documentation should contain the following: The organization's IT workers and End-users should be trained in the use and maintenance of the new system. The system is then retested to make sure the system works as expected and to discover any bugs.
 * procedures
 * instructions to end-users
 * flowcharts data flow diagrams
 * Archive, purge, and retrieval
 * Backup, storage, and recovery

Maintenance
During the maintenance phase, they correct bugs discovered either through the testing phase or through use by end users. Maintenance may also happen when the companies have new requirements of the system. The maintenance phase may be the most time consuming of all because you may need to add code that does not fit the original design. If the maintenance cost becomes out of control it may be more prudent to rebuild the system then continue with the one currently used.

Ethical Issues in software development process
The demand for morally good software is growing as our dependence on software-supported activities grows. Software companies are finding themselves in a situation where they are being held liable for unfavorable results and prejudices resulting from the usage of software or the development process. Software security is inextricably linked to ethics and professionalism. To protect the public's safety, ethics, and obedience to the law are essential. Any deviation from the principles of ethics and professionalism may jeopardize the system's and hence the public's safety. Organizations that care about their employees' safety should demand and promote adherence to a code of ethics. It should also create a climate where employees may easily utilize, promote, and debate the code of ethics. Because of the gravity of the issue, Safety Critical development teams, more than anybody else, should be aware of their legal obligations when designing software. A safety-critical system is frequently accountable for the user's life or death, which is a huge responsibility.