📜 ⬆️ ⬇️

Design stages, mistakes and advantages

In this article I will try to consider the development of software: highlight the processes and steps, point out the advantages and disadvantages of certain techniques, prevent from making mistakes.



Formulation of the problem

The most important step in software development is the formulation of the problem — the final result will depend on the correctness of the statement of the problem.
')
Drafting of technical specifications.

The technical task is a document that describes all the features of the software, an exaggerated example:

Creating an online store

Write an online store with the ability to add categories, add products by category with a picture and description.

System members:
1) Administrator
2) Buyer

User Capabilities

Admin Features:
1) Add delete and edit categories
2) Add delete and edit products
3) Add delete and edit purchase requisitions

User / Buyer Features
1) Add item to cart
2) Make a purchase

This is how the customer’s assignment looks like, add obligations here and this can be an addition to the contract.

Let's take a closer look and break down the steps:
1) Drawing and layout design.
2) Database design.
3) Architecture design.
4) Writing software code.
5) Writing a database.
6) Purchase hosting and domain.
7) Website promotion.

And if we want, add 2 more possibilities:
1) User Registration
2) User can add products

It seems to be a difference in two lines, but this is no longer an online store, but the task may pererozi in the service on the similarity of avito, alibaba, and the timing and complexity will increase several times (the tables will not be 5-10, but 100).

Errors in designing examples :
Often time complexity and cost of development may increase due to errors in the architecture and problem statement, examples:

1) There was a service that showed geolocation of a product or service on a map using the Yandex API or Google maps, and then we needed specific calculations that third-party services do not provide as a result: you need to install the map engine, change the database, convert the data, write the necessary formulas, adapt old code under the card module capabilities. This will entail time and money costs.

2) The database was incorrectly modeled, you need to add several fields and change the program code.

3) Wrong terms of reference: complete rewriting is needed.

4) Incorrectly chosen technologies for development: you are writing a multitasking multi-threaded application in a language in which this is not intended, the chosen framework does not have the necessary capabilities.

The list can be continued indefinitely depending on the situation, it is better to have a competent technical task and present the whole picture.

The right choice of tools for development
1) IDE - in many modern development environments it is provided: autoclit (automatic code completion), integration with the version control system, version build sisters, error hints, integration with testing systems, integration with debug systems.
2) Version control system: reduces the risk of losing the program code, allows team development, makes it possible to divide the code into branches, and the date to restore old versions of the code.
3) Project Management System: allows you to set tasks for the team, share tasks, control the development process.
4) Framework: allows you to speed up development, allows you to share logic, may have a specific set of features for your tasks.
5) The choice of language and database will not be considered here - my personal opinion should be chosen from the task.

Iterative and team development and errors
There are three developers in the team; their responsibilities are divided into parts of the code, on Monday they gathered and decided what tasks they would perform in the next two weeks:
1) First decided to change the model, so that it would be possible to display and track the creation date.
2) The second decided to fix the registration.
3) The third changed the design.
During the week, all three wrote the code and made changes to the repository, as a result, the first developer changed the code so that the part that the second programmer was responsible for “fell off”. Parts in which changes were made work well, and in other places where he didn’t notice, errors began to pour.

Test implementation
I started writing my own framework for developing an online game, defining a set of features and began testing it using standard language functions (java). Next to test the capabilities of the framework, I had to write a few more global tests that simulate the user. Of course, running a bunch of tests is inconvenient and quite expensive - so I’ll have to make them automatic.

Benefits of refactoring
I recommend correcting flaws in the architecture and program code as soon as an error is noticed. Continuous refatoring takes more time during development, but it gives a significant increase in time costs in general than if you began to make several global changes (serious rewriting) having accumulated a bunch of errors.

Correct timing

How much will you create a typical online store? You have everything set up, you have been working for a long time, you are fluent in languages ​​and content management systems and work as a team. 5 days can be a week (you will not receive a quality fail-safe application during this period)? Feel free to multiply by 2 in order to take into account force majeure and avoid conflicts.

I think it is not difficult to imagine the economy: the forces, time, money and nerves. Taking into account all the above nuances, techniques and errors.

Source: https://habr.com/ru/post/304598/


All Articles