U
U
ummahusla2015-04-29 13:30:38
PHP
ummahusla, 2015-04-29 13:30:38

How to start designing an application?

In general, there is no experience in creating complex applications, so I can’t understand where to start creating it? To begin with, I chose technologies - PHP + MySQL and JS / jQuery, because I have not matured for SPA.
The application will include a mini CRM with an average set of features. For myself, I broke this project into 4 parts. There is an approximate application architect in my head, but again - where to start at the beginning is a mystery.

  1. front-end
  2. back-end
  3. Data
  4. misc

At the beginning, I thought to make a front-end and then start attaching functions to it and working with the base. Or at the beginning of the base, then backend and then already fronted? Generally confused.

Answer the question

In order to leave comments, you need to log in

10 answer(s)
M
Maxim Kuznetsov, 2015-04-29
@Antonoff

Let's assume that you have decided on the future functionality. Then you know exactly who or what will supply the data and who/what will consume it.
Now figure out who will be accessing your system to transfer or retrieve data, and what your program will be accessing. Those systems or users who access the program themselves, draw a diagram on a piece of paper at the top. Those that the program will access (including the database) are from below.
Now draw a rectangle under each subject drawn on top with the name UI or API - these are the interfaces that the user or external control system will access. Sometimes the UI can also access the API. Merge all the UI rectangles with one path and call it the UI layer. Merge all the rectangles with the API and call it a services layer.
For the systems shown below, specify the components that will be responsible for accessing these systems. Combine all these components with one path and call it a data access layer.
Between the service layer and the data access layer, draw a large outline and call it the business logic layer. In the small boxes within this outline, list the main business objectives. One component of your system will solve one business problem.
Now, on the right, draw some long rectangles from top to bottom and write in them: logging, configuration, performance monitoring, exception handling, and something else that is a common infrastructure (or cross-cutting functionality) for all layers of your program.
Get the logical architecture. Scatter the layers over the servers - get the physical architecture.
And then - work out in detail each small square. Everything.

V
Vitaly Khomenko, 2015-04-29
@iiifx

1. TOR
2. Page mockups
3. Basic application architecture
4. Implementation of the task with TOR
5. goto 4

M
Max Sysoev, 2015-05-07
@ColCh

Design must begin with architecture. The main idea is to break the system into modules, each of which performs its own task (single responsibility principle). Each module contains components. Components in modules are strongly connected (cohesion) and weakly connected (coupling). Each component is a black box where information is fed and output. For stability it is necessary to document the interface at these boxes the document. To build an API, I recommend building apis you won't hate.
Start designing from the top and implementing from the bottom.
A couple more, but this is already advanced and a bit over the top ... instead of inheritance, use composition. Understand the principles of OOP and FP, use immutability where you need to frequently check if data has changed...

Y
Yuri, 2016-01-25
@riky

Judging by the question, you can not choose what was in the beginning the egg or the chicken . at first there was neither one nor the other, there was another abstract bird, which may not even have flown, but somehow its child mutated into a chicken after several generations.
Do the same - iteratively . Let first be a freak who may not cackle or walk yet, but at least live. and for this he must have a heart and a head and feathers, even if they are crappy at first, then you can redo it, in programming this is the easiest thing.
for example, make a preparation, authorization (a simple interface + a table in the database), then adding a task to the CRM (+ a table for it), for starters, you can use the simplest design.
Now you just need to start doing something. And do a little bit of everything, both frontend and backend and base. Do not be afraid then everything can be refactored / redone. You have little experience to immediately make a good architecture, but this does not mean that you can not start.
; otherwise, if you have never done this, it is difficult to immediately fit everything in your head as and what should be. and when you see a part already finished - it’s easier further, there you will understand whether you need to draw something or not.
I advise you to immediately use some kind of php framework, so at least you don’t have to puzzle over what architecture the server should have and many things will be ready.
Good luck.

V
Vladislav, 2015-04-29
@RGV

Start by creating simple applications.

M
Maxim Gavrilov, 2015-04-29
@thestump

Well, how do you say?! First, business logic, then the subject area, then the implementation of the subject area in classes (ER diagram), which will give an idea of ​​the database that is developed after and based on the subject area. Next, we migrate the database diagram into code for a specific DBMS. then the domain classes are supplemented with functionality and visualization (front-end) is developed in parallel. Then comes the moment of integration where the subject area is integrated with the database and the front-end is integrated with the back-end and everything goes to testing. As a rule, all this is developed at one point in time because the team is working, but if you work and try yourself, then you need to allocate time and deal with part of the day with this, part of the day with this, and another part of the day with this and so in a circle trying to use the spiral method software development with Agile principles.

S
Sergey, 2015-05-07
@sergey_privacy

First, build a detailed TOR to determine the functionality of the application yourself. Sometimes little things are not obvious, you come across them at the implementation stage and you have to redesign the database for them, redo a bunch of queries in order to achieve normal performance. After drawing up the technical specifications, do the correct design of the database, lay the possibility of its growth. Lay the possibility of scaling, adding new fields to the software. Then start riveting the frontend, adding backend functionality as you work, and immediately check the frontend's work. Some tasks will not allow you to choose the course of action, the initial conditions may force you to change the order of actions. For example, the database might be imported from another project, or you might be involved in developing or extending the frontend for an existing backend.

1
1alexandr, 2015-04-29
@1alexandr

Start with hello world. And if you seriously implement the basic architecture, or take a ready-made architectural solution of some kind of framework like laravel symfony or zend. Write tasks for yourself and complete them gradually

U
uvelichitel, 2015-04-29
@uvelichitel

I'm starting with an API, (HTTP REST API in the case of the web) and a data structure.

X
xmoonlight, 2015-04-30
@xmoonlight

From Architecture!!!!

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question