Perangkat Keras Agile dengan Pengembangan Perangkat Lunak Tertanam
Diterbitkan: 2022-03-11Membangun ekosistem perangkat keras dan perangkat lunak yang kompleks yang menemukan kesesuaian produk/pasar adalah tugas yang sulit. Sementara sebagian besar startup perangkat keras akhirnya gagal karena kehabisan uang, menurut laporan dari CB Insights, alasan mendasar terbesar sebenarnya adalah kurangnya permintaan untuk produk mereka. Ini hanya menggarisbawahi pentingnya betapa pentingnya peran manajer produk untuk startup perangkat keras, karena tujuan utama mereka adalah untuk mengetahui kebutuhan klien dan titik nyeri untuk memberikan produk yang sukses.
Perusahaan terakhir yang saya jalankan menciptakan ekosistem web, seluler, aplikasi perangkat lunak tertanam, dan perangkat keras untuk industri parkir. Strategi produk perangkat keras adalah bagian dari pekerjaan saya sehari-hari, yang mengarahkan saya untuk bereksperimen dengan berbagai alur kerja pengembangan produk perangkat keras. Meskipun bekerja dengan produk perangkat keras selama 10 tahun dan memiliki gelar BS di bidang Elektronika dan Telekomunikasi, saya masih harus banyak belajar di tempat kerja. Saya telah membuat panduan di bawah ini dengan harapan Anda dapat mempercepat manajemen produk di dalam perangkat keras dengan ruang perangkat lunak yang disematkan lebih cepat daripada saya.
Tantangan Manajemen Produk Perangkat Keras
Sementara SaaS dan aplikasi seluler dapat dengan mudah dikembangkan menggunakan kerangka kerja tangkas, kondisi unik dalam pengembangan perangkat lunak dan perangkat keras yang disematkan membuatnya lebih sulit untuk menerapkan prinsip-prinsip tangkas. Pada bagian pertama ini, kita akan membahas karakteristik pengembangan perangkat keras yang menciptakan kompleksitas. Tidak semua dari mereka memiliki solusi langsung, tetapi ada cara untuk mengurangi kesulitan dengan menggunakan strategi pengembangan perangkat keras tertentu, yang akan dibahas di bagian selanjutnya.
Bakat Teknis Khusus Sulit Ditemukan Secara Lokal
Membuat produk perangkat keras baru secara signifikan lebih sulit daripada mengulangi yang sudah ada. Ini melibatkan banyak kreativitas dan pengalaman dalam pembuatan prototipe, yang jarang diajarkan di universitas. Beberapa universitas bahkan tidak memiliki fasilitas pembuatan prototipe atau alat yang diperlukan untuk mengembangkan keterampilan ini dan pengalaman semacam itu hampir secara eksklusif diperoleh di perusahaan perangkat keras yang lebih besar yang memiliki pusat R&D. Oleh karena itu, menemukan profesional lokal dengan keahlian yang relevan dapat menjadi sangat sulit, sehingga banyak pendiri startup perangkat keras perlu memperluas kumpulan bakat mereka dengan merekrut dari jarak jauh.
Sistem Kontrol Versi Tidak Diadaptasi ke Desain Perangkat Keras
Sebagian besar sistem kontrol versi (VCS) berorientasi dalam mendukung format tekstual, karena dibuat untuk pekerjaan kolaboratif pengembangan perangkat lunak. Dalam proyek yang melibatkan pengembangan perangkat keras, informasi dibungkus dalam file desain yang dibuat dengan bantuan alat khusus seperti OrCAD. Dan beberapa alat ini hanya mendukung file biner yang bahkan tidak dioptimalkan untuk digunakan di VCS. CADLAB adalah upaya yang relatif baru untuk membuat VCS yang kompatibel dengan perangkat keras dan mudah-mudahan, akan ada lebih banyak alat seperti ini dalam waktu dekat.
Fasilitas Produksi Perangkat Keras Terdelokalisasi
Fasilitas produksi perangkat keras seringkali berlokasi di wilayah, negara, atau benua lain. Komunikasi antara produsen perangkat keras dan produsen memerlukan pertimbangan khusus dan merupakan kunci keberhasilan pengiriman produk. Komunikasi yang berhasil memerlukan pembingkaian yang lebih strategis untuk memastikan kualitas produk dan untuk memastikan bahwa produk tersebut dapat mengatasi perubahan dalam tahap validasi pasar produk yang dinamis. Untuk mencapai ini, produsen perangkat keras perlu membuat banyak spesifikasi terperinci yang dikirim ke pabrikan. Kerangka kerja kolaborasi harus memastikan pengiriman informasi yang cepat dan pengelolaan siklus hidup spesifikasi, karena mereka dapat dengan mudah ketinggalan zaman dengan cepat.
Perubahan Perangkat Keras Kurang Fleksibel
Model operasi populer di startup perangkat lunak mengorbankan kualitas demi kecepatan pada tahap awal. Bahkan Facebook memperjuangkan mantra "bergerak cepat dan hancurkan barang" untuk beberapa waktu. Pendekatan akrab lainnya adalah "berpura-pura 'sampai Anda berhasil." Ini berfungsi untuk startup perangkat lunak karena biaya infrastruktur yang murah dan kerangka kerja pemrograman yang disederhanakan yang memungkinkan pengembang untuk menerapkan pembaruan kode setiap hari.
Meskipun pendekatan pengembangan ini perlahan-lahan merayap ke ruang perangkat keras, ini merupakan tren yang tidak menguntungkan di bidang ini, karena jauh lebih sulit untuk membuat dan menerapkan perubahan perangkat keras. Biaya pengembangan mengimbangi nilai yang diperoleh melalui rilis cepat dan sering, jadi sebenarnya ini adalah strategi yang jauh lebih diinginkan untuk berinvestasi lebih banyak dalam fase desain untuk membuat arsitektur perangkat keras yang baik.
Jebakan Crowdfunding
Banyak startup terjebak dalam gagasan bahwa meluncurkan kampanye crowdfunding perangkat keras yang sukses setara dengan validasi pasar. Crowdfunding cenderung paling berhasil untuk produk yang melibatkan komponen perangkat keras, terutama karena keinginan bawah sadar kita untuk memiliki yang terkait dengan objek fisik. Namun, crowdfunding tidak dimaksudkan untuk memvalidasi produk Anda dalam skala besar, melainkan cara demokratis untuk mendanai pengembangan produk tahap awal. Kenyataan yang disayangkan adalah bahwa banyak perusahaan dengan kampanye crowdfunding yang sukses kemudian merasa sulit atau hampir tidak mungkin untuk meningkatkan produksi mereka karena mereka tidak memvalidasi pasar mereka dalam skala besar.
Sertifikasi, Peraturan, dan Persetujuan
Semua produk perangkat keras memerlukan semacam sertifikasi untuk dijual. Ini adalah salah satu langkah yang paling diabaikan dalam tahap awal membawa produk perangkat keras ke pasar. Bagaimana kendala sertifikasi akan mempengaruhi rencana produk dan kerangka kerja yang diterapkan untuk pengembangan? Bukan hal yang aneh untuk merencanakan fase awal proyek dengan sertifikasi dan persetujuan lainnya sebagai pencapaian proyek, baru kemudian mundur secara kondisional ke fase awal. Manajer produk malah dapat dengan hati-hati menganalisis peraturan, dependensi, dan gerbang keputusan strategis rencana produk dalam pendekatan yang lebih mirip air terjun.
Peluang untuk Manajemen Produk Perangkat Keras
Sekarang kita telah membahas beberapa tantangan yang ada di perangkat keras dengan bidang perangkat lunak tertanam, sekarang mari kita lihat bagaimana membuat proses pengembangan lebih ramping dan dapat diprediksi untuk mengimbangi kesulitan yang melekat pada pengembangan perangkat keras.
Memasukkan Agile ke dalam Pengembangan Perangkat Keras
Manajer produk yang berpengalaman menyadari tantangan di balik pembuatan produk perangkat keras dengan perangkat lunak tertanam yang mencoba memanfaatkan peluang pasar yang diciptakan oleh perkembangan teknologi baru. Mereka belajar untuk menyeimbangkan mempercepat waktu ke pasar tanpa mengorbankan kemungkinan keberhasilan produk dari tahap perencanaan. Sebagian besar waktu, ini mengambil bentuk melalui pendekatan air-scrum-fall.
Fase ide produk memperluas prinsip produk, tujuan, dan fitur tingkat tinggi dalam detail sebanyak mungkin. Manajer produk yang hebat menghabiskan lebih banyak waktu untuk menyempurnakan hasil dari fase ini: visi, misi, penilaian peluang, tujuan produk perangkat keras, dan fitur. Ini adalah bintang utara dari produk yang perlu cukup jelas sebelum mulai mengerjakan segala jenis prototipe perangkat keras, oleh karena itu pendekatan air terjun direkomendasikan.
Sangat penting untuk memiliki persyaratan yang terdokumentasi dengan baik dan spesifikasi fungsional untuk produk perangkat keras, serta arsitektur teknis yang baik untuk perangkat lunak tertanam yang menggerakkan produk perangkat keras. Perubahan dalam persyaratan dan spesifikasi harus dihukum, tidak didorong setelah ditandatangani oleh seluruh tim.
Metodologi scrum standar dapat digunakan saat mengembangkan perangkat lunak tertanam. Lebih murah dalam hal waktu dan uang untuk menyesuaikan dan menyempurnakan implementasi perangkat lunak agar dapat bekerja dengan arsitektur perangkat keras yang telah ditentukan daripada sebaliknya.
Pengujian integrasi akhir dan pengujian penerimaan pengguna harus dilakukan dalam kondisi air terjun. Pada tahap ini, fase pengembangan selesai dan fungsionalitas baru serta fitur yang hilang dicatat sebagai permintaan kerja tambahan untuk periode perencanaan berikutnya.
Menggabungkan Agile ke dalam Pengembangan Perangkat Lunak Tertanam
Membangun produk perangkat keras yang kompleks dengan perangkat lunak tertanam berdampak pada penerapan metodologi pengembangan perangkat lunak tradisional. Banyak sistem yang digunakan untuk menghasilkan perangkat lunak yang berjalan pada komputer pribadi tidak sesuai untuk mengembangkan perangkat lunak tertanam, karena ada kendala sehubungan dengan kelangkaan sumber daya dan siklus hidup pengembangan yang lebih lama.

Sekelompok akademisi dan profesional dari Brasil telah menawarkan solusi potensial: Metodologi Desain Perangkat Lunak Berbasis Platform untuk Sistem Kontrol Tertanam: Perangkat Agile . Metodologi ini menggabungkan prinsip-prinsip tangkas ke dalam pengembangan perangkat lunak tertanam. Di bawah ini adalah ringkasan singkat dari metodologi, tetapi manajer produk perangkat keras sangat disarankan untuk membaca deskripsi lengkap sebelum menerapkannya dalam praktik mereka.
Peran yang terlibat dalam metodologi ini adalah:
- Pemilik platform – Bertanggung jawab untuk menentukan kualitas, perencanaan, dan target biaya
- Pemimpin produk – Bertanggung jawab atas implementasi, integrasi, dan pengujian produk
- Pemimpin fitur – Bertanggung jawab untuk mengelola proyek subsistem dan melacak kemajuan pengiriman fitur
- Tim pengembangan – Bekerja pada pengembangan produk
Metodologi ini membagi pengembangan perangkat lunak tertanam menjadi tiga kelompok proses:
- Grup proses platform sistem. Sebuah sistem memilih komponen sistem yang akan menjadi bagian dari arsitektur dan platform API dari perpustakaan platform dan menyesuaikannya untuk memenuhi batasan aplikasi yang bersangkutan. Proses kustomisasi dilakukan dalam siklus berulang dengan memprogram prosesor yang dapat dikonfigurasi desainer dan logika runtime yang dapat dikonfigurasi ulang yang terintegrasi ke dalam platform.
- Kelompok proses pengembangan produk. Fungsionalitas yang membentuk produk dipartisi menjadi elemen perangkat keras atau perangkat lunak platform. Metodologi ini menyediakan algoritma partisi untuk memperhitungkan konsumsi energi, waktu eksekusi, dan ukuran memori komponen aplikasi.
- Proses manajemen produk memantau dan mengontrol lingkup produk, waktu, kualitas, dan parameter biaya. Pendekatan yang disarankan terutama terdiri dari praktik yang dipromosikan oleh metode Scrum Agile serta pola tangkas.
Buat Program Pengembangan Perangkat Keras
Penataan program pengembangan perangkat keras tahap awal telah memungkinkan perusahaan untuk menyediakan pivoting cepat atau rencana B. Dari sudut pandang bisnis, ini dapat mengurangi margin keuangan, tetapi pada akhirnya, ini memberikan kelincahan yang dibutuhkan untuk menghadapi pasar yang terus berubah kondisi dalam hal produk yang dikeluarkan oleh persaingan dan kemampuan teknologi yang maju.
Misalkan sebuah perusahaan menjalankan kampanye crowdfunding yang sukses untuk produk perangkat kerasnya dengan perangkat lunak yang disematkan. Mereka bekerja dengan baik untuk produk batch pertama sampai perusahaan besar yang mapan mengumumkan hal serupa. Keserbagunaan dan waktu untuk memasarkan adalah yang paling penting, dan tanggapan yang pragmatis dan gesit terhadap situasi ini meningkatkan kemungkinan produk yang sukses. Dengan memiliki program pengembangan perangkat keras, perusahaan dapat dengan cepat beradaptasi dan menyoroti versi produk yang lebih kaya sebagai tanggapan terhadap pesaing mereka.
Pengujian Perangkat Keras yang Berhasil dengan Perangkat Lunak Tertanam
Pengujian adalah komponen penting dari manajemen produk perangkat keras karena, tidak seperti pengujian perangkat lunak yang gesit, sebagian besar bug perangkat keras hanya dapat diperbaiki dengan memproduksi kumpulan produk baru. Perangkat Samsung Galaxy Note 7 yang terbakar adalah contoh bagus mengapa pengujian perangkat keras harus menjadi prioritas utama bagi semua manajer produk.
Tes fungsional adalah tujuan utama validasi teknis untuk perangkat keras dengan produk perangkat lunak yang disematkan. Kompleksitas prosedur ini berasal dari fakta bahwa kesalahan kemungkinan besar berasal dari bagian mana pun dari sistem.
Pengujian unit biasanya terjadi di lingkungan yang disimulasikan setelah setiap sprint, karena perangkat keras yang disimulasikan menawarkan keuntungan karena dapat dikontrol dengan sempurna. Skrip pengujian dapat diotomatisasi, dapat mengawasi eksekusi, dan menghentikan pengujian yang tampaknya gagal karena gagal memberikan hasil apa pun.
Pengujian integrasi harus mempertimbangkan operasi online dan offline dan penyerahan produk perangkat keras ke kondisi operasional kehidupan nyata. Misalnya, jika perusahaan mengembangkan sistem pemantauan otak yang dipasang di kepala selama aktivitas di luar ruangan, kondisi pengujian harus mempertimbangkan kekhususan ini.
Pengujian sistem melibatkan pengujian seluruh sistem untuk kesalahan dan bug. Pengujian ini dilakukan dengan cara interfacing komponen perangkat keras dan perangkat lunak dari keseluruhan sistem (yang sebelumnya telah diuji unit dan integrasinya) kemudian diuji secara keseluruhan. Pengujian ini terdaftar di bawah metode pengujian kotak hitam, di mana perangkat lunak diperiksa untuk skenario yang diharapkan pengguna, pengecualian potensial, dan kondisi kasus tepi. Kategori pengujian khusus yang dapat disebutkan:
- Pengujian yang dipicu peristiwa: Diprakarsai oleh peristiwa tertentu atau perubahan status dalam masa pakai produk perangkat keras (misalnya, pengaktifan, penyetelan ulang, penonaktifan). Tujuannya adalah untuk mendeteksi kesalahan permanen.
- Pengujian yang dipicu waktu: Dimulai pada waktu yang telah dikonfigurasi sebelumnya dalam operasi normal sistem, dilakukan secara berkala untuk mendeteksi kesalahan permanen. Ini berguna dalam sistem yang berjalan untuk waktu yang lama, di mana tidak ada peristiwa pemicu pengujian yang signifikan terjadi. Pengujian yang dipicu oleh waktu juga berguna untuk mendeteksi kesalahan yang terputus-putus.
Penerimaan Produk Perangkat Keras dengan Perangkat Lunak Tertanam
Nilai produk untuk produk perangkat keras dengan perangkat lunak tertanam biasanya divalidasi setelah langkah penerimaan produk dalam metodologi water-scrum-fall. Perangkat keras dengan ekosistem perangkat lunak tertanam harus memprioritaskan perangkat keras daripada perangkat lunak untuk validasi dan penerimaan. Seperti yang dinyatakan sebelumnya, perubahan perangkat keras lebih sulit dan mahal untuk dilakukan. Sudah umum bagi manajer produk untuk memikirkan solusi inovatif, yang diperlukan untuk memecahkan masalah penerimaan atau menyesuaikan nilai dengan mempertimbangkan kendala karena tidak dapat mengubah perangkat keras dan mendukung iterasi tambahan di bidang pengembangan perangkat lunak.
Manajer produk yang sangat baik memiliki ketajaman produk dan kekuatan visi yang besar dalam memperkirakan kebutuhan perangkat keras dan memprioritaskan fitur-fitur yang tepat yang dapat disertakan sehingga model bisnisnya baik, penerimaannya solid, dan pengguna senang menggunakan produk tersebut. Mempertimbangkan perangkat lunak tertanam, "dekorasi" perangkat keras seharusnya tidak mengejutkan, karena perlu mengikuti aturan dan batasan, didorong oleh proses pengembangan perangkat keras, prosedur sertifikasi, tantangan produksi, dan penerimaan pasar.
Pengembangan Perangkat Keras Membutuhkan Kelincahan Terkelola
Agile telah menguasai dunia pengembangan perangkat lunak dan sekarang mulai merambah ke ruang perangkat keras. Namun, kondisi produk perangkat keras dengan pengembangan perangkat lunak tertanam memiliki berbagai tantangan:
- Kurangnya bakat khusus
- Sistem kontrol versi yang tidak disesuaikan untuk perangkat keras
- Fasilitas produksi yang terdelokalisasi
- Perubahan yang lebih sulit dilakukan dibandingkan dengan perangkat lunak
- Persyaratan sertifikasi dan peraturan yang menimbulkan hambatan perencanaan
Tantangan-tantangan ini mempersulit penerapan prinsip-prinsip tangkas dengan cara yang sama seperti yang dilakukan oleh perusahaan perangkat lunak.
Untuk mengatasi tantangan ini, diperlukan pendekatan kelincahan terkelola dalam bentuk water-scrum-fall. Pengembangan perangkat lunak yang disematkan dibuat mengikuti prosedur scrum standar, sementara langkah-langkah lain seperti pembuatan ide, pembuatan spesifikasi, dan pengujian diimplementasikan dalam pengaturan air terjun. Hal ini memungkinkan perusahaan perangkat keras untuk menuai hasil yang ditawarkan Agile sambil mempertahankan pendekatan manajemen produk yang berfungsi yang harus mempertimbangkan berbagai kendala yang tercantum di atas. Pendekatan kelincahan terkelola ini memberikan jalan maju yang sukses dalam konteks kondisi pasar yang berubah dengan cepat dan peningkatan teknologi yang konstan.