Effectiveness of code reading and functional testing with event-driven object-oriented software.