Software technology and software development process
Merely learning how to code in a programming language is not enough to be a skilled Software Developer. It would help if you comprehended how to design a program under the OOP, SOLID principles. Then you will not just be a coder who always only knows how to program but will become a developer with decent knowledge in many fields.
What are Coder, Programmer, Developer and Engineer? What is the difference?
Coder writes logical lines with programming language within the required scope. They don't need to know much about program logic. They are provided with the definition of business, flowchart and logic or described in natural languages, pseudo-code, etc., and their goal is to convert it to programming source code.
A programmer is a kind of similar to a coder. But the programmer is the one who solves the problem, provides the business logic for the coder.
A developer not only codes but also participates in every SDLC (Software Development Life Cycle) process. If a project has problems you haven’t found any solution to, developers will analyze and solve them for you. So the developer is a person who is both programming and product development-oriented.
An engineer is a terminology used at the highest advance. This person can operate both at programming, business level, and maintenance. As an excellent engineer with outstanding analysis and complex problem solving, they always get a high salary.
Software development process
We build a house with well-defined phases (foundation, pillar, wall, etc.) and apply technical principles to every stage. Like programming, you create a program through all stages and apply software development methods and rules to each stage. The sequence of those steps from conception to operation is called the "Software development process.”
There are five main stages in the software development process: Analysis, design, coding, testing, and operation.
Phần mềm ra đời dựa trên yêu cầu của người dùng.
The software is establishes based on users’ requirements.
For example, one person wants to have an online contact. In the analysis phase, we do a feasibility study, analyze problems and determine whether the solution was viable. If the answer is practical, it considers a success.
The result of the software analysis phase is the requirement specification to describe the program’s functions.
These features must be stated in verifiable ways. One of the online contact’s functions is the searching ability based on the first names. We can test this function by running directly on the program and searching and testing if the program can work precisely and adequately when a person's name is in the contact, and the person is not in the Contact is typed into the search engine. Those things are part of the Testing phase, which we will talk about later.
In the design phase, we will convert the requirement specification table to a detailed design table. In this phase, we design UI including the following steps:
- Lists screens (view, form, etc.) based on Use Case.
- Draw a chart of relationships between monitors.
- Design objects on each screen (arrange the position of buttons, text boxes, etc.) according to interface design rules.
- Finally, specifying and analyzing how the objects on each screen work.
With the object-oriented design, the result can’t lack the Lists of classes used to meet requirements. We design based on requirements, inheritance knowledge, polymorphism to design object classes, and general modelling using diagrams (UML - Unified Modeling Language).
For example, with the online contact program above, we need those classes like Person, Phone, Group, etc.
Moreover, in some specific programs, we also need to design data layers for the program. The data can be from simple file systems to complicated database systems, then draws the modelling diagram, data specification.
Finally is the handling design for the program. Detail the use-case scripts. The logic flows in the program. And use the sequence diagram for the description.
We perform those designs into a practical program in the coding phase in programming languages like Java, C#, Python, API functions, etc.
Once the code implementation is complete, we reach the testing phase.
In this phase, we run the program with multiple data to test if it runs appropriately according to the required specification.
Two main types of testing for object-oriented programming are unit testing and integration testing.
Unit testing is usually done by programmers, testing each class separately, each function in the source code in an isolated environment. Integration testing helps us test if the classes work properly when put together, and the test takes place right after unit testing. The "immortal" action used to detect and eliminate errors in the design and installation process is called "debugging.” If we find a bug, we must go back to the previous phase to fix and complete the program.
Bonus for you a quote from Dijkstra
“Program testing can be used to show the presence of bugs, but never to show their absence!”
Finally, after the test is completed successfully, we reach the operational phase, when the program will be put into practical use. The most important and most time-consuming thing in this phase is software maintenance. Even after the software is put to use, we almost always have to modify it. Because the customer may request more features or new bugs are found.
Statistics show that approximately 70% of software costs belong to the maintenance stage. So when starting a project, we must focus on "easy maintenance" and spend time and effort to analyze the design and programming carefully.
Even though it takes time and initial stage costs, well-designed software is easily scalable and less expensive to maintain during long-term operation.
This is an important point that anyone who wants to become a good software developer should keep in mind!
We, “Hachinet Software,” are Vietnam-based software services with dedicated, dynamic, enthusiastic teams who always have made efforts to please customers’ and partners’ satisfaction. We specialize in the followings:
- Web application (.NET, JAVA, PHP, etc.)
- Framework (ASP, MVC, AngularJS, Angular6, Node JS, Vue JS)
- Mobile application: IOS (Swift, Object C), Android (Kotlin, Android)
- System applications (Cobol, ERP, etc.),
- New Technology (Blockchain, etc.).
If you are interested in our service or looking for an IT outsourcing partner in Vietnam, do not hesitate to contact us at email@example.com.