دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش:
نویسندگان: Julian Michael Bass
سری:
ISBN (شابک) : 3031054687, 9783031054686
ناشر: Springer
سال نشر: 2023
تعداد صفحات: 327
[328]
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 5 Mb
در صورت تبدیل فایل کتاب Agile Software Engineering Skills به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب مهارت های مهندسی نرم افزار چابک نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
این کتاب در مورد کار گروهی برای ایجاد نرم افزارهای کاربردی است. این مهارت ها در روش های توسعه نرم افزار چابک، کار تیمی، کنترل نسخه و ادغام مداوم را پوشش می دهد و به خوانندگان نشان می دهد که چگونه برخی از جدیدترین ایده های ناب، چابک و Kanban را اعمال کنند. بخش اول، که بر روی افراد متمرکز است، نقش های مختلف پروژه و مهارت های مورد نیاز برای اجرای هر نقش را توضیح می دهد. این شامل اعضای تیم های خودسازمانده، استادان اسکرام، صاحبان محصول و فعالیت هایی برای مدیریت سایر ذینفعان می شود. مهارت های مورد نیاز برای ایجاد مصنوعات محصول در قسمت دوم به تفصیل آمده است. اینها شامل مهارتهایی برای ایجاد نیازمندیهای چابک، معماری، طرحها و همچنین توسعه و مصنوعات امنیتی است. فرآیند توسعه چابک برای هماهنگی با همکاران در قسمت سوم توضیح داده شده است. مهارت های مورد نیاز برای تسهیل فرآیند افزایشی و استفاده از ابزارهای نرم افزاری برای کنترل نسخه و تست خودکار را معرفی می کند. در نهایت برخی از موضوعات پیشرفته تر در بخش چهارم توضیح داده شده است. این موضوعات شامل پروژه های بزرگ متشکل از چندین تیم همکاری، استقرار خودکار، خدمات نرم افزار ابری، DevOps و سیستم های زنده در حال تکامل است. این کتاب درسی به شایستگی های قابل توجهی در گروه ویژه برنامه درسی محاسباتی IEEE/ACM 2020 می پردازد. این کتاب شامل نزدیک به 100 تمرین برای آزمایش و به کارگیری مهارت های مورد نیاز برای توسعه نرم افزار چابک است. نکات، راهنماییها و توصیههای بیشتر در مورد مقابله با تمرینها در پایان هر فصل ارائه شده است، و یک پروژه مطالعه موردی، با کد منبع قابل دانلود از یک مخزن آنلاین، مهارتهای آموخته شده در فصلها را ادغام میکند. علاوه بر این، نمونه پروژه های نرم افزاری بیشتری نیز در آنجا موجود است. به این ترتیب، این کتاب یک راهنمای عملی برای کار بر روی یک پروژه توسعه به عنوان بخشی از یک تیم ارائه میکند و از نیازهای متخصصان اولیه شغلی و همچنین دانشجویان مهندسی نرمافزار در مقطع کارشناسی و علوم کامپیوتر الهام گرفته شده است.
This textbook is about working in teams to create functioning software. It covers skills in agile software development methods, team working, version control and continuous integration and shows readers how to apply some of the latest ideas from lean, agile and Kanban. Part I, which focuses on People, describes various project roles and the skills needed to perform each role. This includes members of self-organizing teams, scrum masters, product owners and activities for managing other stakeholders. The skills needed to create Product artefacts are detailed in Part II. These include skills to create agile requirements, architectures, designs as well as development and security artefacts. The agile development Process to coordinate with co-workers is described in Part III. It introduces the skills needed to facilitate an incremental process and to use software tools for version control and automated testing. Eventually some more advanced topics are explained in Part IV. These topics include large projects comprising multiple cooperating teams, automating deployment, cloud software services, DevOps and evolving live systems. This textbook addresses significant competencies in the IEEE/ACM Computing Curricula Task Force 2020. It includes nearly 100 exercises for trying out and applying the skills needed for agile software development. Hints, tips and further advice about tackling the exercises are presented at the end of each chapter, and a case study project, with downloadable source code from an online repository, integrates the skills learned across the chapters. In addition, further example software projects are also available there. This way, the book provides a hands-on guide to working on a development project as part of a team, and is inspired by the needs of early career practitioners as well as undergraduate software engineering and computer science students.
Preface Book Structure IEEE/ACM Computing Curriculum Competencies Exercises How to Use This Book Learning Journal Tabby Cat Project Student Group Projects and Hackathons Prior Knowledge Acknowledgements Contents 1 Introduction and Principles 1.1 Agile Software Skills 1.1.1 People 1.1.2 Product 1.1.3 Process 1.1.4 Advanced Skills 1.2 Engineering Software 1.3 Tabby Cat Project 1.4 Supporting Resources 1.5 Evidence Underpinning the Book 1.6 Software HackCamp 1.7 Create Yourself a Livelihood References Part I People Other Book Parts 2 Self-Organising Teams 2.1 Introduction 2.2 Self-Organising Teams 2.2.1 Attributes of Self-Organising Teams 2.3 Groups and Teams 2.3.1 Building Team Performance 2.4 Agile Principles 2.4.1 Sustainable Pace 2.4.2 Collective Code Ownership 2.5 Forming Teams 2.5.1 Accelerating Team Formation 2.5.2 Handling Difference and Conflict 2.5.3 Accelerating Norming 2.6 Collaboration Activities Within Self-Organising Teams 2.6.1 Mentor 2.6.2 Co-ordinator 2.6.3 Translator 2.6.4 Champion 2.6.5 Promoter 2.6.6 Terminator 2.7 Virtual Teams 2.7.1 Principles for Virtual Team Management 2.7.2 Preparation for Team Success 2.7.2.1 Cultural Diversity 2.7.2.2 Remote Pair Programming 2.7.3 Launch 2.7.4 Performance Management 2.8 Communities of Practice 2.9 Exercises 2.10 Hints, Tips and Advice on Exercises 2.11 Chapter Summary References 3 Agile Roles 3.1 Introduction 3.2 Scrum Master 3.2.1 Process Anchor 3.2.2 Iteration Planner 3.2.3 Stand-up Facilitator 3.2.4 Impediment Remover 3.2.5 Integration Anchor 3.3 Product Owner/On-site Customer 3.3.1 Product Grooming 3.3.2 Prioritiser 3.3.3 Release Master 3.3.4 Communicator 3.3.5 Traveller 3.3.6 Intermediary 3.4 Product Owner Behaviours 3.4.1 Favour Face-to-Face Interactions 3.4.2 Understand and Focus on Real Goals 3.4.3 Make Product Owner Teams Well Defined 3.5 Other Roles: For Larger Projects 3.5.1 Product Sponsor 3.5.2 Technical Architect 3.6 Exercises 3.7 Hints, Tips and Advice on Exercises 3.8 Chapter Summary References 4 Managing Stakeholders 4.1 Introduction 4.2 Managing Upwards 4.2.1 Set Expectations 4.2.2 Confess to Catastrophe 4.2.3 Share Success 4.2.4 Unreasonable Demands 4.3 Managing Outwards 4.4 Contracts 4.4.1 Contracts and Change Requests 4.4.2 Time and Materials Contracts 4.4.3 Outsourcing Contracts 4.4.4 Offshoring Contracts 4.4.5 Academic Contracts 4.4.6 Negotiating Contracts 4.5 Communication Quality 4.5.1 Audience 4.5.2 Narrative 4.5.3 Language 4.5.4 Process 4.6 Communication Tools 4.6.1 Reports 4.6.1.1 Report Composition 4.6.1.2 Report Content 4.6.2 Presentations 4.6.2.1 Presentation Types 4.6.2.2 Presentation Content 4.6.2.3 Presentation Delivery 4.6.2.4 Presentation Rehearsal 4.6.3 Blogs and Wikis 4.6.4 Videos 4.7 Exercises 4.8 Hints, Tips and Advice on Exercises 4.9 Chapter Summary References 5 Ethics 5.1 Introduction 5.2 What Went Wrong? 5.2.1 Algorithms and Inequality 5.2.2 Platforms and Fake Markets 5.2.3 Errors, Faults and Failures 5.2.4 Criminal and Unethical Behaviour 5.3 Copyright and Patents 5.4 Professional Bodies 5.4.1 BCS Codes of Conduct 5.4.2 ACM Codes of Ethics 5.4.3 Problems with Codes of Ethics 5.5 Activism 5.5.1 Whistle-Blowing 5.5.2 Unions 5.6 Professional Development 5.6.1 Initial Professional Development 5.6.2 Continuing Professional Development 5.6.3 Skills Framework for the Information Age 5.6.4 Other Training and Development 5.7 Exercises 5.8 Hints, Tips and Advice on Exercises 5.9 Chapter Summary References 6 Tabby Cat Project, Getting Started 6.1 Introduction 6.2 Online Repository Activities 6.3 Actually Getting Started 6.4 Sprint Zero 6.5 Subsequent Sprints 6.6 Chapter Summary Reference Part II Product Other Book Parts 7 Requirements 7.1 Introduction 7.2 Types of Requirements 7.2.1 Functional Requirements 7.2.2 Non-functional Requirements 7.2.3 Incremental Requirements 7.3 Requirements Quality 7.3.1 Requirements Precision 7.3.2 Requirements Consistency 7.3.3 Requirements Completeness 7.4 Use Cases 7.4.1 Use Case Diagrams 7.4.2 Use Case, Descriptions 7.5 User Stories 7.6 User Story Mapping 7.7 Personas 7.8 Exercises 7.9 Hints, Tips and Advice on Exercises 7.10 Chapter Summary References 8 Architecture 8.1 Introduction 8.2 Architecture in Agile 8.2.1 Refactoring 8.2.2 Rework 8.2.3 Planned Refactoring 8.2.4 Architectural Abstraction 8.3 Design Styles 8.3.1 Client-Server 8.3.2 Repository Architecture 8.3.3 Pipe and Filter 8.3.4 Layered Architecture 8.3.5 Clean Architecture 8.4 Reference Architectures 8.5 Design Principles 8.5.1 KISS Principle 8.5.2 DRY (Do Not Repeat Yourself) 8.5.3 YAGNI (You Aren't Gonna Need It) 8.5.4 GRASP 8.5.5 SOLID 8.6 Architecture Implementation 8.7 Exercises 8.8 Hints, Tips and Advice on Exercises 8.9 Chapter Summary References 9 Design 9.1 Introduction 9.2 Feature-Driven Development 9.3 System Modelling 9.4 Class Diagrams 9.4.1 Deriving Class Diagrams 9.4.1.1 Noun and Noun Phrases 9.4.1.2 Verb and Verb Phrases 9.4.2 Domain Models 9.4.3 High-Level Design Class Diagrams 9.4.4 Detailed Design Class Diagrams 9.5 Object Sequence Diagrams 9.6 Design Patterns 9.6.1 Singleton Pattern 9.6.2 Model View Controller 9.6.3 Factory Pattern 9.7 Technology Stack Selection 9.8 Model-Driven Engineering 9.9 Exercises 9.10 Hints, Tips and Advice on Exercises 9.11 Chapter Summary References 10 Development 10.1 Introduction 10.2 Planning Artefacts 10.2.1 Kanban Boards 10.2.2 Product Backlog 10.2.3 Test Plan 10.3 Iteration Artefacts 10.3.1 Iteration Backlog 10.3.2 User Story Estimates 10.3.3 Burn Down Chart 10.4 Feature Artefacts 10.4.1 Prototypes 10.4.2 Source Code 10.4.3 Unit Tests 10.4.4 Issues 10.5 Release Artefacts 10.5.1 Release Code Binaries 10.5.2 Regression Tests 10.6 Exercises 10.7 Hints, Tips and Advice on Exercises 10.8 Chapter Summary References 11 Security 11.1 Introduction 11.2 Security Analysis 11.2.1 Security Objectives 11.2.2 Threat Model 11.3 Security Requirements 11.3.1 Security Mitigation Requirements 11.3.2 Abuse Stories 11.3.3 Security Personas and Anti-personas 11.3.4 Risk and Risk Management 11.4 Security Design 11.4.1 Security Patterns 11.5 Security Implementation 11.5.1 Abuse Story Implementation 11.5.2 OWASP Top Ten 11.5.3 Authentication 11.6 Security Evaluation 11.6.1 Manual Security Inspections and Reviews 11.6.2 Automated Security Testing 11.7 Agile Security Processes 11.7.1 Roles 11.7.2 Artefacts 11.7.3 Ceremonies 11.8 Exercises 11.9 Hints, Tips and Advice on Exercises 11.10 Chapter Summary References 12 Tabby Cat Project: Getting Building 12.1 Introduction 12.2 Requirements 12.2.1 Functional Requirements 12.2.2 Non-functional Requirements 12.3 Architecture 12.3.1 Architectural Style 12.3.2 Client-Server 12.4 Design 12.4.1 Back-End Design 12.4.2 Front-End Design 12.5 Development 12.5.1 Back-End Technologies 12.5.2 Front-End Technologies 12.5.3 Code Organisation 12.6 Security 12.7 Illustrative Implementation References Part III Process, Tools and Automation Other Book Parts 13 Agile Ceremonies 13.1 Introduction 13.2 Iteration Planning 13.2.1 Prioritisation 13.2.2 Features and Technical Tasks 13.2.3 Estimation 13.2.3.1 Story Point Estimation 13.2.3.2 T-Shirt Sizing 13.2.4 Task Assignment 13.3 Coordination Meetings 13.3.1 Virtual Stand-Up Meetings 13.3.2 Kanban Boards 13.4 Customer Demonstrations 13.4.1 Retrospectives 13.5 Pair Programming 13.6 Test-Driven Development 13.7 Specialist Agile Ceremonies 13.7.1 Spikes 13.7.2 Swarm Programming 13.7.3 Mob Programming 13.8 Exercises 13.9 Hints, Tips and Advice on Exercises 13.10 Chapter Summary References 14 Lean 14.1 Introduction 14.1.1 Respecting People 14.1.2 Create Knowledge 14.1.3 Build Quality In 14.2 Value 14.2.1 Non-monetary Value 14.2.2 Value Stream Mapping 14.2.3 Definition of Done 14.3 Waste 14.3.1 Partially Done Work 14.3.2 Superfluous Features 14.3.3 Rework 14.3.4 Hand-Offs 14.3.5 Task Switching 14.3.6 Delays 14.3.7 Defects 14.4 Speed 14.4.1 Work-in-Progress Limits 14.4.2 Work Item Variability 14.5 Lean Start-Up 14.5.1 Bootstrapping 14.5.2 Minimum Viable Product 14.5.3 Pivot 14.6 Exercises 14.7 Hints, Tips and Advice on Exercises 14.8 Chapter Summary References 15 Version Control 15.1 Introduction 15.2 Content Management 15.2.1 Create a Local Git Repository 15.3 Source Code History 15.3.1 Stage Files for Inclusion in the Version Control Repository 15.3.2 Commit Files into the Version Control Repository 15.3.3 Making and Removing a Change 15.4 Source Code Remote Archiving 15.4.1 Version Control Remote Server Archiving 15.5 Source Code Sharing 15.5.1 Trunk and Branches 15.6 Exercises 15.7 Hints, Tips and Advice on Exercises 15.8 Chapter Summary References 16 Testing and Test Automation 16.1 Introduction 16.2 Test Planning 16.3 Testing Levels 16.3.1 Unit Testing 16.3.2 Integration Testing 16.3.3 System Testing 16.3.4 Acceptance Testing 16.4 Testing Techniques 16.4.1 Regression Testing 16.4.2 User Experience Testing 16.4.3 Performance Testing 16.4.4 Security Testing 16.4.5 A/B Testing 16.5 Test Automation 16.5.1 Unit Test Automation 16.5.2 Acceptance Test-Driven Development 16.5.3 Behaviour-Driven Development 16.6 Exercises 16.7 Hints, Tips and Advice on Exercises 16.8 Chapter Summary References 17 Tabby Cat Project: Process, Tools and Automation 17.1 Introduction 17.2 Agile Ceremonies and Lean Thinking 17.3 Version Control 17.4 Testing and Test Automation References Part IV Advanced Skills Other Book Parts 18 Large-Scale Agile 18.1 Introduction 18.2 Distance 18.2.1 Geographical Distance 18.2.2 Temporal Distance 18.2.3 Cultural Distance 18.3 Large-Scale Artefacts 18.3.1 Risk Register 18.3.2 Architecture Standards 18.4 Large-Scale Scrum Master Activities 18.4.1 Scrum-of-Scrums Facilitator 18.4.2 Agile Coach 18.5 Large-Scale Product Owner Activities 18.5.1 Product Sponsor 18.5.2 Risk Assessor 18.5.3 Governor 18.5.4 Technical Architect 18.5.5 Technical Product Owner 18.5.6 Product Owner: Market Trends 18.6 Spotify Culture 18.6.1 Squads 18.6.2 Chapters 18.6.3 Tribes 18.6.4 Guilds 18.6.5 Architectural Alignment 18.7 Other Frameworks 18.7.1 Large-Scale Scrum 18.7.2 SAFe 18.8 Chapter Summary References 19 Cloud Deployment 19.1 Introduction 19.2 Cloud Service Models 19.2.1 Infrastructure-as-a-Service 19.2.2 Platform-as-a-Service 19.2.3 Software-as-a-Service 19.2.4 Serverless Computing 19.3 Cloud-Hosted Application Patterns 19.3.1 Scalability 19.3.2 Multi-Tenancy 19.3.3 Automated Customer On-Boarding 19.3.4 Revenue Generation 19.3.5 `n'-Tier Architectures 19.4 Automated Deployment 19.5 Containerisation 19.6 Chapter Summary References 20 Technical Debt, Software Evolution and Legacy 20.1 Introduction 20.2 Technical Debt 20.2.1 Technical Debt and Agile 20.2.2 Refactoring 20.3 Software Evolution 20.3.1 Wrappering 20.3.2 Re-engineering 20.4 Legacy Systems 20.5 Chapter Summary References 21 DevOps 21.1 Introduction 21.2 Build and Deployment Pipelines 21.2.1 Conventional Deployment Team Structures 21.2.2 Self-Organising Deployment Team Structures 21.3 Pipeline Automation 21.4 Test Integration 21.4.1 Testing New Features 21.4.2 Regression Testing Legacy Features 21.5 Continuous Integration 21.6 DevOps and DevSecOps 21.7 Continuous Delivery and Deployment 21.8 Chapter Summary References A Research Methods A.1 Research Sites A.2 Data Collection A.3 Data Analysis A.3.1 Open Coding A.3.2 Memo Writing A.3.3 Constant Comparison A.3.4 Saturation References B Further Reading B.1 Core Reading B.2 More Specialist Topics B.3 Software Engineering Research References Index