software development guidance