“Software is a great combination between artistry and engineering” Bill Gates
In this section we will explain what software means in general and the other names that point to the same concept in the world of computers. Also we will explain the typical steps that a developer or a team of developers take in order to build software.
Software is a set of instructions written by one or more developers (programmers) in order to be run by computers.
There are also other names that point to this concept:
-
Application
-
Service
-
Process
-
Web-service
-
App
-
Program
All of these names have one thing at their core and that’s the programmer’s source-code that has been written to solve a problem in real world with the help of computers.
Note: between all these words, the word “Process” and “service” are specially used more than others between programmers so make sure you remember what these words mean when developers mention it in day to day conversation. Also there’s a difference between the word “process” and the word “Processor” (which is the actual module in your computer that is basically the brain of your computer and calculates and run instructions of a Process).
Also usually the word “service” means a subpart of an application. For example consider Microsoft power-point. The power-point is an application or software. But when we run the application, there are multiple services each taking care of part of the application. Like one service in the application help to change the style of each slide, another service is in charge of font modification (size-changing, bolding, italicizing etc.) and other services which together they represent the software.
In order to build an Application there are typically 7 steps that a developer takes:
-
Define the program’s objectives
-
Design the program
-
Write the code
-
Compile
-
Run the program
-
Test and debug the program
-
Maintain and modify the program
-
Define the program’s objectives:
In this stage of developing a program, you need to think why do you want to build this program in the first place? What’s the real world problem that you’re trying to solve? What type of data you need for your application and what’s the output of this application?
At this stage of development, there’s no need to think in terms of programming language. All you do is to create a general view of your application and what it should be at the end when it is built.
-
Design the program:
We’re still designing and not writing code at this stage. This is the stage where parts of your program should be more detailed and clear than the overall view of it.
For example, you should consider how the input data are going be add to your application? Is it going to be via the Internet? Is there a part of the application that needs data to be added directly from users? If yes, how’s the interface of your program? Does this application need to store user’s data? If yes, then what type of Database suits your need? What type of services your application provides for users? How these services communicate with each other? Is there a security risk in your application that needs to be taken care of? If yes then you need to think in terms of the how-part?
You also need to think about the type of programming language that can do the job better than the others. Sometimes you even need multiple programming languages for an application to be built.
…
The more questions you ask about your program, the more detailed and clear picture you’ll get about most parts of it.
-
Write the code:
Now that you have a clear design, it’s time to build the program using the languages of choice. At this stage you need to put your knowledge or the language to work.
-
Compile:
After you’ve written down the code of your program, it’s time to compile it. You’ll learn more about compiling in compiling section but in short, compilers are programs that take the developer’s source code and convert it into executable code which is a type of code that machines (computers) do understand and can run.
-
Run the program:
Now that we have our executable code, we should run the program on different platforms (like Windows, Mac, Linux etc.) in order to make sure the program does work on these platforms as well.
Note: sometimes we write our application for just one platform (for example Linux only) which in that case we only need to run the program on that platform only so to make sure the application runs correctly.
-
Test and debug the program:
This is the stage where you need to microscope your application. You see no-matter how professional a developer is; mistakes always happen. So here we should check the program (every service it provides) and make sure all services are working correctly as expected.
-
Maintain and modify the program:
When you built your application, you’ll probably find reasons to make changes in it. Maybe there’s a minor bug shows up in one or two services of the application based on a specific situation that you didn’t saw when you were debugging the program. Or you might see a new feature that can bring more advantage to your application.
All these changes to the application are considered to be in the category of “Maintenance” which happens pretty much for all applications and yours is not an exception.
Also remember that these stages are not strict! Sometimes when you’re at “write code” or “Debug” stage, you’ll see a reason that the entire application needs a re-design. In that case you can simply back to the first stage and do the necessary modifications and move to the next stages.