وبلاگ روزنوشت های من

آخرین نوشته‌ها


از سیر تا پیاز معماری پیازی. یک معماری تمیز!

معماری پیازی یک نوع معماری لایه ای ست که قابلیت نگهداری، تست پذیری و توسعه پذیری نرم افزارها را به آسانی برای شما فراهم می‌کند. این معماری تاکید زیادی روی وابستگی ها و جدایی منطق، عملیات ها، سرویس ها و رابط کاربری دارد. در این نوع معماری، هسته سیستم که پایین ترین و اساسی ترین لایه در این معماری ست، به هیچ کدام از لایه های دیگر وابستگی ندارد، و این لایه های دیگر هستند که به هسته سیستم از طریق اینترفیس ها وابستگی دارند. تعریف این معماری اولین بار در سال 2008 توسط Jeffrey Palermo در وبلاگش ارائه شد، که البته مفهموم عجیبی نبود! ما قبلاً از معماری های لایه ای زیادی برای پیاده سازی نرم افزارها استفاده کرده بودیم، اما چیزی که در این معماری روی آن تاکید زیادی می‌شد، عدم وابستگی لایه های درونی به لایه های بالاتر با استفاده از اینترفیس ها بود. این معماری به شدت به مفهوم Dependency Inversion principle و تزریق وابستگی ها تکیه دارد.

...ادامه

همه چیز درباره پرداخت‌یاری

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

...ادامه

مسئولیت های تخصصی و اخلاقی یک مهندس نرم افزار

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

...ادامه

مستندات نیازمندی ها و نقش آن در موفقیت یک پروژه نرم افزاری

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

...ادامه

اوپن سورس به عنوان یک مدل تجاری موفق

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

...ادامه

نیازهای من به عنوان یک نیروی انسانی – بازی وبلاگی

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

...ادامه

10 دلیل برای استفاده از ORM در دات نت فریم ورک

ORM یک تکنیک برنامه نویسی برای تبدیل مدل رابطه ای یک دیتابیس به مدل شیء گرا و بالعکس می باشد که در حال حاضر مورد توجه بسیاری از توسعه دهندگان نرم افزاری قرار دارد. استفاده از ORMها مزایای بسیاری دارد و در بسیاری موارد کار توسعه را آسان تر و لذت بخش تر خواهد کرد. برای دات نت فریم ورک ORMهای کدباز و تجاری زیادی وجود دارد که از این جمله می توان به ADO.NET Entity Framework و NHibernate اشاره نمود. من به شخصه از Entity Framework در یک پروژه واقعی استفاده کردم و تمام مزایایی که قبلاً در مورد یک ORM خوانده بودم را در واقعیت دیدم. در این مطلب به 10 دلیل برای استفاده از یک ORM در یک پروژه مبتنی بر دات نت فریم ورک اشاره خواهم کرد که به شخصه آن ها را تجربه کرده ام.

...ادامه

یک محیط سفارشی شده; تمام چیزی که یک برنامه نویس می خواهد!

داشتن تمرکز برای افرادی که به اصطلاح Knowledge Worker هستند، مثل نویسندگان یا برنامه نویسان، بسیار مهم است. این تمرکز در محیط های شلوغ و پر استرس و محیطی که فرد در آن احساس راحتی نکند به دست نمی آید. یک برنامه نویس به عنوان فردی که از دانش و قدرت تفکرش برای انجام کارها استفاده می کند، برای انجام وظیفه خود به نحو مطلوب و با بازدهی بالا نیاز به یک محیط سفارشی (=Customize) شده دارد. منظورم از محیط سفارشی شده، محیطی است که فرد برنامه نویس در آن احساس راحتی کند، تمرکز کافی داشته باشد و بتواند در آن بر اساس سلیقه خودش تغییر ایجاد کند.

...ادامه

گذاشتن محدودیت برای برنامه نویسان… اما به چه قیمتی!

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

...ادامه