An approach using first-order logic for knowledge representation of software life-cycle information to facilitate software development and maintenance is presented. This representation is independent of the programming language used in software development and covers certain basic characteristics of a software system: control flow, data flow, and data structure. These basic characteristics of a software system are specified using the Graph Description Language (GDL) and can be translated into logic representation for the information in the entire life cycle of the software system. The translated logic representation is a set of logic clauses and can be considered as a set of axioms. In the software maintenance phase, automated reasoning techniques based on these axioms can be used to prove certain software properties to facilitate software modification.