Despite what the general public may think software development is not just throwing code together.
It requires a lot of planning before you actually get started:
Here are some basic steps to developing software:
System Concept: in this step you're brainstorming ideas about the application...d etermining what it should do etc.
Gathering Software Requirements: In this stage you're talking to the client you're developing the software for to determine exactly what is expected
Software Requirements Specification: in this step you write down the what the system requirements are. This document specifies every expectation that you and your client have for the application. It's where you state things like "the application shall do this thing and that thing"...it's where you state what the application does, the technologies that your application is going to be using, and any rules that your application should follow. You can refer to this document at any time to make sure that you're developing what is expected. This is also the step where you decide what type of system your software is going to target: if it's a web application what Server Operating system do you want to use? If it's a desktop application, does it have to be able to run on multiple operating systems? If so maybe you'll chose C++ or Java. The platform that you pick needs to reflect how and where the application is supposed to be used.
Software System Design: in this step your going through the SRS (Software Requirements Specification) and breaking it down so that you know what components you need to develop to make the application work. This is where you outline the classes, functions etc that your application needs to actually work. It's a good idea to use UML (Unified Modeling Language) for this so that you have a clear picture of what needs to be done. You can even use the top-level UML that you produce to show your client what you will be doing...but it's mainly for you as a developer to use so that you know what you need to do and how each component fits together.
Coding/Unit Testing: Now you start actually coding something. This is the stage when you actually implement (code) the classes, functions (etc) that you have outlined in the design stage. You should always be testing. It's a good idea to use unit testing to test each component. You can get the majority of your unit tests from the Software Requirements Specifications that you created.
Beta Testing/Release/Maintenance: At this stage you release the software to the client to try out. You'll probably find a whole bunch of things that need to be modified at this point....it's best to get the client involved with trying out the software before this stage to make sure you're giving them what they want.
Comment