Software and hardware development