NO.1: problems of large programs NO.2: problem specification NO.3: program design NO.4: choice of data structures NO.5: analysis of algorithms NO.6: testing and verification NO.7: program correctness NO.8: maintenance