کتاب مهندسی نرم‌افزار مدرن: انجام آنچه مؤثر است برای ساخت نرم‌افزار بهتر و سریع‌تر – ویرایش اول

اثرDavid Farley

عنوان:

Modern Software Engineering

نویسنده:

David Farley

انتشارات:

Addison-Wesley Professional

تاریخ انتشار:

2021

حجم:

6.5MB

دانلود

معرفی کتاب:" مهندسی نرم‌افزار مدرن: انجام آنچه مؤثر است برای ساخت نرم‌افزار بهتر و سریع‌تر – ویرایش اول "

خلاقیت، اثربخشی و در نهایت، بهبود کد خود را ارتقاء دهید

در کتاب «مهندسی نرم‌افزار مدرن»، دیوید فارلی، پیشگام در زمینه تحویل مستمر (Continuous Delivery)، به متخصصان نرم‌افزار کمک می‌کند تا درک بهتری از کار خود داشته باشند، آن را مؤثرتر مدیریت کنند و کیفیت نرم‌افزارهایشان و همچنین زندگی خود و همکارانشان را بهبود دهند.

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

آنچه در این کتاب می‌آموزید:

  • روشن کردن اهداف فنی و حرفه‌ای
  • انتخاب ابزارها بر اساس معیارهای منطقی، نه صرفاً محبوبیت
  • سازمان‌دهی سیستم‌ها برای پیشرفت گام‌به‌گام و مداوم
  • ارزیابی پیشرفت با تمرکز بر شکوفایی سیستم، نه صرفاً تعداد خطوط کد
  • بهره‌گیری از آزمایش، تجربه و بازخورد برای رشد
  • مدیریت پیچیدگی در سیستم‌های نرم‌افزاری با رویکرد علمی و عمل‌گرایانه
  • تشخیص و تمایز بین ایده‌های «خوب» و «بد» در توسعه نرم‌افزار
  • درس گرفتن از تاریخچه‌ی مهندسی نرم‌افزار و تجارب گذشته

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

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

فهرست مطالب

  • Cover Page
  • About This eBook
  • Praise for Modern Software Engineering
  • Title Page
  • Copyright Page
  • Pearson’s Commitment to Diversity, Equity, and Inclusion
  • Dedication
  • Contents
  • Foreword
  • Preface
  • Acknowledgments
  • About the Author
  • Part I: What Is Software Engineering?
  • Chapter 1: Introduction
  • Engineering—The Practical Application of Science
  • What Is Software Engineering?
  • Reclaiming “Software Engineering”
  • The Birth of Software Engineering
  • Shifting the Paradigm
  • Summary
  • Chapter 2: What Is Engineering?
  • Production Is Not Our Problem
  • Design Engineering, Not Production Engineering
  • A Working Definition of Engineering
  • Engineering != Code
  • Why Does Engineering Matter?
  • The Limits of “Craft”
  • Precision and Scalability
  • Managing Complexity
  • Repeatability and Accuracy of Measurement
  • Engineering, Creativity, and Craft
  • Why What We Do Is Not Software Engineering
  • Trade-Offs
  • The Illusion of Progress
  • The Journey from Craft to Engineering
  • Craft Is Not Enough
  • Time for a Rethink?
  • Summary
  • Chapter 3: Fundamentals of an Engineering Approach
  • An Industry of Change?
  • The Importance of Measurement
  • Applying Stability and Throughput
  • The Foundations of a Software Engineering Discipline
  • Experts at Learning
  • Experts at Managing Complexity
  • Summary
  • Part II: Optimize for Learning
  • Chapter 4: Working Iteratively
  • Practical Advantages of Working Iteratively
  • Iteration as a Defensive Design Strategy
  • The Lure of the Plan
  • Practicalities of Working Iteratively
  • Summary
  • Chapter 5: Feedback
  • A Practical Example of the Importance of Feedback
  • Feedback in Coding
  • Feedback in Integration
  • Feedback in Design
  • Feedback in Architecture
  • Prefer Early Feedback
  • Feedback in Product Design
  • Feedback in Organization and Culture
  • Summary
  • Chapter 6: Incrementalism
  • Importance of Modularity
  • Organizational Incrementalism
  • Tools of Incrementalism
  • Limiting the Impact of Change
  • Incremental Design
  • Summary
  • Chapter 7: Empiricism
  • Grounded in Reality
  • Separating Empirical from Experimental
  • “I Know That Bug!”
  • Avoiding Self-Deception
  • Inventing a Reality to Suit Our Argument
  • Guided by Reality
  • Summary
  • Chapter 8: Being Experimental
  • What Does “Being Experimental” Mean?
  • Feedback
  • Hypothesis
  • Measurement
  • Controlling the Variables
  • Automated Testing as Experiments
  • Putting the Experimental Results of Testing into Context
  • Scope of an Experiment
  • Summary
  • Part III: Optimize for Managing Complexity
  • Chapter 9: Modularity
  • Hallmarks of Modularity
  • Undervaluing the Importance of Good Design
  • The Importance of Testability
  • Designing for Testability Improves Modularity
  • Services and Modularity
  • Deployability and Modularity
  • Modularity at Different Scales
  • Modularity in Human Systems
  • Summary
  • Chapter 10: Cohesion
  • Modularity and Cohesion: Fundamentals of Design
  • A Basic Reduction in Cohesion
  • Context Matters
  • High-Performance Software
  • Link to Coupling
  • Driving High Cohesion with TDD
  • How to Achieve Cohesive Software
  • Costs of Poor Cohesion
  • Cohesion in Human Systems
  • Summary
  • Chapter 11: Separation of Concerns
  • Dependency Injection
  • Separating Essential and Accidental Complexity
  • Importance of DDD
  • Testability
  • Ports & Adapters
  • When to Adopt Ports & Adapters
  • What Is an API?
  • Using TDD to Drive Separation of Concerns
  • Summary
  • Chapter 12: Information Hiding and Abstraction
  • Abstraction or Information Hiding
  • What Causes “Big Balls of Mud”?
  • Organizational and Cultural Problems
  • Technical Problems and Problems of Design
  • Fear of Over-Engineering
  • Improving Abstraction Through Testing
  • Power of Abstraction
  • Leaky Abstractions
  • Picking Appropriate Abstractions
  • Abstractions from the Problem Domain
  • Abstract Accidental Complexity
  • Isolate Third-Party Systems and Code
  • Always Prefer to Hide Information
  • Summary
  • Chapter 13: Managing Coupling
  • Cost of Coupling
  • Scaling Up
  • Microservices
  • Decoupling May Mean More Code
  • Loose Coupling Isn’t the Only Kind That Matters
  • Prefer Loose Coupling
  • How Does This Differ from Separation of Concerns?
  • DRY Is Too Simplistic
  • Async as a Tool for Loose Coupling
  • Designing for Loose Coupling
  • Loose Coupling in Human Systems
  • Summary
  • Part IV: Tools to Support Engineering in Software
  • Chapter 14: The Tools of an Engineering Discipline
  • What Is Software Development?
  • Testability as a Tool
  • Measurement Points
  • Problems with Achieving Testability
  • How to Improve Testability
  • Deployability
  • Speed
  • Controlling the Variables
  • Continuous Delivery
  • General Tools to Support Engineering
  • Summary
  • Chapter 15: The Modern Software Engineer
  • Engineering as a Human Process
  • Digitally Disruptive Organizations
  • Outcomes vs. Mechanisms
  • Durable and Generally Applicable
  • Foundations of an Engineering Discipline
  • Summary
  • Index

مشخصات

نام کتاب

Modern Software Engineering

نویسنده

David Farley

انتشارات

Addison-Wesley Professional

تاریخ انتشار

2021

ISBN

9780137314911

تعداد صفحات

362

زبان

انگلیسی

فرمت

pdf

حجم

6.5MB

موضوع

Software Engineering; Software Design