Software Technology for Cyber Physical Systems