کتاب های برچسب design-patterns
تاریخ: ۱۵:۲۷:۲۶ ۱۳۹۸/۳/۲۴ جمعه
توسط: MotoMan
امتیاز: ۲

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

کتاب Architecting for Scale، به مدیران IT، devops و system reliability نشان می‌دهد تا چگونه مانع از کند شدن، ناپایدار شدن و یا عدم دسترسی برنامه شوند زمانی که برنامه بزرگ و بزرگ‌تر می‌شود.

تعداد بازدید: ۱۱۹
دیدگاه ها: ۰
تاریخ: ۲۰:۲۴:۵۸ ۱۳۹۸/۳/۱۲ یکشنبه
توسط: MotoMan
امتیاز: ۳

با کمک کتاب الگوهای طراحی در دات نت، الگو‌های طراحی در دات نت را با استفاده از آخرین نسخه‌های زبان‌های #C و #F پیاده سازی کنید. این کتاب بررسی جامعی از الگو‌های طراحی که توسط توسعه دهندگان مورد استفاده قرار می‌گیرند را ارائه کرده است.

کتاب Design Patterns in .NET، با استفاده از زبان برنامه نویسی سی شارپ، پیاده سازی الگوهای طراحی کلاسیک را بررسی کرده است و درباره کاربرد و امکانات به خصوص زبان برای پیاده سازی آن‌ها بحث کرده است.

مطالبی که در کتاب الگوهای طراحی در .NET خواهید آموخت:

  • پیاده سازی جدید‌ترین الگوها با استفاده از سی شارپ و #F
  • بررسی الگوهای مختلف طراحی
  • استفاده از آخرین نسخه‌های زبان #C، ویژوال استادیو و ریشارپر
تعداد بازدید: ۲۷۲
دیدگاه ها: ۰
تاریخ: ۲۰:۲۸:۳۴ ۱۳۹۸/۲/۲۰ جمعه
توسط: MotoMan
امتیاز: ۳
برچسب ها: Design Patterns | Java Script |

ویرایش سوم کتاب استاد شدن در الگوهای طراحی جاوا اسکریپت(Mastering JavaScript Design Patterns)، راهنمایی جامع است که به شما شناسایی و استفاده از تمامی انواع الگوهای کلاسیک و پیشرفته مثل آن هایی که مخصوص جاوا اسکریپت هستند را به شما خواهد آموخت.

مطالب این کتاب با توضیح انواع مختلف الگوهای برنامه نویسی مثل برنامه نویسی تابعی، برنامه نویسی شی گرا و برنامه نویسی Reactive که با ظهور ES8 معرفی شده، آغاز شده است. در ادامه الگوهای طراحی کلاسیک مثل الگوهای Structural، الگوهای Behavioral و الگوهای Creational معرفی شده اند. سپس به سراغ الگوهایی که در جاوا اسکریپت خیل پر استفاده اند خواهید رفت مثل الگوهای Performance و الگوهای آسنکرون.

تعداد بازدید: ۲۸۸
دیدگاه ها: ۱
تاریخ: ۲۱:۳۶:۴۸ ۱۳۹۸/۲/۸ یکشنبه
توسط: MotoMan
امتیاز: ۲

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

تعداد بازدید: ۳۳۸
دیدگاه ها: ۰
تاریخ: ۲۱:۵۰:۳۸ ۱۳۹۸/۱/۲۴ شنبه
توسط: MotoMan
امتیاز: ۱

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

از نظر من Legacy Code، کدی است که فاقد تست است. چند دلیل نیز برای این تعریف خودم دارم. تست‌ها چه ربطی به بد بودن کد دارند؟ از نظر من پاسخ بدیهی است و این نکته ای است که در این کتاب می‌خواهم آن را بیان کنم:

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

تعداد بازدید: ۲۷۸
دیدگاه ها: ۰
تاریخ: ۲۱:۵۹:۴۱ ۱۳۹۸/۱/۶ سه شنبه
توسط: MotoMan
امتیاز: ۳

کتاب تزریق وابستگی: اصول، استفاده‌ها و الگو ها، اول از همه و بیشتر درباره‌ی تزریق وابستگی (DI) است. همچنین کتاب درباره‌ی دات نت نیز هست که آن چنان اهمیت ندارد. اگرچه از #C برای کدهای مثال‌ها استفاده شده است، اما بیشتر مباحث این کتاب را به راحتی می‌توان در زبان‌ها و پلتفرم‌های دیگر نیز به کار برد.

تزریق وابستگی (Dependency Injection)، به مجموعه ای از الگوها و اصول مرتبط به هم گویند. DI روشی برای فکر کردن درباره‌ی طراحی کد است تا تکنولوژی به خصوصی. هدف نهایی استفاده از تزریق وابستگی، ساخت برنامه‌ی قابل نگهداری با استفاده از الگوی شی گرایی است.

تعداد بازدید: ۴۱۷
دیدگاه ها: ۰
تاریخ: ۱۷:۲:۲۵ ۱۳۹۸/۱/۴ یکشنبه
توسط: MotoMan
امتیاز: ۴

کتاب الگوهای میکرو سرویس (Microservice Patterns)، هدفش آموزش نحوه‌ی توسعه موفقیت آمیز برنامه‌ها با استفاده از معماری میکرو سرویس است. در این کتاب نه تنها بر روی مزایای معماری میکروسرویس بحث شده است بلکه اشکالات آن نیز بیان شده است. شما یاد خواهید گرفت که در چه مواقعی باید از معماری یکپارچه (monolithic) استفاده کنید  و در چه مواقعی میکرو سرویس‌ها را به کار بندید.

تعداد بازدید: ۴۹۶
دیدگاه ها: ۰
تاریخ: ۲۱:۳:۳۷ ۱۳۹۸/۱/۱ پنج شنبه
توسط: MotoMan
امتیاز: ۳
برچسب ها: Design Patterns | software engineering |

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

در کتاب الگو‌های طراحی و بهترین شیوه‌های Serverless، الگوهای قابل استفاده مجدد که قابلیت استفاده در هر نوع برنامه‌ی Serverless، مثل سیستم‌های وب،  پردازش داده، کلان داده یا اینترنت اشیا باشند معرفی شده اند. شما با مثال و توضیح درباره‌ی الگوهای مختلف در حوزه‌ی serverless، مثل RESTful APIs، GraphQl، Proxy، fan-out، messaging، معماری لامبدا و MapReduce یاد خواهید گرفت تا با استفاده از این الگو‌ها برنامه‌های خود را مقیاس پذیر، کارا، تحمل پذیر خطا کنید.

تعداد بازدید: ۲۳۲
دیدگاه ها: ۰
تاریخ: ۱۲:۳۶:۸ ۱۳۹۷/۶/۳۰ جمعه
توسط: MotoMan
امتیاز: ۶
برچسب ها: Design Patterns | dotNET Framework |

ویرایش دوم کتاب Framework Design Guidelines، بهترین شیوه‌ها را برای طراحی کتابخانه هایی با قابلیت استفاده مجدد برای Microsoft .NET Framework را به توسعه دهندگان نشان داده است.

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

معماران مایکروسافت، Krzysztof Cwalina و Brad Abrams طراحی فریمورک را از بالا به پایین آموزش می‌دهند. مطالبی که در این کتاب خواهید آموخت عبارتند از:

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

 

تعداد بازدید: ۱۱۳۳
دیدگاه ها: ۰
تاریخ: ۱۴:۴۷:۴۴ ۱۳۹۷/۵/۱۱ پنج شنبه
توسط: MotoMan
امتیاز: ۳

فریمورک NET Core.، نسبت به همیشه کنترل بیشتری برای معماری برنامه‌های وب ارائه می‌دهد. از دیدگاه معماری نرم افزار، یکی از نکات کلیدی این است که این کنترل بیشتر بر اساس استفاده از تزریق وابستگی است که به عنوان روشی برای پیاده سازی صحیح اصل معکوس سازی وابستگی پیشنهاد شده در اصول SOLID است که توسط Robert C. Martin ایجاد شده است.

با ظهور NET Core.، با DI تعبیه شده در سیستم، چیزها بسیار ساده‌تر شدند. هدف این کتاب دادن دیدی عمیق از نوشتن کد‌های loosely-coupled با استفاده از آخرین ویژگی‌های موجود در NET Core. است. در این کتاب در مورد تزریق سازنده ها، پارامتر، setter‌ها و اینترفیس صحبت می‌شود که با جزئیات و به کمک مثال‌ها توضیح داده شده است که چه تزریقی در چه شرایطی استفاده شود. در این کتاب به شما نشان داده می‌شود که چگونه کلاسی را پیاده سازی کنید که کلاس‌های دیگر را به همراه وابستگی هایشان ایجاد می‌کند، که به آن‌ها IoC Container نیز گفته می‌شود و سپس وابستگی‌ها برای هر کامپوننت MVC از ASP.NET Core را می‌سازند. شما یاد خواهید گرفت تا بین IoC Container ها، کاربرد معکوس سازی کنترل و خود DI که تنها روشی از پیاده سازی IoC از طریق این container‌ها است تمایز قائل شوید. شما همچنین چگونگی ساخت وابستگی ها  برای هر ابزار frontend دیگری مثل Angular را یاد می‌گیرید. شما می‌توانید از سرویس‌های تعبیه شده ارائه شده توسط NET Core. برای ساخت وابستگی‌های شخصی سازی شده خود نیز استفاده کنید.

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

تعداد بازدید: ۱۹۸۰
دیدگاه ها: ۰
تاریخ: ۱۵:۳۲:۲۴ ۱۳۹۷/۴/۱ جمعه
توسط: MotoMan
امتیاز: ۹
برچسب ها: C Sharp | Design Patterns |

همان طور که می‌دانید مفهوم الگوهای طراحی با کتاب مشهوری از Gang of Four  به نام Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley), 1994 به شدت محبوب شد. مهمتر از همه امروزه این مفاهیم هنوز هم در دنیای برنامه نویسی مورد استفاده قرار می‌گیرند. این کتاب در اواخر سال 1994 منتشر شد و به طور ویژه بر روی ++C متمرکز شده بود. در سال 2005، #C اولین نسخه با تغییرات بزرگ (C# 2.0) را عرضه کرد. از آن زمان، #C به زبانی پر از امکانات تبدیل شد و اکنون زبانی محبوب است.

در بخش اول کتاب الگوهای طراحی در #C, تعداد 23 الگوی طراحی (Gang of Four(GoF شامل Simple Factory Pattern، Null Object Pattern و MVC Pattern پوش داده شده اند. بخش نهایی کتاب با نتیجه گیری و انتقادهای الگوهای طراحی با فصل هایی در مورد anti-patterns و نشتی‌های حافظه  به پایان رسیده است. با کار کردن بر روی مثال هایی آسان، شما مفاهیم را به صورت عمیق درک خواهید کرد و مجموعه ای از برنامه هایی خواهید داشت که می‌توانید در برنامه‌های خود به کار برید.

تعداد بازدید: ۳۱۰۸
دیدگاه ها: ۰
تاریخ: ۱۷:۱۶:۵۴ ۱۳۹۷/۳/۲۵ جمعه
توسط: MotoMan
امتیاز: ۴
برچسب ها: C Sharp | Design Patterns | dotNET Framework |

عنوان این کتاب، کد انطباق پذیر است که شرح خوبی از نتیجه‌ی حاصل از به کارگیری اصول موجود در این کتاب است که عبارت از: توانایی کد برای انطباق با هر نیازمندی جدیدی یا سناریوهای پیش بینی نشده بدون نیاز به دوباره کاری قابل توجه. هدف این کتاب جمع آوری تعداد زیادی از بهترین شیوه‌های موجود در دنیای برنامه نویسی #C با NET Framework. مایکروسافت است. اگرچه بعضی از مطالب این کتاب در سایر کتاب‌ها نیز پوشش داده شده اند، اما آن کتاب‌ها بیشتر بر روی تئوری تمرکز کرده اند و یا مخصوص توسعه NET. نیستند.

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

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

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

 

تعداد بازدید: ۱۹۴۹
دیدگاه ها: ۲
تاریخ: ۱۷:۱۹:۲۸ ۱۳۹۷/۱/۵ یکشنبه
توسط: MotoMan
امتیاز: ۷

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

متخصص مشهور نرم افزار Robert C. Martin، الگویی انقلابی در کتاب Clean Code: A Handbook of Agile Software Craftsmanship ارائه داده است. مارتین با همکاری همکارانش در شرکت Object Mentor، بهترین شیوه‌های چابک تمیز سازی کد را استخراج کرد و آن‌ها را  تبدیل به کتابی کرد که در آن ارزش‌های یک متخصص را به شما یاد می‌دهد و شما را تبدیل به برنامه نویسی بهتر می‌کند؛ البته فقط وقتی که بر روی آن‌ها کار کنید.

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

کتاب Clean Code به سه بخش تقسیم شده است. بخش اول اصول، الگو‌ها و شیوه‌های نوشتن کد تمیز را شرح می‌دهد. بخش دوم متشکل از چندین مورد مطالعاتی در مورد افزایش پیچیدگی است. هر مورد یک تمرین تمیز سازی کد است که تبدیل اساس یک کد که دارای تعدادی مشکل است به کدی کارامد و بدون ایراد است. قسمت سوم نتیجه گیری نهایی است. یک فصل مجزا که فهرستی از اکتشافات و بوهایی (smells) است که در ضمن ایجاد موارد مطالعاتی جمع آوری شده اند.

مواردی که در این کتاب خواهید فهمید عبارتند از:

  • چگونه می‌توان تفاوت بین کد خوب و بد را بیان کرد
  • چگونه می‌توان کد خوب نوشت و کد بد را به کد خوب تبدیل کرد
  • چگونه خوب نام گذاری کنیم، توابع خوب، اشیا خوب و کلاس‌های خوب ایجاد کنیم
  • چگونه به کد فرمت بدهیم تا به حداکثر خوانایی ممکن برسیم
  • چگونه مدیریت خطای کاملی بدون مبهم کردن منطق کد را پیاده سازی کرد
  • چگونه آزمون واحد انجام داد و توسعه آزمون محور را تمرین کرد
تعداد بازدید: ۴۰۵۹
دیدگاه ها: ۱
تاریخ: ۱۲:۱۹:۲ ۱۳۹۶/۱۲/۱۱ جمعه
توسط: MotoMan
امتیاز: ۱
برچسب ها: Design Patterns | CPP | software engineering |
با ++C مدرن، برنامه‌های قابل نگهداری، قابل گسترش و با دوام بنویسید. کتاب ++Clean C - الگوها و بهترین شیوه‌های توسعه نرم افزار پایدار، برای هر توسعه دهنده، معمار نرم افزار یا سرپرست تیمی که علاقه مند به خوب کدنویسی با ++C و صرفه جویی در هزینه توسعه است، ضروری است. اگر می‌خواهید که به خودتان تمیز کد نوشتن با ++C را آموزش دهید، کتاب ++Clean C دقیقا چیزی هست که به آن احتیاج دارید. این کتاب نوشته شده تا به توسعه دهندگان ++C در تمامی سطوح کمک کند تا چگونگی نوشتن کد ++C قابل فهم، انعطاف پذیر، قابل نگهداری و کار آمد را با مثال آموزش دهد. حتی اگر شما توسعه دهنده با تجربه ++C هستید، نکاتی در این کتاب پیدا می‌کنید که در کار خود مفید خواهید یافت.
اگر اهمیتی به کد خود نمی‌دهید، شما می‌توانید یک حیوان بزرگ کثیف غیر قابل نگهداری با هر زبان برنامه نویسی تولید کنید. اگر چه، پروژه‌های ++C به طرز خاصی مستعد کثیفی هستند و  تمایل به تبدیل شدن به عادت‌های بد دارند. بیشتر کدهای ++C ای که امروزه نوشته می‌شوند به نظر می‌آیند که در دهه‌ی 1980 نوشته شده اند. این طور به نظر می‌رسد که توسعه دهندگان ++C توسط کسانی که مهارت‌های نرم افزاری و اصول کد نویسی تمیز را ترویج می‌دادند به دست فراموشی سپرده شده اند. اینترنت پر شده از مثال‌های ++C که ظاهرا خیلی سریع و بهینه هستند ولی با سینتکس بی رحمانه ای که کاملا اصول ابتدایی طراحی خوب و کد نویس خوب را نادیده می‌گیرند. این کتاب شرح خواهد داد که چگونه از چنین سناریو هایی دوری کنید و چگونه بیشترین استفاده از کد ++C خود بکنید. در انتها شما کد نویسی خودتان را موثر‌تر و مهمتر از همه سرگرم کننده‌تر خواهید یافت.
مطالبی که در کتاب ++Clean C یاد خواهید گرفت عبارتند از:
- فهمیدن اصول و قوانین برای کد نویسی تمیز در ++C
- به کار گیری توسعه آزمون محور (TDD)
- کشف کردن الگو‌های طراحی و اصطلاحات ++C
- به کار گیری الگو‌های طراحی
تعداد بازدید: ۱۳۷۸
دیدگاه ها: ۰
تاریخ: ۲۰:۳۸:۹ ۱۳۹۶/۹/۱۵ چهارشنبه
توسط: MotoMan
امتیاز: ۴

هر موقع که صحبتی از معماری نرم افزار می‌شود، غالبا افراد به مدل هایی فکر می‌کنند که تمثیل ساختار‌های تشکیل دهنده معماری هستند. افراد کمی نیز  فکر می‌کنند که معماری نرم افزار، فرآیند‌های فکری هستند که این ساختار‌ها را پدید آورده اند و به عنوان فرآیند طراحی شناخته می‌شود. طراحی فعالیتی پیچیده برای انجام و موضوع پیچیده برای نوشتن در مورد آن است چرا که با در نظر گرفتن جنبه‌های زیاد سیستم، تصمیمات بیشماری را درگیر خود می‌کند. بیان کردن این جنبه‌ها معمولا سخت است به خصوص وقتی که آن‌ها از تجربه‌ها و دانشی سرچشمه می‌گیرند که به سختی در میدان نبرد پروژه‌های توسعه نرم افزاری قبلی به دست آمده باشند.
با این حال فعالیت طراحی، اساس معماری نرم افزار است و همین طور احتیاج به توضیح دادن دارد. اگرچه تجربه را به سختی می‌توان از طریق کتاب انتقال داد ولی چیزی که می‌شود به اشتراک گذاشت متدی است تا به شما کمک کند تا فرآیند طراحی را به صورت سیستماتیک انجام دهید.
این کتاب درباره فرآیند طراحی و به خصوص درباره‌ی یک روش طراحی به نام (Attribute-Driven Design (ADD است. ما باور داریم که این روش ابزاری قدرتمند است که به شما کمک می‌کند تا یک طراحی اصولی، منظم و قابل تکرار انجام دهید. در این کتاب ADD و چند مثال از استفاده ADD در دنیای آورده شده است تا نشان دهیم که چگونه طراحی معماری انجام دهیم.

 

تعداد بازدید: ۲۰۹۷
دیدگاه ها: ۰
تاریخ: ۱۵:۴۰:۳۸ ۱۳۹۶/۸/۲۸ یکشنبه
توسط: MotoMan
امتیاز: ۱۱

دانش و مهارت زیادی لازم نیست تا یک برنامه نوشت. بچه‌های دبیرستانی نیز این کار را در دبیرستان انجام می‌دهند. مردان و زنان جوان در دانشگاه با سر هم کردن چند خط کد PHP یا Ruby کسب و کار‌های میلیارد دلاری را شروع کرده اند. برنامه نویسان تازه کار زیادی در دفاتر کاری مکعبی شکلشان در سرتاسر دنیا در بین اسناد حجیم نیازمندی‌های موجود در سیستم‌های issue tracking خود در حال تقلا هستند تا سیستم هایشان را با صرف فعل خواستن توانستن است به کار بیندازند. کدهایی که تولید می‌کنند ممکن است زیبا نباشند ولی کار می‌کنند. کار می‌کند به این دلیل که چیزی بتواند یک بار کار کند، خیلی سخت هم نیست.
این که چیزی واقعا به درستی کار کند موضوعی کاملا متفاوت است. پیاده سازی صحیح نرم افزار سخت است چرا که دانش و مهارت هایی نیاز دارد که هنوز بیشتر برنامه نویسان جوان به آن دست نیافته اند. این کار به بینش و تفکری احتیاج دارد که بیشتر برنامه نویسان وقتی برای توسعه آن‌ها نمی‌گذارند. همه‌ی این‌ها به سطحی از انضباط و تعهد احتیاج دارد که بسیاری از برنامه نویسان حتی خوابش را نمی‌دیدند که به آن‌ها احتیاج پیدا کنند و در بیشتر موارد اشتیاق به مهارت و تمایل به حرفه ای شدن است.
وقتی که برنامه را به شکل صحیح پیاده سازی کنید، چیزی جادویی اتفاق می‌افتد: دیگر به لشکری از برنامه نویسان برای این که آن را در حال کار کردن نگه دارند نیاز ندارید. دیگر به سندهای نیازمندی‌های حجیم و سیستم‌های issue tracking بزرگ احتیاج ندارید. شما دیگر به اتاق‌های کاری مکعبی شکل زیاد و برنامه نویسی 24 ساعت و هفت روز در هفته نیاز ندارید.
نرم افزاری که یه شکل صحیح تمام شود، تعداد کمتری از منابع انسانی برای ایجاد و نگه داری نیاز دارد. تغییرات به سرعت و ساده هستند. نقص‌ها کم و فاصله‌ی بین آن‌ها کم است. تلاش کاهش می‌یاد، عملکرد و انعطاف پذیری افزایش می‌یابد.
بله، همچین چشم اندازی به نظر خیال پردازی می‌آید. ولی من آن جا بوده ام، من دیدم که اتفاق افتاد. من بر روی پروژه هایی کار کرده ام که طراحی و معماری سیستم، نوشتن کد و نگهداری آن را آسان کرده بود. پروژه هایی را تجربه کرده ام که به کسری از نیرو‌های انسانی پیش پینی شده احتیاج پیدا کرده بود. بر روی سیستم هایی کار کرده ام که نرخ نقص به شدت پایینی داشته اند. من تاثیرات خارق العاده ای که یک معماری نرم افزاری خوب می‌تواند بر روی سیستم، پروژه و تیم داشته باشد را دیده ام.
اما حرف‌های من را در نظر نگیرید. به تجربه خودتان نگاه کنید. آیا خلافش را تجربه کرده اید؟ آیا بر روی سیستم هایی کار کرده اید که جوری به هم پیوسته و پیچیده اند که هر تغییری جدای از این که چقدر واضح و ساده باشد، هفته‌ها طول می‌کشد و خطر‌های بزرگی را شامل می‌شود. آیا طراحی سیستم هایی که با آن‌ها کار کرده اید تاثیر منفی بزرگی بر روی روحیه تیم، اعتماد مشتریان، سازمان‌ها و حوصله‌ی مدیران گذاشته اند؟ آیا تیم ها، سازمان‌ها و حتی شرکت هایی که به وسیله‌ی ساختار نرم افزاری فاسد خود نابود شده اند را دیده اید؟ آیا تا به حال در جهنم برنامه نویسان بوده اید؟
من بوده ام و تا حدودی بیشتر ما نیز بوده ایم. تفاوت بسیار زیادی است بین وقتی که شما دارید با طراحی‌های نرم افزاری افتضاح کلنجار می‌روید تا وقتی که دارید از کار با یکی از طراحی‌های خوب لذت می‌برید.

 

تعداد بازدید: ۳۷۸۴
دیدگاه ها: ۱
loading...

لطفا منتظر بمانید...