peiliu, when you say "maintaining the program" are you talking about maintaining updates to the results of the program, like in updating a database?
Or are you referring to updating and modifying the program itself? To modify, or maintain, an actual program, you would need the actual source code, an editor capable of working with the source code, and either a language specific compiler or the ability to interpret the program, depending on which program it is.
Perl is an interpreted language, C++ is a compiled language - the above refers to these, for example. To maintain a database program created by an application program written in one of those languages, you just need to update the database itself.
That is the difference,so the procedure depends on what you are actually trying to do.
Creating a "maintainable program" usually means creating a structured program, one in which small modules perform individual tasks in logical sequence.
Many programming languages impose structure on a programmer. Early languages and techniques lacked this structure allowing programmers to jump from one piece of code to another indiscriminately and the results were often nearly impossible for another programmer to decipher or maintain.
Creating a "maintainable program" usually means including detailed explanatory comments in the code about what task a module performs. It also means including thorough documentation about a program's installation and operation.