Applying software engineering principles for designing Cloud@Home