Hi Hafizan,
If you have good enough documentation that describes user interface and business logic of the application and this description is stable (more or less), then it is possible to create test code (not keyword tests, but test scripts) even if the tested application does not exist yet..
Hovewer, considering the fact that TestComplete identifies tested objects within the tested application using the properties defined by developers (e.g. class name, id, caption, etc.) and that TestComplete must know at least partial hierarchy of the tested objects, the task of test code creation without actual application existence might appear to be not easy with a high risk of mass changes required later for the already created test code.
I would suggest to talk with developers about the possibility to get their daily builds from the very beginning. Using these early builds you will be able to create code that starts and closes tested application, handles error messages and crashes, the code that can call main menu commands and commands from the context menus, search for the data in grids, generate test data, etc. - i.e. you will be able to create a base set of the reusable library functions and automate generic routine operations. Executing created test code daily, you will be able to relatively easily adjust it if developers change tested application's internals and will be well prepared to automate business functionality when it is created.