Developing, maintaining and improving computational software