کتاب های برچسب design-patterns
تاریخ: ۲۰:۳۸:۹ ۱۳۹۶/۹/۱۵ چهارشنبه
توسط: MotoMan
امتیاز: ۰

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

 

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

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

 

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

اصول، الگو‌ها و شیوه‌ها مهم هستند، ولی این افراد هستند که آن‌ها را به کار می‌بندند. همان طور Alistair Cockburn گفته است "فرایند و تکنولوژی بر روی خروجی پروژه از اثرات ثانویه هستند. آن چیزی که جزء اثرات اولیه تاثیر گذار بر پروژه است، افراد هستند."
ما نمی‌توانیم تیم‌های برنامه نویسان را مدیریت کنیم، به شرط آن که سیستم‌های ساخته شده از اجزای تشکیل شده توسط فرایند وجود داشته باشند. افراد واحد‌های برنامه نویسی plug-compatible نیستند. اگر می‌خواهیم که پروژه هایمان موفق شوند، ما باید تیم‌های خود سازمانده و  مشارکتی ایجاد کنیم.
شرکت هایی که به تشکیل چنین تیم هایی تشویق می‌کنند، مزیت رقابتی قابل توجهی نسبت به آن هایی که نگرششان این است که شرکت‌های توسعه نرم افزار چیزی بیش از یک شرکت درپیت نیست. یک تیم نرم افزاری خوب، قدرتمندترین نیروی توسعه نرم افزار است.

 

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

این کتاب برای همه‌ی علاقه مندان به یادگیری جنبه‌ها و ابزارهای مهم Domain Driven Design است که می‌خواهند به سرعت آن را فرا بگیرند. اغلب خوانندگان این کتاب طراحان نرم افزار و توسعه دهندگان نرم افزار هستند که می‌خواهند DDD را در پروژه‌ها به صورت عملی پیاده سازی کنند. اغلب، توسعه دهندگان به زیبایی DDD به سرعت پی می‌برند و مشتاقانه جذب الگوی قدرتمندش می‌شوند. با این حال من مطالب را برای مدیران اجرایی، کارشناسان حوزه، مدیران، تحلیل گران کسب و کار، معماران اطلاعات و تست کنندگان، قابل فهم کرده ام. برای کسانی که در صنعت فناوری اطلاعات (IT) و محیط‌های تحقیق و توسعه هستند واقعا محدودیتی برای بهره بردن از خواندن این کتاب وجود ندارد.
اگر شما مشاور هستید و به مشتری خود توصیه کرده اید که از DDD استفاده کند، سریعا این کتاب را برای ذینفعان عمده، به عنوان راه حلی ارائه کنید. اگر شما توسعه دهندگانی دارید که شاید تازه کار، متوسط و یا حتی ارشد باشند و بر روی پروژه هایتان کار می‌کنند در حالی که با DDD آشنا نیستند ولی می‌خواند سریع آن را به کار بندند، مطمئن شوید که این کتاب را می‌خوانند. با خواندن این کتاب حداقل، همه‌ی ذینفعان و توسعه دهندگان پروژه، واژگان و ابزار‌های اصلی DDD که مورد استفاده قرار می‌گیرند را یاد  میگیرند. این کار آن‌ها را قادر می‌سازد تا چیز‌ها را در حین توسعه پروژه به صورت معنا داری با یکدیگر به اشتراک بگذارند.

 

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

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

 

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

این کتاب درباره‌ی یکپارچه سازی سازمانی با استفاده از پیام رسانی(messaging)  است که هیچ تکنولوژی یا محصول خاصی در آن مستند نشده است، بلکه برای توسعه دهندگان و یکپارچه ساز‌ها طراحی شده است تا با استفاده از محصولات و تکنولوژی‌های متنوع پیام رسانی کار خود را انجام دهند.
یکپارچگی سازمانی فراتر از ساختن یک برنامه با معماری چند لایه توزیع شده است که آن برنامه قادر است در بین چندین کامپیوتر توزیع شود. در حالی که یک لایه در یک برنامه توزیع شده، به خودی خود نمی‌تواند اجرا شود، برنامه‌های یکپارچه، برنامه‌های مستقلی هستند که هر کدام به طور مستقل می‌توانند اجرا شوند و این در حالی است که هماهنگی با یکدیگر را به صورت آزاد از هم انجام می‌دهند. پیام رسانی، داده و دستورات را در شبکه قادر می‌سازد تا با استفاده از رویکرد "ارسال کن و فراموش کن" ارسال شوند در حالی که صدا زننده اطلاعات را ارسال می‌کند و وقتی که اطلاعات در حال منتقل شدن توسط سیستم پیام رسانی است، به سراغ شبکه ای دیگر برود. در صورت تمایل، صدا زننده می‌تواند بعدا از نتیجه، توسط یک callback با خبر شود. فراخوانی‌ها و callback‌های آسنکرون ،طراحی را نسبت به رویکرد سنکرون پیچیده‌تر می‌کنند، اما فراخوانی آسنکرون می‌تواند آن قدر تکرار شود تا با موفقیت روبرو شود و این باعث می‌شود که ارتباط، بیش از پیش قابل اعتماد باشد. پیام رسانی آسنکرون همچنین مزیت‌های دیگری از جمله گلوگاه درخواست‌ها و تعادل بار (load balancing) را در بر دارد.

 

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

کار توسعه‌ی برنامه‌های سازمانی، سود زیادی از ظهور تکنولوژی‌های جدید برده است. پلتفرم‌های شی گرا چند لایه، مانند جاوا و .NET خیلی رایج و عادی شدند. این ابزار‌ها و تکنولوژی‌های جدید، توانایی ساخت برنامه‌های قدرتمند را دارند، ولی به راحتی قابل پیاده سازی نیستند. شکست‌های رایج در برنامه‌های سازمانی معمولا به این علت رخ می‌دهند که توسعه دهندگان آن ها، درس‌های معماری که توسعه دهندگان با تجربه در کار با اشیا یاد گرفته اند را نفهمیده اند.
کتاب Patterns of Enterprise Application Architecture نوشته شده تا پاسخی مستقیم به چالش‌های سختی باشد که توسعه دهندگان برنامه‌های سازمانی با آن روبرو می‌شوند. نویسنده این کتاب، آقای Martin Fowler  که طراحی شی گرا است، متوجه شد که با وجود تغییرات در تکنولوژی از Smalltalk تا CORBA تا Java تا NET.، همان ایده‌های طراحی پایه می‌توانند وفق پیدا کرده و اعمال شوند تا مشکلات رایج را حل کنند.
این کتاب در حقیقت دو کتاب در یک کتاب است. بخش اول  یک آموزش کوتاه در مورد توسعه برنامه‌های سازمانی است که شما می‌توانید از ابتدا تا انتها آن را بخوانید  تا محدوده‌ی درس‌های این کتاب را بفهمید. بخش بعدی که بخش عمده‌ی کتاب را تشکیل می‌دهد، یک مرجع دقیق برای خود الگو‌ها است. برای هر الگو اطلاعات کاربرد و پیاده سازی آن به همراه کد مثال‌ها به جاوا یا سیشارپ ارائه شده است. کل این کتاب نیز با دیاگرام‌های UML برای توضیحات بیشتر مفاهیم، نشان داده شده است.
با مسلط شدن به این کتاب، شما دانش لازم برای تصمیم گیری‌های مهم در ساخت یک برنامه‌ی سازمانی را را به دست خواهید آورد تا از الگوهای ثابت شده در موقع ساخت آن‌ها استفاده کنید.

 

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

jQuery کتابخانه‌ی غنی جاوا اسکریپتی است که پیمایش و دستکاری سند HTML، مدیریت رویداد ها، انیمیشن و AJAX را با استفاده از API‌های خود که در مرور گرهای مختلفی اجرا می‌شوند را بسیار ساده کرده است. با ترکیب تنوع و توسعه پذیری، جیکوئری روش نوشتن کدهای جاوا اسکریپت میلیون‌ها نفر را تغییر داد. در این کتاب به شما نشان خواهیم داد که چگونه به بهترین نحو از جیکوئری با استفاده از الگوهای طراحی موجود استفاده کنیم.

این کتاب با مروری از جیکوئری شروع می‌شود، سپس شما را با الگوهای طراحی متفاوتی به مانند facade، observer، publisher/subscriber و ... آشنا می‌کند. پس از آن سراغ تکنیک‌ها و کتاب خانه‌های قالب‌های سمت کلاینت و همچنین  الگوهای توسعه‌ی پلاگین می‌رود.

تعداد بازدید: ۹۵۶
دیدگاه ها: ۳
loading...

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