views:

80

answers:

6

Hi,

For most of you web developing guru's my question will sound stupid, but as newbie I would like to ask if it is ok that I will have a frontend developed and only after Backend?

Also, if I will need database should I have the design of it first?

I also would like to know about the analysis part of the project. A friend in short informed me that to start the project requirements analysis (internal, technical and design) is a must. LEt's say if I want to build an social e-commerce site with ability for users to register. Can you determine a numbered list what would you do to prepare the analysis for such project (etc. 1. Database design a) prepare data models...)

I would be very happy if somebody could provide with a thorough answer.

Thank you.

Regards, Donny

+1  A: 

I usually decide what fields I need in the front end 1st.

Then start working on the database backend..then middle tiers with unit tests..then finally front end.

Of course, once I start work on the front end, I think of more fields or changes for the database....such is the nature of development.

Ed B
A: 

Especially when new people are working with project, I'd suggest an incremental approach.

Pick some functionality you know you're going to need. Start with the database (SQL), then the backend code (PHP, maybe), then the web frontend (HTML). Make it as simple as possible to accomplish that one block of functionality. The order of things doesn't matter as much as just taking a small chunk at a time to work on.

Once that small part works, save a copy. Version control, even. That way, you can always return to something that worked if you screw something up tomorrow.

Then pick the next small function and add it in. I always find this very motivating; you get to see consistent improvement.

I'd probably plan ahead on the database level, because while any change to the HTML only really affects the HTML... database changes often require backend code changes which often require HTML changes, and having to redo everything is painful.

Dean J
Thank you, Dea. Very helpful.
A: 

You should architect the tiers that you expect to exist in the whole system. Each tier can be parallel architected/implemented by different people, however integration points will require collaboration to decide on the contract.

There are two general interface/contract patterns:

1) Consumer/Application Needs -> interface/contract is dictated by the application and the next tier is written to conform/adapt to those needs. All of the tiers are now essentially driven by their downstream consumers. The pro is that you will likely have the most efficient and limited set of methods required, the downside is there is more work to adapt the system to other consumers.

OR

2) Service Provider -> interface/contract is dictated by a service which is designed to support a core set of common functionality that may service many apps, even some yet to be known. The application that consumes the provider must then adapt the contract's capabilities with its internal needs. The pro is that the service is more re-usable without modification, however those generalized methods will likely be a less efficient fit for any particular app's needs.

Neither of these is the perfect answer, it depends on the situation. The decision of 1 or 2 above may also differ depending on which tier connection you are working on. You could have a service with a service contract #2, an app with its own needs contract #1, then an adapter tier that maps the apps needs to the service's functionality.

Regardless of which pattern you use, the architecture of your tiers, their contracts, and how they interact with each other is more important than when you start working on any particular tier.

In general once the tier design is in place, you work on the tiers where the contracts are defined and followup on the tiers where contracts are consumed.

David
A: 

The question is highly subjective. In the practical reality in which we live one is limited by the customer's ability to communicate their requirements in a such a way that they can be translated into code (and of course ever expanding requirements). Medium-Larger companies have Business Analysts to perform most of these duties. As far as which tier to start the design, a DB guy will say DB, webguy will say frontend, etc...to each in accordance to their abilities.

There's no silver bullet. I recommend you readup on a few major paradigms like Agile and waterfall.

P.Brian.Mackey
A: 

The good thing is that I have to friends web developers who are confident with PHP and MysQL and a Web designer who is also will be helping me. I have a web site idea that is bugging me for awhile and I would like to have it implemented. The main problem is that my colleagues id eager to help me, but they would like me to put some effort and to try making an analysis part (software requirements specifications). I already done some work with Axure on the Frontend and backend wireframing, but know I feel a bit foolish as I understand that I should have started with database design and other issues. To look myself more professional with project info which I will prepare for my colleagues I still would like to break it into list, so it would be something like this?:

  1. Database Design (Data Model - Entity-Relation Diagrams, Process Model - Data Flow Diagrams);
  2. Backend Coding;
  3. Frontend Coding;
  4. As long as it will be an ecommerce site, so coding from scratch a shopping cartel or implementation of existing one.
  5. Making a connection with accounting system (like quickbooks).

Can you criticize (or add something) to my list?

Thank you very much.

If you're going to build an ecommerce web store, look at some of the existing things out there before building from scratch. OS Commerce and Magento come to mind.
Dean J
A: 

I think this question is really a variation to the question whether the bottom-up or top-down design is better. I find that it helps to do rough drafts of the front end to simulate typical usage of the site. This helps one to see required backend options one would have missed otherwise (thinking needed data).

data