Juan, there are no set standards in the software industry and there are many different methodologies. Varying from a waterfall development methodology where everything is specified and defined in much detail on the entire projects before developing anything. To, agile development methodologies where you have a high level view of the entire game plan, but you only plan in small iterations (usually 2 weeks) but you deliver something usable on each deliverable. Continue to use that process to build out future features and incorporate information.
At a minimum you will want:
- Wireframes: Your idea of what you think you need. Paper and pencil mockups of your screens, what is to be collected, how each behaves, what happens when you click on each document.
- Specs / requirements: A document that explains in plain language the overall project and what is going on on each page.
There is much more that you can produce, but I would say that is the minimum. You could do use cases, workflow charts, UML / database diagrams - but are you a developer / database guy?
I also wouldn't judge a company by their CMM level. All that really means is they have a process they follow each and every time. They analyze the process, improve it, refine it but they have a repeatable 'process.'
It doesn't mean that they are building award winning and awesome projects. It means that they will approach the projects and deliver them in a similar way.
Also, your blueprint that you write should not include time estimates as you mentioned above. That is up to the development team to determine.
Usually you can choose 2 of these 3. Cost, Timeline, Features. and the other company tells you the 3rd.
Examples:
You want to pay $50,000 and want it in 6 months. Then they get to say, fine... but you are only getting these features.
You want to pay $50,000 and want these 100 features. They can say fine, but we are working on it in our spare time and it will take 2 years.
You can say we want these 100 features, and in 2 months, they can say no problem $100,000.
After you refine your wireframes & specifications with your development company you will want to go through a pretty detailed user experience process. You should have a professional designer / UX professional understand your application and do a beautiful and usable design for it. The developers will then use these assets and ideas when building your app.
This is so it doesn't come out looking terrible and being a horrible experience to use. AND is critical! If an app looks great, feels great even if it is not awesome it will still give the user a great feeling. If it has all the features in the world but is ugly and not a good experience, you lose every time.
After that you may need to revisit, refine your milestones and schedule.
You will want to work with your development company to determine the right technologies to be used. You may even run that by a couple 3rd parties to get their feedback.
Most importantly when CHOOSING a company to work with, they must be able to show you similar enough software applications that they created that give you confidence they can build your application. If you have a sophisticated web app you want created and they keep showing you Wordpress / marketing websites ... that's an issue. If they can show you applications along the same lines that you want, then you call those companies and check up on them :]
Good luck with your project. It's good to do as much as possible before getting in touch with prospective developers, but make sure you find someone who can take your IDEAS and do what is right with them.
You don't want to tell them to do something and they do it without question. They should know more about software, usability, and the entire process then you. And you should trust their expertise, or you have the wrong partner.
- The patent aspect is best learned by reading tons of patents. Check out Yahoo's, Microsoft's, Yahoo's for good examples. However, I am in general against software patents.