Software engineering techniques for support of communication protocol implementation