جستار‌هایی در آداب مهندسی الگوپایه نرم‌افزار

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

یه نمونه‌ی ساده‌اش اینه که هزاران مهندس با مهارت در طراحی خودرو داریم اما حتی از همین افراد هم استفاده نمی‌شه. و می‌دانیم که دلایلش نه در مهندسی که در علوم انسانیه.

توی حوزه‌ی مهندسی نرم‌افزار هم همینه. ما قبلا در مورد این حرف زدیم که چرا برنامه‌نویس‌ها بدقول می‌شن: زمانی رو برای انجام پروژه‌ای اعلام می‌کنن اما سر اون زمان تحویل نمی‌دن، یا در نهایت چیزی که مشتری از اون‌ها خواسته تحویل نمی‌شه.

دلیلش رو می‌شه در این جستجو کرد که چهارچوب، مقدمه‌ها، آداب، اصول، یا دیسیپلین مهندسی نرم‌افزار انجام نمی‌شه.

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

اما این طیف به چه صورت عمل می‌کنه؟ از سمت کارفرما شروع می‌کنیم و به سمت توسعه‌دهنده حرکت ‌می‌کنیم. فرض ما بر اینه که کارفرما دید سطح کاروکسب (Business Level) داره و پیمانکار هم کاملا مهندسی به قضیه نگاه می‌کنه. بدیهیه که افرادی که از اون‌ها به عنوان تکنیکال‌رایتر و مدیر پروژه و تحلیل‌گر نرم‌افزار و تحلیل‌گر کاروکسب یاد می‌کنیم، این ارتباط رو شکل می‌دن.

قبل از اینکه طیف رو تشریح کنیم لازمه یاداوری کنم که اگر هنوز فکر می‌کنید که این کار‌ها بیهوده است، باید با حقیقتی رو به رو بشید. و اون هم این‌که هزینه‌های نداشتن نقشه‌ی راه هزینه‌هایی به نسبت بسیار بزرگ‌تر از پروژه رو به جا می‌ذاره.

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

بیاید یه قسم بخوریم. دست راست رو روی قلبمان بذاریم و قسم بخوریم. به قلم! قول بدیم که قبل از اینکه همه چی رو روی کاغذ نیاوردیم وارد کار مهندسی نشیم.

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

اگر ترجمه‌های عناوین نمودارها مضحک هستن، یه دلیل تاریخی داره. و اون اینه که شاید این چیزا خیلی کاربرد کمی در زندگی روزمره فارسی‌زبان‌ها دارند.

نخستین پناهگاه: تحلیل کسب و کار

گام اول: تشخیص محیط‌ها

Business Environments, ceopedia.org

گام دوم: محیط کلان

visual-paradigm.com

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

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

گام سوم: محیط صنعت

mindtools.com

پنج نیروی پورتر مدلی است که پنج نیروی رقابتی را که هر صنعت را شکل می‌دهند شناسایی و تحلیل می‌کند و به تعیین نقاط ضعف و قوت یک صنعت کمک می‌کند. این پنج نیرو عبارتند از:

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

گام سوم: محیط سازمان

business-to-you.com

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

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

تجزیه و تحلیل SWOT می تواند به شما در کشف بینش های جدید، کشف مسائل پنهان، اولویت بندی اهداف و ایجاد ایده های جدید برای عمل کمک کند. همچنین می‌تواند به شما کمک کند تا سازمان خود را با مأموریت، چشم‌انداز و ارزش‌هایش هماهنگ کنید. تجزیه و تحلیل SWOT می تواند برای یک پروژه خاص یا طرح تجاری کلی شما استفاده شود.

گام چهارم: الگوی زمینه

Context Model

مدل‌سازی فرآیند کسب‌وکار (BPM) فعالیتی است که فرآیندهای یک شرکت را به نمایش می‌گذارد، به طوری که فرآیندهای فعلی کسب‌وکار را می‌توان تجزیه و تحلیل، بهبود و خودکار کرد. معمولاً با استفاده از تکنیک‌های گرافیکی یا متنی برای ایجاد نمودارها یا فلوچارت‌هایی انجام می‌شود که مراحل، ورودی‌ها، خروجی‌ها، نقش‌ها و منابع درگیر در یک فرآیند را نشان می‌دهد.

مدل سازی فرآیند کسب و کار مزایای بسیاری برای سازمان ها دارد، از جمله:

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

مدل زمینه مدل‌سازی فرآیند کسب‌وکار مزایای زیادی برای سازمان‌ها دارد، مانند:

گام پنجم: جریان‌های عملکردی

Functional Flow

جریان عملکردی مدل‌سازی فرآیند کسب‌وکار، نمایشی گرافیکی از رویدادها و فعالیت‌هایی است که در یک گردش کار رخ می‌دهند، همراه با مالکان، دستگاه‌ها، جدول‌های زمانی و نتایج هر مرحله. این یکی از تکنیک‌های کلاسیک مدل‌سازی فرآیند کسب‌وکار است، همراه با نمودارهای جریان، نمودارهای جریان داده، نمودارهای جریان کنترل، نمودارهای گانت، نمودارهای PERT و IDEF.

مدل‌سازی جریان عملکردی فرآیند کسب‌وکار مزایای زیادی برای سازمان‌ها دارد، مانند:

گام ششم: جریان عملکردی متقابل

Cross-Functional Flow

نمودار جریان متقابل عملکردی مدل‌سازی فرآیند کسب‌وکار نوعی نمودار جریانی است که رابطه بین یک فرآیند تجاری و واحدهای عملکردی (مانند بخش‌ها یا موقعیت‌های) مسئول آن فرآیند را نشان می‌دهد. همچنین به عنوان نمودار جریان شنا شناخته می شود، زیرا فرآیند را به خطوط افقی یا عمودی تقسیم می کند که نقش ها یا نام های مختلف را نشان می دهد¹².

نمودار جریان متقابل مدل‌سازی فرآیند کسب‌وکار مزایای زیادی برای سازمان‌ها دارد، مانند:

گام هفتم: پردازش

Process Flowchart

فلوچارت فرآیند مدل‌سازی فرآیند کسب‌وکار یک نمایش گرافیکی از مراحل و فعالیت‌هایی است که یک فرآیند تجاری را تشکیل می‌دهند، از ابتدا تا انتها²4. یکی از رایج‌ترین و ساده‌ترین تکنیک‌ها برای مدل‌سازی فرآیند کسب‌وکار است که از نمادها و اشکال استاندارد برای نشان دادن توالی، جهت و جریان اطلاعات در یک فرآیند استفاده می‌کند.

فلوچارت فرآیند مدلسازی فرآیند کسب و کار مزایای بسیاری برای سازمانها دارد، مانند:

دومین پناه‌گاه: مهندسی نرم‌افزار

pinterest.co.uk

UML مخفف Unified Modeling Language است که یک زبان مدل سازی بصری همه منظوره استاندارد شده در زمینه مهندسی نرم افزار²5 است. UML برای مشخص کردن، تجسم، ساختن و مستندسازی مصنوعات اولیه سیستم نرم‌افزاری مانند کلاس‌ها، اشیاء، مؤلفه‌ها، رابط‌ها، موارد استفاده و غیره16 استفاده می‌شود.

UML مزایای زیادی برای مهندسین نرم افزار دارد، مانند:

گام هشتم: نمودار Use Case

گام نهم: نمودار پردازش و تعامل

researchgate.net

گام دهم: وایرفریم

convergine.com

گام دهم: نمودار کلاس

people.cs.ksu.edu

گام یازدهم: معماری زیرساخت

isc.upenn.edu

قله: مدیریت پروژه

گام یازدهم: نمودار گانت

lucidchart.com

گام دوازدهم: نمودار قله (خط زمانی)

تصمیم‌گیری برای مدیران در فناوری اطلاع

منابع


قوانین کلی برای تیم توسعه

هر موجودیت داده فقط باید یک جا ذخیره بشه.

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

کدی که استفاده نمی‌شه رو پاک کن.

قبل از هر ریلیز یه سر بزنین به کدهایی که دیگه کاربرد ندارن. هرچی اضافه‌ست، بره بیرون.

داکیومنت رو بذار جایی که لازم میشه.

کاربر نباید دنبال راهنما بگرده. بالای دکمه‌ها یا جاهایی که داره باهاش تعامل می‌کنه، راهنما باشه. همین‌جا، دم‌دست.

هیچی بدیهی نیست.

فرض نکن بقیه همه چیز رو می‌دونن. همیشه توضیح بده، حتی چیزای ساده. بنویس طوری که کسی که از بیرون اومده هم راحت بفهمه.

پیام‌های خطا باید واضح و قابل درک باشن.

وقتی خطا می‌دی، بگو چی شده، کجاست، و چطوری درستش کنیم. از پیام‌های مبهم مثل «یه مشکلی پیش اومده» استفاده نکن. مثال:

throw new DatabaseConnectionException("اتصال به دیتابیس برقرار نشد چون فایل تنظیمات رو پیدا نکردیم.");

طراحی‌ات دفاعی باشه.

اگه چیزی ممکنه خراب بشه، براش راه چاره بذار. اطلاعات کافی بده که بشه راحت عیب‌یابی کرد. از پیش‌بینی شکست‌ها نترس—بهتره آماده باشی. خطا رو اولین جایی که ممکنه پیش بیاد هندل کن. نذار آخرین مرحله.

گزارش‌گر باش.

هر روز یه گزارش کوتاه از کارهایی که کردی بنویس و بفرست. حتی کارای معمولی هم مهمن. توی نوشتن رسمی باش و از کلمات متنوع استفاده کن که بعداً راحت بشه پیداش کرد. هیچ‌وقت گزارش‌هاتو حذف نکن.

چیزایی که برات جالبه رو با بقیه به اشتراک بذار

اگه به چیزی علاقه‌مند شدی، یا یه نکته‌ی جالب یاد گرفتی، اون رو نگه ندار—منتشرش کن.

از کش استفاده نکن.

داده‌ها باید همیشه به‌صورت زنده از منبع اصلی‌شون خونده بشن. مگه اونایی که ذاتا انتظار تغییر ازشان نداریم. مثل مولتی‌مدیایی که تبدیل میشن به اندازه‌های مختلف. اگه مجبور شدید کش بذارید، باید دلیلش رو توضیح بدید و توی لیستی بذارید که هرچه سریع‌تر جایگزینش کنید.