طراحی و توسعه محصولات الکترونیکی در مقابل محصولات دیجیتال

من خوش شانس بودم که توسعه محصولات فیزیکی و محصولات دیجیتال را مدیریت و مدیریت کنم. از آنجا که عشق و علاقه به هر دو را به اشتراک می گذارم ، فکر کردم دیدگاه ها و برخی مشاهدات خود را در مورد تفاوت ها و تشابهات بین فرآیندهای توسعه آنها ارائه دهم.

معنی یک محصول برای…

محصولی چیست؟ چیزی است که تولید و به فروش می رسد ، یا چیزی است که برای کاربران ارزش ایجاد می کند؟ تعریف اول فقط مربوط به محصولات فیزیکی است و آنچه را که ما با محصولات انجام می دهیم و نحوه ساخت آنها را نشان می دهد. تعریف دوم بازتر و مدرن تر است و نشانگر این است که چرا ما به محصولات نیاز داریم. محصولات فیزیکی ملموس هستند؛ کاربران می توانند آنها را لمس کرده ، آنها را ببینند ، بو کنند و احساس کنند. همه ما فیلمهای کارخانه های بزرگ را مشاهده کرده ایم و می توانیم درک کنیم که ساخت آنها چقدر گران و پیچیده است. محصولات دیجیتالی در ابر یا مراکز داده از راه دور زندگی می کنند. درک ما از اندازه ، پیچیدگی و معنای ساخت آن برای ما دشوارتر است. به عنوان مثال ، اگر به جلوی جستجوی گوگل نگاه کنیم ، فقط می توانیم یک خط جستجو را ببینیم ، اما در پشت صحنه ، در باطن ، صدها هزار سرور در حال اجرا و میلیاردها خط کد هستند.

هنگامی که توسعه دهندگان نرم افزار شروع به ساخت محصولات دیجیتالی کردند ، حدود 25 سال پیش ، آنها از فرآیندهای و ابزارهای مشابهی استفاده کردند که برای ساخت محصولات فیزیکی مورد استفاده قرار گرفت. اثبات شده ترین فرآیند برای مدیریت پروژه ، در آن زمان ، آبشار بود زیرا کمبود آن را در کل چرخه پروژه تضمین می کرد. هرچند که مدیران پروژه های دیجیتال تجربه بیشتری کسب کرده و تقریباً در نیمی از پروژه ها شکست خورده اند ، آنها متوجه شدند که به تغییر نیاز دارند. آنها شروع به ساختن ابزارهای خود کردند و به فرآیندهای غیر متعارف بی نظیر خود رسیدند. در حدود 2001 ، تعداد بیشتری از تیم ها استفاده از Scrum و Kanban را آغاز کردند و مانیفست چابک ظاهر شد. گیت در سال 2005 توسط لینوس توروالدز ایجاد شد که پایه و اساس پروژه های منبع باز را پایه گذاری کرد. شاید برای محصولات دیجیتال کمال به اندازه چابکی مهم نباشد. امروز ، 25 سال بعد ، فرایندهای توسعه ، ابزار و فرهنگ هر دو تیم محصول بسیار از هم فاصله دارند.

در طی پنج سال گذشته ، جاسازی الکترونیک در محصولات فیزیکی و اتصال آنها به اینترنت به نوعی یک اپلیکیشن - روشی که به آن IOT (اینترنت چیزها) گفته می شود ، بسیار آسان و ارزان بود. انجام این کار در حدود 2 دلار در هر محصول است که توضیح می دهد چرا اخیراً شاهد هستیم که بسیاری از محصولات جدید IOT ظهور می کنند ، برخی از آنها بسیار سرگرم کننده هستند ... در سطح تیم محصول ، این روند دو نوع فرهنگ ، دو نوع فرآیند و دو نوع ابزار. هر زمان که دو فرهنگ به هم می ریزند ، اتفاقات جالبی شروع می شود. سخت افزار منبع باز اکنون در همه جا قرار دارد و برخی از افراد شروع به تماس خود با سازندگان می کنند. تفاوت بین سازنده و تولید کننده چیست؟ آیا ما می خواهیم شاهد همگرایی بین این فرآیندها باشیم؟ یا ما به عنوان CTOs و مدیران محصولات IOT محکوم شده ایم تا برای همیشه بین این فرهنگ ها ارتباط برقرار کنیم؟

امیدوارم این وبلاگ را جالب و مفید بدانید و به توسعه دهندگان از سراسر پشته کمک کنید تا چالش های یکدیگر را درک کنند.

نقش ها و مهارت ها

روند جدیدی برای توسعه دهندگان نرم افزار وجود دارد که بتواند پشته کامل نرم افزار را توسعه دهد. این بدان معنی است که آنها هر دو کد باطن را توسعه می دهند: کدی که روی سرور / ابر و کد جلویی اجرا می شود: کدی که روی دستگاه اجرا می شود. آنها حتی ممکن است نقش DevOps را به عهده بگیرند: مهندسینی که وظیفه تنظیم سیستم ، پیکربندی آن ، ایمن سازی آن و سپس خودکار سازی روند تغییر را دارند. غیر ممکن نیست که یک شخص بتواند یک برنامه یا بازی ساده دیجیتالی را ایجاد و راه اندازی کند. با این حال ، هنگامی که به محصولات IOT که معمولاً شامل یک دستگاه الکترونیکی و یک نوع برنامه است ، می پردازید ، تیم فنی به مهارت و نقش بیشتری نیاز دارد.

توسعه دهندگان جاسازی شده مسئولیت کدی را که در دستگاه اجرا می شود و طراحان برد مسئولیت توسعه برد الکترونیکی را بر عهده دارند.

اگرچه امروزه با کمک Espruino ، توسعه دهندگان Javascript می توانند به صورت تئوری هر سه سطح کد: کد جلویی ، کد پس زمینه و کد تعبیه شده را توسعه دهند ، اما آنها احتمالاً با طراحی صنعتی و تخته ای مبارزه خواهند کرد که به مهارت های کاملاً متفاوتی نیاز دارد. من توسعه دهندگان با استعدادی را دیده ام که جک همه تجارتها هستند و می توانند به سرعت از اصلاح کلاسهای CSS گرفته تا نوشتن اسکریپتهای مهاجرت برای پایگاههای داده خود حرکت کنند. به شخصه ، من فکر می کنم که توسعه دهندگان حرفه ای باید در هر مقطع زمانی و فقط در یک لایه تسلط داشته باشند. این فقط مربوط به داشتن بهترین مهارت ها و تکنیک ها یا پیاده سازی عملکردهای مورد نیاز نیست ، بلکه مربوط به آنچه به شما اهمیت می دهد و با کدام حالت ذهنیت کار خود را انجام می دهید.

من تلاشی برای توصیف مسئولیت های هر نقش در تیم کرده ام. من ممنونم که وارد یک منطقه خطرناک می شوم زیرا ممکن است نقش ها در تیم های مختلف کمی تغییر کند ، بنابراین لطفاً سعی کنید جنگل را ببینید و نه درختان.

چرا نمی توان یک نفر به همه اینها اهمیت داد؟ زیرا در توسعه محصول تجارت و تعارض وجود دارد و شما می خواهید هر نیاز را به روشی متعادل و متقارن نشان دهید.

در طول سالها ، من احترام بین انواع مختلف برنامه نویسان ، بلکه عدم آگاهی دیده ام. من توسعه دهندگان جلوه ای را دیده ام که فکر می کنند پس زمینه آسان است و توسعه دهندگان با پشتیبان هستند که فکر می کنند ظاهر مورد نظر خسته کننده است. من همچنین برنامه نویسان جاسوسی دیده ام که نمی دانند REST چیست. من قبلاً ذکر کردم که اعتقاد ندارم که توسعه دهندگان حرفه ای و مهندسان باید بیش از یک لایه تسلط داشته باشند. با این حال ، من به شدت اعتقاد دارم که آنها باید بدانند منظور از یک بودن چیست و حتی ممکن است قدمی جلوتر بروند و روی یک پروژه ساده کار کنند که آنها را در معرض چالش ها و فرآیندهای مختلف قرار دهد. دانش گسترده می تواند در بهبود ارتباطات ، احترام و شفافیت در بین اعضای تیم کمک کند و همچنین باعث افزایش خلاقیت و بهره وری تیم به عنوان یک کل خواهد شد.

مدیریت پروژه

تفاوت بین یک پروژه و یک محصول چیست؟ یک پروژه طرحی است برای رسیدن به یک هدف یا محدوده خاص در یک محدودیت زمانی خاص و منابع. یک پروژه آغاز و پایان دارد. اگر مهلت پروژه ندارید ، احتمالاً شما یک پروژه را مدیریت نمی کنید. با پایان یافتن این پروژه ، محصول همچنان به زندگی خود ادامه می دهد.

تجزیه و تحلیل ریسک: بیایید در مورد تفاوت ها و شباهت ها بین مدیریت پروژه یک محصول فیزیکی و کالای دیجیتال صحبت کنیم. من شخصاً دوست دارم مدیریت پروژه را به عنوان یک فرایند ریسک محور در نظر بگیرم که در آن مرتبا خطرات بالا را شناسایی می کنم و سعی می کنم با استفاده از طرحی برای به حداقل رساندن آنها اقدام کنم. خطرات پروژه هر چیزی است که بر موفقیت پروژه یعنی عدم تحقق هدف ، مهلت ، محدوده ، هزینه یا کیفیت نهایی محصولات تأثیر می گذارد. برای محصولات دیجیتال ، یکی از بزرگترین خطرات ساخت محصولی است که کاربران به آن نیاز ندارند یا دوست ندارند. مدیران محصول دیجیتال داستان خوبی را تصور می کنند ، باور دارند ، حدس می زنند و می گویند ، اما تا زمانی که کاربران شروع به تعامل با محصول نکنند ، این فقط فرضیات هستند. برای آزمایش فرض ، مدیران محصول باید سریع حمل کنند ، فرضیه خود را آزمایش کرده و چابک باشند. برای محصولات فیزیکی ، بعد از تولید صدها و هزاران محصول قبلاً ، بزرگترین خطر یافتن یک مشکل جبران ناپذیر در مرحله بسیار اواخر است. ساخت نیاز به کمال دارد و بدون آن پروژه شکست خواهد خورد. برای کاهش این خطر ، مدیران پروژه های فیزیکی یک فرایند بررسی و ورود به سیستم را بین مراحل انجام می دهند که به آن آبشار گفته می شود.

هر روش برای کاهش خطرات مختلف طراحی شده است ، و هر مدیر پروژه باید بر اساس تجزیه و تحلیل ریسک ، تصمیم به تصمیم گیری در مورد پروژه بگذارد. بعضی اوقات افراد و تعاملها مهمتر از فرآیندها و ابزارها هستند و بعضی اوقات فرآیندها از اهمیت بیشتری برخوردار هستند. بعضی اوقات کار کردن نرم افزار از اسناد مهمتر است و بعضی اوقات مستند سازی از اهمیت بیشتری برخوردار است. بعضی اوقات همکاری مشتری از قرارداد کتبی اهمیت بیشتری دارد. و گاهی اوقات یک قرارداد کتبی می تواند شرکت شما را نجات دهد. بعضی اوقات پاسخ دادن به تغییر مهم است ، اما بعضی اوقات پیروی از برنامه مهمتر است. منظور شما را می گیرید.

ابزارها و مراسم تیمی: مدیران پروژه باید از ابزارهایی استفاده کنند که فرایندی را که می خواهند پروژه ها را مدیریت کنند ، پیاده سازی کنند. Microsoft Project ابزاری عالی برای پروژه های آبشار است. JIRA و Trello ابزاری عالی برای پروژه های چابک و فرآیندهای پشتیبانی مانند Kanban و Scrum هستند. هرچه ابزار باشد به یاد داشته باشید که این تنها ابزاری است و نه جوهر. تیم ها همچنین مراسم مختلفی دارند. در آبشار ، تیم ها قبل از هر سقوط و اسناد بررسی می کنند ، CAD خروجی ها یا مشخصات آزمایش را تولید می کند. تیم چابک ممکن است هر روز برای یک استراحت روزانه و هر دو هفته یکبار برای برنامه ریزی اسپرینت دیدار کند. این مراسم اعضای تیم را در برنامه هم تراز می کند و ارتباط بین اعضای تیم را بهبود می بخشد.

طراحی و نمونه سازی

طراحی: آیا امروز محصولی وجود دارد که طراحی نقش مهمی در موفقیت آن نداشته باشد؟ اگر چیزی نباشد که بخواهیم بفروشیم چه محصولی است؟ چیزی که باید جذاب و زیبایی شناسی باشد ، که بتوانیم به آن افتخار کنیم. رفته اند روزهایی که داشتن عملکرد و عملکرد مناسب به اندازه کافی خوب است. در مورد محصولات الکترونیکی ، طراحی صنعتی نه تنها تعامل انسان ، قابلیت استفاده و تجربه مشتری بلکه شرایط محیطی که در آن از محصول استفاده می شود و فرایند تولید را نیز در نظر می گیرد (DFM: طراحی برای ساخت). برای محصولات دیجیتالی ، این طرح همچنین باید دستگاههای مختلفی را که ممکن است این نرم افزار روی آن اجرا شود (موبایل ، دسک تاپ ، صفحه نمایش بزرگ) و انواع نقش ها و کاربرانی که با آن تعامل دارند ، ارائه دهد.

انواع مختلفی از روش طراحی برای انواع مختلف محصولات اعمال می شود: طراحی تجربه به عنوان بخشی از یک تجربه لذت بخش که می خواهیم ایجاد کنیم به محصول نگاه می کند. "ما در حال فروش یک بازی نیستیم ، می خواهیم یک خانواده تجربه یک ساعته را بفروشیم". طراحی خدمات ، محصول را به عنوان بخشی از پایان خدمات بین ارائه دهنده خدمات و یک کاربر می بیند. "از لحظه ای که تصمیم گرفتید تا زمان رسیدن به مقصد خود سفر کنید" ، "ما در حال فروش دوربین امنیتی نیستیم ، ما به شما 24/7 حفاظت می فروشیم".

نمونه سازی اولیه: با کمک چاپگرهای سه بعدی و فناوری VR / AR ، تهیه نمونه اولیه مکانیکی محصول فیزیکی شما بسیار آسان است. شما می توانید مشتریان خود را به آن نشان دهید ، برخی از برچسب ها را روی آن قرار دهید ، تعدادی سیم و LED را وصل کنید ، آنها بلافاصله هدف آن را خواهند فهمید و شاید بتوانید آنها را متقاعد کنید که محصول شما آماده و تجاری است. می توانید آن را در محیط واقعی قرار دهید و ببینید آیا مکانیکی متناسب است و آیا نگهداری آن آسان است. می توانید ده نسخه تهیه کنید و بین آنها مقایسه کنید و در مورد پیکربندی نهایی تصمیم بگیرید. هیچ چیزی قدرتمندتر از این نیست که به مشتریان و سرمایه گذاران خود چیزی بدهید که بتوانند دستشان را بگیرند. مردم اسباب بازی ها و چیزهای ملموس را دوست دارند و اگرچه طراحی مکانیکی از نظر زمان توسعه فقط 1٪ از محصول نهایی است ، مردم معتقدند که شما قبلاً 80٪ آن را کامل کرده اید. با نمونه سازی نرمافزار ، رسیدن به این سطح کار آسانی نیست. Sketch و InVision ابزارهای خوبی هستند ، اما کاربران بلافاصله می فهمند که این یک محصول واقعی نیست. داده ها ثابت است و اثر متقابل آنها هیچ تاثیری بر روی آن ندارد. این بخشی از دلایلی است که مدیران محصولات دیجیتال رویکرد چابک و مفهوم MVP را اتخاذ کرده اند. تصور اینکه چگونه کاربران قبل از آماده کردن محصول شما با محصول شما ارتباط برقرار کنند و عاشق آن شوند ، بسیار سخت است و می خواهید داده های واقعی را بدست آورید ، بنابراین می خواهید هرچه سریعتر آن را ارسال کنید و شروع به جمع آوری بازخورد واقعی کنید.

نمونه سازی فیزیکی و دیجیتال

توسعه

تصمیمات اولیه بیشترین تأثیر را دارند: هربار که یک پروژه جدید را شروع می کنم ، هیجان زده می شوم. معماری مناسب چیست؟ کدام فناوری مناسب ترین راه حل برای آن خواهد بود؟ آیا باید یک MCU 8 بیتی یا CPU 32 بیتی انتخاب کنیم؟ آیا این یک پروژه خوب برای معرفی GraphQL است ، یا باید دوباره با REST چسبیده باشیم؟ کدام فناوری بی سیم مناسب ترین مورد استفاده است: بلوتوث 5 یا Narrowband IOT؟ بانک اطلاعاتی مناسب برای استفاده چیست؟ این بار PostgreSQL یا شاید یک پایگاه داده گرافیکی باشد؟ این تصمیمات برای موفقیت پروژه بسیار مهم است. بعضی اوقات ، ما تصمیمات فنی را خیلی سریع و بدون تحلیل مناسب انجام می دهیم و بعد از گذشت سه ماه از آنها پشیمان می شویم ، تغییر آنها بسیار سخت و دردناک می شود ، و ساده تر می توان به سرمایه گذاری فناوری به عنوان یک دارایی نگاه کرد و نه به عنوان مانع. این مسئله هم در مورد محصولات الکترونیکی و هم برای محصولات دیجیتال صادق است ، اگرچه تغییر نوع پردازنده پس از ارسال محصولات به مشتریان ، تقریباً کاری غیرممکن است که شرم آور نباشد.

تصمیمات اولیه بیشترین تأثیر را دارد

توسعه: بین روند توسعه محصولات الکترونیکی و محصولات دیجیتال تفاوت های بسیاری وجود دارد ، و شباهت های زیادی وجود ندارد. بیشتر زمان توسعه برای هیئت مدیره PCB به انتخاب اجزای مناسب و طراحی چیدمان می رود. برخی از کارها کاملاً فنی هستند و سیمها را از پین U1 120 120 به پین ​​12 UP اجزاء متصل می کنند. بعضی از کارها برای اندازه گیری نویز و میزان مصرف هر یک از آنها نیاز به نمونه سازی کاملی در حدود سه نوع سنسور دارند. اشکال زدایی و بهینه سازی توسعه جاسازی شده دشوار است ، دیدن این برنامه نویسان جاسازی شده با استفاده از پین های GPIO برای تشخیص اینکه آیا یک تابع فراخوانی شده است و اندازه گیری چقدر زمان اجرای آن بسیار سخت است ، بسیار معمول است. استفاده از FPGA در محصول الکترونیکی شما یک تصمیم جسورانه است اما گاهی اوقات تنها راه حل رسیدن به اهداف عملکرد / هزینه شماست. توسعه FPGA یک قلمرو کاملاً متفاوت است و جایی بین توسعه ASIC ، توسعه تخته PCB و توسعه تعبیه شده است. برای توسعه دهندگان نرم افزار ، بیشتر وقت در… نوشتن کد سرمایه گذاری می شود. در مشاهده کارهای روزانه شما بسیار رضایت بخش است ، تمام این خطوط کد ، کد متعهد شده و درخواستها را جلب می کند. این به اندازه کافی ساده به نظر می رسد ، اما میزان کد و تغییرات بسیار زیاد است ، بنابراین یک فرایند مناسب مدیریت و بازبینی پیکربندی برای سازماندهی پایه کد ، کاهش بدهی فنی و افزایش دانش در تیم ضروری است.

الگوریتم ها ، فیزیک و داده های علوم: این معمولاً مغز محصول است ، جایی که شرکت ها تمایل دارند که IP خود را وارد کنند. طراحان هیئت مدیره با فیزیکدانان برای انتخاب سنسورها ، طراحی AFE (انتهای جلوی آنالوگ) در اطراف خود یا طراحی یک کار همکاری می کنند. آنتن ویژه توسعه دهندگان جاسازی شده با مهندسین DSP و ریاضیدانان کار می کنند تا الگوریتم های DSP در زمان واقعی را در نرم افزار خود برای فیلتر کردن سیگنال ها ، کشف الگوهای ، یا پیاده سازی برخی فرمول های ریاضی بهینه شده برای پردازش / رمزگذاری داده ها ، کار کنند. در زمان واقعی بدان معنی است که شما باید پردازش را در مدت معینی از سیکل های CPU انجام دهید ، در غیر این صورت شما آماده پردازش سیگنال بعدی و آن را از دست نخواهید داد یا نمی توانید در مدت زمان تأخیر موردنیاز وقایع را صادر کنید. توسعه دهندگان Backend با دانشمندان داده برای پیاده سازی فرایندهای دسته ای برای توصیه محصولات جدید ، پیدا کردن ناهنجاری ها ، پیشنهاد دوستان ، آموزش یک مدل یادگیری عمیق ، استفاده از NLP برای تجزیه و تحلیل متن ، امتیاز دادن به صفحات وب و غیره همکاری می کنند. آنها در حال انجام تجسم اطلاعات هستند. با استفاده از کتابخانه هایی مانند D3JS ، آنها تصاویری شگفت انگیز ایجاد کرده و داده ها را به روشی مفید و جمع آوری در اختیار کاربران قرار می دهند.

در سراسر پشته این افراد به کاهش نویز ، بهبود سیگنالها و پیدا کردن تعادل مناسب بین تشخیص خطا (منفی کاذب) و زنگ خطر کاذب (مثبت کاذب) اهمیت می دهند ، گریه می کنند که به داده های بیشتری نیاز دارند یا آزمایش های بیشتری انجام می دهند و پرش خواهند شد. خوشبختانه اگر آنها در بهبود عملکرد 5٪ موفق باشند. تصمیم جالب در مورد محصول تصمیم گیری در مورد چگونگی تقسیم وظایف علم داده در پشته است. به عنوان نمونه ، الکسا شامل مجموعه ای از میکروفون ها در سطح صفحه ، مقداری کد DSP در سطح سیستم عامل و علم داده پیشرفته در سطح باطن برای تشخیص گفتار ما است.

ابزارها: یک توسعه دهنده جلوه دهنده و یک توسعه دهنده تعبیه شده را با مقایسه ابزارهای توسعه آنها با یکدیگر تصور کنید. توسعه دهنده تعبیه شده توسعه دهنده جلوی مقدمه را به سمت جدول خود می رود و به تفاوت های منبع تغذیه ، اسیلوسکوپ و آنالیزور منطق اشاره می کند. توسعه دهنده جلسات توسعه دهنده تعبیه شده را به نزدیکترین مکان قهوه می برد. آنها قهوه سفارش می دهند و مکانی آرام پیدا می کنند که می توانند چند ساعت در کنار هم بگذرانند. وی سپس مرورگر Chrome خود را به حالت توسعه تغییر می دهد و به توسعه دهنده تعبیه شده نحوه مشاهده ترافیک شبکه و نحوه دیدن سبک CSS یک عنصر HTML خاص را نشان می دهد.

منظور از دلتنگی ها برای…

ابزارهای اشکال زدایی از توسعه دهنده تا توسعه دهنده متفاوت است و استفاده از آنها به صورت کارآمد جایی است که تجربه واقعی نهفته است. دانستن غریزه مشکل در کجاست و استفاده از ابزارهای خود برای حل کردن آن مهمترین مهارت توسعه دهندگان است. من دیده ام که توسعه دهندگان ساعت ها و روزها مشغول رفع اشکال در مشکل هستند ، و سپس از یک توسعه دهنده باتجربه که ثانیه ها مشکل را پیدا می کند ، درخواست کمک کنید. من نمی توانم به اندازه کافی استرس داشته باشم ، داشتن ابزار مناسب برای هر کار معنی حرفه ای بودن است. و این برای هر حرفه ای صادق است

معنی اشکال زدایی و ابزارهای آزمایش برای…توسعه دهندگان نرم افزار این را ارعاب کننده می دانند

QA و تست

تست های محیطی: وقتی محصول خود را آزمایش می کنیم ، می خواهیم تأیید کنیم که در تمام تنظیمات و محیط های مختلفی که کاربران انتظار دارند از آن استفاده کنند ، به درستی کار می کند. برای محصولات فیزیکی ، محیط معمولاً به معنی درجه حرارت (سرمای شدید ، بسیار گرم) ، لرزش (تصور یک محصول اتومبیل) ، شوک (از دستان شما به کف بتونی می افتد) ، رطوبت ، اشعه ماوراء بنفش و اشعه خورشیدی ، ESD (این نورهای کوچک که می آید از تخلیه الکترو استاتیک) ، EMI / RFI ، و غیره برای محیط محصولات دیجیتال معمولاً به معنی نوع مرورگر (کروم ، اینترنت اکسپلورر ، فایرفاکس ..) ، سیستم عامل (آندروید ، IOS ، OSX ، ویندوز) ، دستگاه (موبایل ، دسک تاپ ، کنفرانس صفحه) و سطح اتصال شبکه (4G ، Wifi ، آفلاین). ما معمولاً روی هر ترکیب ممکن آزمایش نمی کنیم زیرا انجام چنین کاری غیرممکن است ، بنابراین ما مجموعه ای از پیکربندی را ارائه می دهیم که امیدوارم سناریوهای کافی را برای تشخیص مشکلات درون مشخصات محصول بپوشاند.

معنای محیط خارجی چیست تا…

قابلیت اطمینان / دوام (آزمایش چرخه زندگی): اینها آزمایشاتی هستند که سعی می کنند آنچه را که برای محصول در طول زندگی رخ می دهد ، شبیه سازی کند. برای محصولات فیزیکی که مواد به نقاط ناکام خود می رسند ، بیشتر اهمیت دارد. مقررات خاصی وجود دارد که صنعت به ما کمک می کند تا با قرار گرفتن در معرض شرایط محیطی شدید ، سن محصول را تسریع کنیم. اصولاً برای آزمایش اینکه یک محصول بعد از پنج سال در دمای اتاق به طور صحیح عمل کند ، می توانیم آن را در دمای 70 درجه و لرزش 10 گرم به مدت یک روز آزمایش کنیم (فقط مثال !!!). این آزمایشات HALT (زندگی بسیار شتاب) نامیده می شوند

تست های شدید شرایط (بار ، لبه): اینها تست هایی هستند که رفتار محصول را در شرایط شدید یا لبه تست می کنند. به عنوان مثال ، اگر یک محصول الکترونیکی روی 5 ولت کار کند ، ما آن را در ولتاژ 4.5 ولت و 5.5 ولت آزمایش خواهیم کرد ، حتی ممکن است سنبله ولتاژ به اندازه 25 ولت یا -5 ولت را تزریق کنیم تا ببینیم آیا این محصول در برابر خطاهای کاربر یا افزایش برق مقاومت دارد. برای محصولات دیجیتال ممکن است زمینه های ورودی را با مقادیر غیر منطقی به چالش بکشیم. برای مثال ممکن است نام هایی وارد شویم که 1000 نویسه داشته باشند یا دارای علائم بی معنی هستند. اگر ما محصول را برای بار مشخص (50 کاربر همزمان) طراحی کنیم ، رفتار آن را تحت 100 کاربر همزمان آزمایش خواهیم کرد. ایده این آزمایشات عمدتاً کشف حالتهای جدید خرابی است. ما انتظار نداریم که این محصول کاملاً کار کند ، اما ممکن است موارد مهمی ، رفتارهای غیر منتظره یا تنگناهای مرتبط با شرایط عادی را نیز کشف کنیم.

آزمایشات انطباق / امنیت: هر دو نوع محصول ، گاهاً برای رعایت استانداردها و مطابقت با آنها لازم است. محصولات الکترونیکی باید ایمن ، ایمن و مطمئن باشند و از کاربر در برابر شوک الکتریکی یا گرمای بیش از حد محافظت کنند (UL ، CE ، FCC ..) ، همچنین باید مطابق با استانداردهای بی سیم خاص مانند Wifi یا بلوتوث باشند. محصولات دیجیتالی که دارای اطلاعات شخصی شناسایی شده (PII) مانند شماره کارتهای اعتباری (PCI ، ISO / IEC 27001 ، NIST) یا شماره های تأمین اجتماعی (GDPR) هستند ، باید از داده ها در برابر انواع حملات و سهل انگاری کارمندان محافظت کنند. برای هر دو محصول ، روند انطباق گران و طولانی است ، اما روش هایی برای کاهش هزینه و استفاده از ماژول ها و خدمات از پیش تصویب شده وجود دارد.

معنی انطباق با…

پوشش تست: شما به عنوان یک طراح تابلو هرگز نمی توانید مطمئن باشید که روند تولید بدون نقص بوده است. در بعضی موارد ، میان ردپای مجاور ، شورت های ریز وجود دارد که فقط میکروسکوپ را می توانید مشاهده کنید. در موارد دیگر ، قطعات الکترونیکی به اندازه کافی قابل اعتماد نیستند یا حتی ممکن است جزء تقلبی باشند. به عنوان بخشی از فرایند کیفیت ، طراحان تابلو و توسعه دهندگان تعبیه شده باید با هم همکاری کنند تا ابزارهای آزمایشی را بنویسند که تأیید کند که هر اتصال و هر مؤلفه همانطور که با پوشش 100٪ پیش بینی می شود کار می کند. من در تست JIG هایی که هر سنسور و هر ورودی به صفحه را شبیه سازی می کند کار کرده ام تا به 100٪ پوشش برسیم. همچنین اجرای این آزمایش ها به موازات تست های غربالگری بسیار شتاب (HASS) که صفحه در معرض لرزش و چرخه های حرارتی است ، خوب است.

به همین ترتیب ، با نرم افزار ، یک کار خوب نوشتن کد تست است که حداقل 99٪ کد شما را پوشش می دهد. قبل از استفاده از كد جدید به محیط تولید ، ابزار اتوماسیون مجموعه كد آزمایشی را اجرا می كند و تأیید می كند كه آنچه قبلاً كار كرده بود ، هنوز هم كار می كند. برای هر دو مورد کار بر روی این ابزارهای آزمایش باید با توسعه محصول (گاهی اوقات حتی قبل از: TDD) شروع شود و باید از منابع مناسب تهیه شود.

طرح / بررسی کد: مردم اشتباه می کنند. هرکسی که فکر کند آنها را تجربه نمی کنند ، یا به اندازه کافی تجربه نشده اند یا حافظه کوتاهی دارند. به ویژه ، هنگام طراحی طرح هیئت مدیره PCB و قرار دادن اجزای جدید ، اشتباه در رابطه با پیکربندی pinout و ابعاد فیزیکی اجزای جدید بسیار آسان است. اشتباهاتی که فقط هفته ها یا ماهها بعد از آن پیدا خواهید کرد. شما می توانید به طرح نگاه کنید ، و آن را در مقابل برگه اطلاعات تأیید کنید ، دوباره نگاه کنید و دوباره تأیید کنید و در هر دو حالت آن را از دست می دهید. به همین دلیل ، بررسی مستقل و ورود به سیستم یک روش استاندارد در توسعه محصول الکترونیکی است. توسعه دهندگان نرم افزار اغلب با توجه به امنیت اشتباه می کنند. به عنوان مثال ، آنها اغلب کلیدهای حساس را در مخازن کد عمومی یا در معرض مشتری قرار می دهند. درخواست pull روشی است برای اطلاع سایر اعضای تیم در مورد تغییرات شما قبل از ارتکاب آنها. آنها به چندین هدف خدمت می کنند: برای کشف نقایص و مشکلات ، بهبود خوانایی و مستندسازی کد و به اشتراک گذاری دانش در تیم. برنامه نویسی جفت روش دیگری است که توسط توسعه دهندگان نرم افزار برای به اشتراک گذاری دانش و بررسی کد یکدیگر استفاده می شود.

مدیریت پیکربندی: CM عملیاتی است که بطور سیستماتیک می تواند تغییرات را انجام دهد. این برای مستند سازی نسخه های محصول و ردیابی تغییرات اعمال شده در بین نسخه ها استفاده می شود. یک سیستم مدیریت پیکربندی خوب به شما امکان می دهد تا نسخه های محصول را تنها با استفاده از مصنوعات موجود در آن و بدون هیچ گونه دانش خارجی دیگری بسازید و آزمایش کنید. مهندسان DevOps از ابزارهای SCM (مدیریت پیکربندی نرم افزار) مانند GIT ، Ansible ، Terraform ، Chef برای ضبط کد ، پیکربندی و زیرساخت های محصول استفاده می کنند. آنها همچنین ممکن است این تغییرات را برای موضوعات JIRA مرتبط کنند تا رابطه بین درخواست اشکال / نقص / ویژگی و تغییرات واقعی ناشی از آن را مستند سازی کنند. مهندسان الکترونیک از ابزارهایی استفاده می کنند که بعضا PLM (مدیریت چرخه چرخه محصول) و گاهی HCM (مدیریت پیکربندی سخت افزار) نامیده می شوند. در اصل آنها به همان هدف خدمت می کنند ، اما ادغام ها و فرایندهای مختلفی را شامل می شوند. به عنوان مثال ، یک سیستم PLM ممکن است در سیستم ERP شما ادغام شود تا نشان دهد کدام قسمت از BOM محصول در موجودی شما حضور دارد.

ساخت و تولید

شما باید به عنوان شریک زندگی خود به سازنده خود نگاه کنید و نه به عنوان تهیه کننده خود. پس از همه ، شما حساس ترین دارایی خود را به سازنده خود می دهید: همه چیز برای ساخت محصول شما لازم است! تولید کننده شما به شما در معرفی روش های جدید تولید ، کاهش نقص ، بهبود کارایی فرایند کمک می کند و به نوعی برخی از خطرات و پاداش های محصول را به اشتراک می گذارد.

لاغر ناب همه چیز مربوط به صرفه جویی در هزینه است. برای محصولات فیزیکی ، لاغر به معنی:

  • تاخیر صفر در تمام مراحل خط تولید
  • پرداخت نقص ، بالاترین کیفیت برای هر محصول نهایی
  • ماشین آلات / مردم 100٪ مورد استفاده قرار می گیرند
  • بازخورد دانش: هر درس و بینش روند کار را بهبود می بخشد
  • فقط در زمان تولید: هر کالایی فروخته می شود ، بدون زباله

برای محصولات دیجیتال به معنی لاغر است:

  • مقیاس خودکار: مقیاس منابع محاسباتی بر اساس بار
  • پرداخت در هر ساعت

خطوط تولید: تنظیم خط مونتاژ با راه اندازی یک خط لوله نرم افزاری CI / CD (ادغام مداوم / تحویل مداوم) تفاوت چندانی ندارد. اگر کتاب پروژه ققنوس را خوانده اید ، حتماً به یاد می آورید که چگونه برخی از مفاهیم لاغر و DevOps از خط تولید فیزیکی در این کتاب به دست آمده اند. هر دو خط لوله با تمام آنچه برای ساخت ، آزمایش و حمل محصول شما لازم است را بر عهده دارند. با اضافه کردن اتوماسیون بیشتر ، می توانید سریعتر حمل کنید. برای محصولات الکترونیکی این به معنای کاهش هزینه ها و نقص ها و بهبود ظرفیت است ، برای محصولات دیجیتال ، این به معنی آزمایش سریع کاربر و طراحی تطبیقی ​​است.

تحویل در سراسر جهان: شباهت جالبی بین شبکه های تحویل محتوا (CDN) وجود دارد که از آنها برای ارائه دارایی وب به کاربران بر اساس موقعیت جغرافیایی استفاده می شود و نحوه توزیع در سراسر جهان برای کاهش هزینه های حمل و نقل و بومی سازی محصولات استفاده می شود. ذخیره سازی محتوا را می توان به عنوان انبارهای محلی یا خدمات تحقق مانند آمازون مشاهده کرد. برای هر دو نوع محصول ، حضور محلی باعث بهبود تجربه کلی مشتری در سراسر جهان می شود

به نظر می رسد حضور در سطح جهانی برای محصولات فیزیکی سخت تر است ، با این حال ، مقررات حفاظت از داده ها و بومی سازی زبان نیز به تلاش قابل توجهی نیاز دارند

خدمات Cloud: خدمات Cloud بسیار جذاب هستند ، شما می توانید با انتخاب صدها سرویس وب ، محصول دیجیتالی خود را در چند ثانیه بسازید. چند کلیک و بر اساس تقاضا ، به طور خودکار در بیش از 20 مرکز داده در سراسر جهان و مقیاس انجام می شود. چیزی در تولید وجود ندارد اما ممکن است این یک انقلاب صنعتی بعدی باشد. یک محصول دیجیتالی را تصور کنید که می توانید با استفاده از ماژول های از پیش تنظیم شده از قبیل چاپ سه بعدی ، ساخت PCB ، منبع قطعات ، مونتاژ تابلو و کابل ، آزمایش های در حال اجرا و ارسال مستقیم به مشتریان خود از یک طبقه تولید محلی محلی ، خط لوله تولید را تنظیم کنید. علاوه بر این ، این سرویس به کاربر نهایی امکان تنظیم رنگ محصول ، شکل و سایر ویژگی های شخصی سازی را می دهد. این به نظر می رسد یک رویا ، اما من مطمئن هستم که در هر نقطه ای از جهان آمازون روی چنین خدماتی کار می کند (حداقل امیدوارم که این کار را انجام دهند).

نتیجه

بین فرایند توسعه محصولات الکترونیکی و محصولات دیجیتال تفاوت های زیادی وجود دارد ، اما با نگاهی به آن از منظر 20 سال ، این شگفت آور است که ببینیم چند از اصول طراحی و فرایندهای طراحی محصولات دیجیتال اکنون توسط مدیران کالاهای فیزیکی مورد استفاده قرار گرفته است. AWS اخیراً در سیستمهای تعبیه شده در FreeRTOS اعلام کرده است. پیش بینی می کنم که طی 10-20 سال بین روند توسعه محصول دیجیتال و کالای فیزیکی تفاوت معنی داری وجود نخواهد داشت.

اگر می خواهید در مورد سفر من و نحوه مدیریت تیمی که در هر دو جهان زندگی می کند اطلاعات بیشتری کسب کنید ، احساس راحتی کنید که مستقیماً به من برسید.