Software development

I am a second-year computer science student. In the future, I may go into software development as a career. There are different process model for developing a software, but all of the models have the following state, requirements analysis, software architecture, implementation, testing, and documentation. Requirement analysis is developing a set of requirement that the piece of software needs to produce, usually is develop from having a conversation with the customer, to have ideas on what functionalities does the customer want the software to do. Software architecture is the design of a piece of software, before starting to make the software. It may be in varies of forms, like tables, graph, and diagrams. The design may be changed as the software being develop. Implementation is the actual production of the software,  need to be careful on working with the architecture design, and if a problem is found from the architecture perspective, the software design has to change before the change of implementation. Testing is to test the error that is in the program, there is no program that has absolute no error, but the early the error were caught, the less cost of the development of the software. Documentation is the most important about the process of developing software, a good documentation can easily communicate and work with different software developer, the easier the software developer learn a piece of software, the faster they can use the software to connect with their own software.

There are many different process model to develop a piece of software. The process depends on what the customer is looking for, instead of one universal process that every software developer put in to process. Some project may have more time to develop a software, by doing many tests and re-work to program, some project may be a bit urgent, the customers need the project done as soon as possible, and  some project may be too expensive to do the test, the developer need to be more careful on the design and implementation aspect of software development.