Software engineering and specifications