- عنوان کتاب: Fundamentals of Software Architecture
- نویسنده: Mark Richards, Neal Ford
- حوزه: معماری نرمافزار
- سال انتشار: 2025
- تعداد صفحه: 981
- زبان اصلی: انگلیسی
- نوع فایل: pdf
- حجم فایل: 18.6 مگابایت
ریاضیدانان نظریههایی را بر اساس اصول موضوعه – فرضیاتی برای چیزهایی که بدون شک درست هستند – خلق میکنند. معماران نرمافزار نیز نظریههایی را بر اساس اصول موضوعه میسازند، اما دنیای نرمافزار، خب، از ریاضیات نرمتر است: چیزهای اساسی همچنان با سرعت زیادی در حال تغییر هستند، از جمله اصول موضوعی که ما نظریههای خود را بر اساس آنها بنا میکنیم. اکوسیستم توسعه نرمافزار در حالت تعادل پویای ثابتی قرار دارد: در حالی که در هر نقطه زمانی معین در حالت متعادلی قرار دارد، در درازمدت رفتار پویایی از خود نشان میدهد. یک نمونه مدرن عالی از ماهیت این اکوسیستم، ظهور کانتینرسازی و تغییرات ناشی از آن را دنبال میکند: ابزارهایی مانند Kubernetes یک دهه پیش وجود نداشتند، اما اکنون کنفرانسهای نرمافزاری کاملی برای خدمترسانی به کاربران آن وجود دارند. اکوسیستم نرمافزار به طور آشفتهای تغییر میکند: یک تغییر کوچک باعث تغییر کوچک دیگری میشود؛ وقتی صدها بار تکرار شود، یک اکوسیستم جدید ایجاد میکند. معماران مسئولیت مهمی در زیر سوال بردن فرضیات و اصول موضوعه باقی مانده از دورانهای گذشته دارند. بسیاری از کتابهای مربوط به معماری نرمافزار در دورانی نوشته شدهاند که به سختی شبیه دنیای فعلی است. در واقع، نویسندگان معتقدند که ما باید اصول بنیادی را به طور منظم، با توجه به شیوههای مهندسی بهبود یافته، اکوسیستمهای عملیاتی، فرآیندهای توسعه نرمافزار – هر چیزی که تعادل آشفته و پویایی را که معماران و توسعهدهندگان هر روز در آن کار میکنند، تشکیل میدهد – زیر سوال ببریم. ناظران دقیق معماری نرمافزار در طول زمان شاهد تکامل قابلیتها بودهاند. با شروع از شیوههای مهندسی برنامهنویسی افراطی، ادامه با تحویل مداوم، انقلاب DevOps، میکروسرویسها، کانتینرسازی و اکنون منابع مبتنی بر ابر، همه این نوآوریها منجر به قابلیتها و بدهبستانهای جدید شدند. با تغییر قابلیتها، دیدگاههای معماران در مورد صنعت نیز تغییر کرد. برای سالهای متمادی، تعریف طنزآمیز معماری نرمافزار «چیزهایی بود که بعداً تغییر آنها دشوار است». بعدها، سبک معماری میکروسرویسها ظاهر شد، جایی که تغییر یک ملاحظه طراحی درجه یک است. هر دوره جدید نیاز به شیوهها، ابزارها، اندازهگیریها، الگوها و مجموعهای از تغییرات دیگر دارد. این کتاب با در نظر گرفتن تمام نوآوریهای دهه گذشته، همراه با برخی معیارها و اقدامات جدید متناسب با ساختارها و دیدگاههای جدید امروزی، به معماری نرمافزار از منظری مدرن نگاه میکند. عنوان فرعی کتاب ما «یک رویکرد مهندسی مدرن» است. توسعهدهندگان مدتهاست که آرزو دارند توسعه نرمافزار را از یک هنر، که در آن صنعتگران ماهر میتوانند آثار منحصر به فردی خلق کنند، به یک رشته مهندسی تبدیل کنند که به تکرارپذیری، دقت و تحلیل مؤثر اشاره دارد. در حالی که مهندسی نرمافزار هنوز از سایر رشتههای مهندسی به مراتب عقبتر است (انصافاً، نرمافزار در مقایسه با اکثر انواع دیگر مهندسی، رشتهای بسیار جوان است)، معماران پیشرفتهای بزرگی داشتهاند که در مورد آنها بحث خواهیم کرد. به طور خاص، شیوههای مهندسی چابک مدرن، گامهای بلندی را در انواع سیستمهایی که معماران طراحی میکنند، امکانپذیر ساخته است.
Mathematicians create theories based on axioms—assumptions for things indisputably true. Software architects also build theories atop axioms, but the software world is, well, softer than mathematics: fundamental things continue to change at a rapid pace, including the axioms we base our theories upon. The software development ecosystem exists in a constant state of dynamic equilibrium: while it exists in a balanced state at any given point in time, it exhibits dynamic behavior over the long term. A great modern example of the nature of this ecosystem follows the ascension of containerization and the attendant changes: tools like Kubernetes didn’t exist a decade ago, yet now entire software conferences exist to service its users. The software ecosystem changes chaotically: one small change causes another small change; when repeated hundreds of times, it generates a new ecosystem. Architects have an important responsibility to question assumptions and axioms left over from previous eras. Many of the books about software architecture were written in an era that only barely resembles the current world. In fact, the authors believe that we must question fundamental axioms on a regular basis, in light of improved engineering practices, operational ecosystems, software development processes— everything that makes up the messy, dynamic equilibrium where architects and developers work each day. Careful observers of software architecture over time witnessed an evolution of capabilities. Starting with the engineering practices of Extreme Programming, continuing with continuous delivery, the DevOps revolution, microservices, containerization, and now cloud-based resources, all of these innovations led to new capabilities and trade-offs. As capabilities changed, so did architects’ perspectives on the industry. For many years, the tonguein- cheek definition of software architecture was “the stuff that’s hard to change later.” Later, the microservices architecture style appeared, where change is a first-class design consideration. Each new era requires new practices, tools, measurements, patterns, and a host of other changes. This book looks at software architecture in a modern light, taking into account all the innovations from the last decade, along with some new metrics and measures suited to today’s new structures and perspectives. The subtitle of our book is “A Modern Engineering Approach.” Developers have long wished to change software development from a craft, where skilled artisans can create one-off works, to an engineering discipline, which implies repeatability, rigor, and effective analysis. While software engineering still lags behind other types of engineering disciplines by many orders of magnitude (to be fair, software is a very young discipline compared to most other types of engineering), architects have made huge improvements, which we’ll discuss. In particular, modern Agile engineering practices have allowed great strides in the types of systems that architects design.
این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:
Download: Fundamentals of Software Architecture
نظرات کاربران