راهنمای انتخاب پلتفرم مناسب برای نرم افزار مدیریت شرکت


#1

مقدمه:
در حال نوشتن نرم افزاری برای شرکتی هستم که سیستم مدیریت اون به صورت سنتی و به وسیله‌ی قلم و کاغذ و دفتر حساب انجام میشه.

کارهایی که انجام دادم:
۱) نیاز سنجی کامل + طراحی نرم‌افزار شی گرا به وسیله‌ی UML Diagram رو انجام دادم.
۲) ابتدا با اکسل و VBA سیستم رو کامل پیاده‌سازی کردم و نرم افزار رو به دلیل اینکه پلتفرم انعطاف پذیر نبود در مرحله ی تست نهایی رها کردم.

سوال:
۱) نوشتن نرم‌افزار تحت وب رو برای این موضوع پیشنهاد میدید یا نرم افزار native؟
۲) در ادامه‌ی پاسخ سوال بالا چه پلتفرمی هایی رو برای پیاده سازی پیشنهاد میدید؟

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

پیشاپیش از راهنمایی تون سپاسگزارم.


#2

درود

مهمترین قسمت پروژه های نرم افزاری همین نیازسنجی درست و تا حد ممکن کامل می باشد که همین نیازسنجی باعث می شود انعطاف و داینامیک بودن سیستم رو هم در نظر بگیرید

در مورد انتخاب پلت فرم برای پیاده سازی پروژه اگر درون سازمانی یا شرکتی باشه بیشتر به صورت نرم افزار پیادش می کنن مگر اینکه چند سکویی باشه ینی در ارتباط با پلت فرم های مختلف باشه اما بیرون سازمانی باشه بیشتر به صورت وب اپلیکیشن پیاده می کنن


#3

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

من گزینه های زیادی به ذهنم نمیرسه بجز استفاده از qt حالا یا با پایتون یا c++، نظر شما چیه؟


#4

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


#5

نرم افزار قراره امور جاری شرکت {مدیریت کارمندان، مدیریت کارگر ها، مدیریت مشتری ها، حسابداری(ساده)، انبارداری(ساده)} رو اتوماسیون کنه، قبلا نرم‌افزار ی رو در حالت Dictator Mode در اکسل پیاده‌سازی کرده بودم که از جداول اکسل به عنوان پایگاه داده و از VBA برای ایجاد تغییرات در داده ها استفاده میکرد، ولی همینطور که گفتم کلا روش مناسبی نبود و بعد از پیاده‌سازی در مرحله ی تست کنار گذاشتمش.


#6

شرکت چقدر پرسنل داره ؟ چارت سازمانیش به چه صورت است ؟ تو یک ساختمانید یا چندین ساختمان ؟


#7

درون سازمانی باشه داخل یه شرکت مثلا می شه گفت شما یه سرور بانک اطلاعاتی می تونید داشته باشید با برنامه ای که پیاده می کنید برای شرکت روی کلاینت های مختلف نصب میشه مهم بحث نیازسنجی درست و تجزیه و تحلیل هست برای پیاده سازیش می تونید به هر زبان یا ابزاری که مسلط هستید استفاده کنید بستگی به خودتون داره انتخاب های مختلفی وجود داره مثل
(rad studio (c++, delphi
.net
java
qt
,…


#8

تا حالا از Scala استفاده کردین؟ فکر می کنم توی ایران هم برنامه نویس های خوبی داشته باشه. Scala دقیقا برای همین موردی که شما مد نظرتون هست ساخته شده.


#9

نه از اسکالا استفاده نکردم، یکم در مورد مقایسه پایتون و سی پی پی و اسکالا تحقیق کردم، اما من هنوز متوجه نشدم منظورتون از “اسکالا برای اینکار ساخته شده” چیه.

مقایسه سطحی اسکالا و سی پی پی:

مقایسه سطحی اسکالا و پایتون:


#10

من قبلا تو دام این موضوع افتادم، راحتی نوشتن کد مخصوصا استفاده از زبان های برنامه‌نویسی که از قبل بلدم یک فاکتور مهم هست ولی فقط یکی از فاکتورهاست :smile:
الان بیشتر دنبال گزینه ی «مناسب و معقول» برای این موضوع هستم, حتی اگر نیاز باشه یک زبان جدید یاد بگیرم.
یادگرفتن یک زبان برنامه‌نویسی جدید برام سخت نیست من معمولا همون هفته اول «کمکی های دوچرخه رو باز میکنم» و سواری میکنم :slight_smile:


#11

راستش من این ها رو با هم مقایسه نمیکنم چون اصلا معنی درستی نداره.
سکالا در انترپرایز ها خیلی زیاد استفاده میشه و توسعه دهنده زیاد داره و سویچ کردن از جاوا به سکالا کار سختی نیست و صعود پذیری سکالا از C++ و‌پایتون که اصلا برای concurrency ساخته نشدند خیلی راحت تره. اما همونطور که عرض کردم امکانات تیمی شما از همه چیز مهم تره.
اگر من جای شما باشم اول طراحی سیستم رو انجام میدم و بعد از مشخص شدن معماری کلی میرم سراغ زبان برنامه نویسی، سیستم های اداری خیلی ماژولار ساخته میشند و جوری طراحی میشند که ماژل ها به راحتی با api روی http با هم کار کنند که همه سیستم در یک ماشین نباشه و صعود عمودی و افقی هم کار راحتی باشه.
من شاید در گزینه های خودم Elixir و Rust رو هم جا بدم اما این معنیش این نیست که اگر هدفم Microservices باشه به Go فکر نخواهم کرد. درضمن لازم نیست همه کارها در یک زبان یا اکوسیستم انجا بشه.

چیزی که مشخصه اینه که شما نیاز به یک سیستم با ضریب اطمینان بالا و صعود پذیری مناسب دارید که به راحتی قابل اجرا باشه و در این صورت پایتون یا C++ دوستان خوبی نخواهند بود چون کمک چندانی به دولوپر ها در جلوگیری از بروز خطا نمی کنند. و در پایان احتمالا نیاز به ORM قدرتمندی هم دارید که بتونید بهش اعتماد کنید.


#12

بعد از کمی تحقیق بیشتر رسیدم به پلتفرمی به اسم الکترون، نظرتون در مورد این پلتفرم چیه؟ تجربه ای با این پلتفرم دارید؟


#13

من برای اتوماسیون اداری از الکترون استفاده نمی کنم، البته شاید برای فرم ها و کلا UI گزینه خوبی باشه.


#14

کنجکاو شدم بدونم دلیل اینکه از الکترون برای اتوماسیون اداری استفاده نمیکنید چیه؟


#15

ترجیح میدم بجای js از یک زبان safe یا یک زبان فانکشنال یا هر دو برای همچین‌کاری استفاده کنم، شاید دلیل دومش این باشه که خیلی علاقه وافری به js برای همچین کاری ندارم چون فکر میکنم نگهداری و توسعش کار ساده ای نیست.
اگر مجبور باشم یک‌ زبان dynamic و oop انتخاب کنم اونقت احتمالا برم‌سراغ روبی و بازم خیلی بستگی به امکانات تیمی داره.