Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Iam not sure if this topic is ok to ask, but we are talking about this since years in our Developer-"Shop". How to write concepts for Web- Applications?

We are using Zend Framework (MVC), OOP Based, Databases, LDAP and such stuff. But no one ive ever meet can show me an good example for some kind of "technical conception".

Goal: Write an document, hand it our to an 2nd person with "some" knowledge about our systems and good PHP 5/Zend Framework skills. Now he must be able to code without many questions to the architect.

Is it possible that this is not common in the "web scene"? Does everyone is just hacking code till the application works?

If someone knows some good papers, examples .. Some keywords to think about:

  • ERM
  • UML
share|improve this question
    
Concepts? Do you mean specifications? –  Oded Apr 24 '12 at 15:22
    
Scenario: You have an customer, but you want to outsource the development to an other company (the customer has no relationship to the other company) –  ArneRie Apr 24 '12 at 15:24
1  
Sounds like you are indeed describing a functional specification. –  Oded Apr 24 '12 at 15:25
    
.. not really : hard to describe.. think about: you are an senior developer and you want to hand out an document wich describes how the program has to be developed (use mvc, dont use mysql, use an service layer, ..) –  ArneRie Apr 24 '12 at 15:28
3  
@ArneRie: sounds like an architecture document - but that is totally insufficient as a basis for outsourcing the development. –  Michael Borgwardt Apr 24 '12 at 15:34

3 Answers 3

up vote 1 down vote accepted

Software development literature and practice (in many projects) tend to propose certain activities to deliver reliable software. These activities are either learned from industry experience or advice and vision laid out by different methodology thinkers. It is a common practice to perform planning, analysis and design tasks (under any other name) at the beginning of major software tasks.

Software programming is an activity that could benefit from knowledge gained by performing those tasks.Programming is not usually the starting point (or the only task) in a serious projects. Development teams are usually composed of people playing different roles. Programming is only one of these roles.

The Business analyst's role is to aid in the process of discovering, documenting and validating the business requirements from the view point of the stake holders and customers, data modelers build the ERD to satisfy those requirements, Architects determine the optimal environment and integration methods to deliver the solution, DBAs tune the database design, Programmers work on delivering the code and may produce system prototypes to solicit early customer feedback etc.

Technical tools such as UML diagrams may be used by different roles at various stages of the system life cycle to document how the system is packaged, parts of the object model, process flow(s), etc.

As @Raythal indicated, the process of requirements determination is not performed in isolation of customers (unless you are creating a novel tool or product) and the analysis process has an iterative nature in non-trivial projects. The relationship between IT and the end-customer need not stop after system analysis has finished. In fact it is good to have controlled customer involvement during the entire project life cycle. The Project Management role should facilitate the interaction between the appropriate team members and the customer and should observe the interests of both parties in doing so.

The contents of the document you mentioned in your question is what matters. It should contain sufficient information for all involved parties to provide their corresponding deliverable. For example, a data modeler can't build a correct data model without business rules. A developer can't produce a prototype if the business process flow(s) is/are unknown and so on.

In practice it is not uncommon to see applications begin in unorganized manner, however, this is not the practice to follow if reliability counts.

You'll find much more about the answer to your question under the subject "software development life cycle" and in particular "Requirements Engineering/Management".

share|improve this answer

You have a very flawed view of software development. Success has been shown to be nearly impossible if you expect to create some specifications and toss them to developers and have them make it no questions asked. The reason Agile development has become so popular is that it forces the client to work with the developer and collaborate. People that are going to be responsible for using, creating, designing and maintaining should all be involved at every step of development.

Your goal is not consistently possible in any scene, not just the web.

share|improve this answer
1  
Or you just let the dev go ahead without asking any questions. Then you or the user can say, "That's not what I meant." and let them nearly do it all over again. –  JeffO Apr 24 '12 at 17:05
    
still talking about "not so much" questions.. not "no" questions –  ArneRie Apr 26 '12 at 16:11

Everything @Ryathal says is absolutely true.

But if you are constrained and HAVE TO do things in the way described, what you need is a reference implementation (RI) of the architecture you are trying to build. This means building working code and documenting how exactly it works. You can then hand the RI to your developers and tell them to build an application the same way the RI is build, but meeting your functional and system requirements (preferably with a comprehensive set of test cases).

This is still far from ideal--the developers may find parts of the RI not appropriate, or not adequate based on the requirements. There WILL be some give and take, but it should give them a start.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.