Vai al contenuto principale della pagina
Autore: | Nguyen-Duc Anh |
Titolo: | Generative AI for Effective Software Development |
Pubblicazione: | Cham : , : Springer International Publishing AG, , 2024 |
©2024 | |
Edizione: | 1st ed. |
Descrizione fisica: | 1 online resource (346 pages) |
Altri autori: | AbrahamssonPekka KhomhFoutse |
Nota di contenuto: | Intro -- Preface -- 1 The Rise of Generative AI in Software Engineering -- 2 Vision of Generative AI in Future Software Development -- 3 Purpose of the Book -- 4 Structure and Topics -- 5 What This Book Is and Isn't -- 6 Acknowledgments -- Contents -- Part I Fundamentals of Generative AI -- An Overview on Large Language Models -- 1 Introduction -- 2 Large Language Models -- 2.1 Tokenization -- 2.2 Attention Mechanism -- 2.3 Encoder and Decoder -- 2.4 Activation Functions -- 2.5 Prompt -- 3 Model Adaption -- 3.1 Pre-training -- 3.2 Fine-Tuning -- 3.3 Alignment Tuning -- 3.4 Resource-Efficient Model Adaptation -- 4 In-Context Learning (ICL) -- 4.1 Few-Shot Learning -- 4.2 Chain-of-Thought (CoT) -- 4.3 Reasoning+Action (ReAct) -- 5 Augmented LLM -- 5.1 Retrieval Augmented LLM -- 5.2 Web Augmentation -- 5.3 Tool Augmentation -- 6 Dataset and Evaluation -- 7 Tools or Libraries -- 8 Discussion and Conclusion -- References -- Part II Patterns and Tools for the Adoption of Generative AI in Software Engineering -- Comparing Proficiency of ChatGPT and Bardin Software Development -- 1 Introduction -- 2 Related Works -- 3 Comparing Capabilities of ChatGPT and Bard on Software Development -- 3.1 Requirements Analysis -- 3.2 Domain Modeling -- 3.3 Design Modeling -- 3.4 Implementation -- 4 Discussion -- 5 Conclusion -- References -- DAnTE: A Taxonomy for the Automation Degree of Software Engineering Tasks -- 1 Introduction -- 2 Background and Related Work -- 2.1 Taxonomies -- 2.2 Automation of SE Tasks -- 3 Research Method -- 4 DAnTE: A Taxonomy for SE Automation -- 4.1 Level 0: No Automation -- 4.2 Level 1: Informer -- 4.3 Level 2: Suggester -- 4.4 Level 3: Local Generator -- 4.5 Level 4: Global Generator -- 4.6 Level 5: Full Generator -- 5 Evaluation -- 5.1 Level 0 -- 5.2 Level 1 -- 5.3 Level 2 -- 5.4 Level 3 -- 5.5 Level 4 -- 5.6 Level 5 -- 6 Discussion. |
7 Conclusions -- References -- ChatGPT Prompt Patterns for Improving Code Quality, Refactoring, Requirements Elicitation, and Software Design -- 1 Introduction -- 2 Prompt Pattern Structure and Functionality -- 3 A Catalog of Prompt Patterns for Automating Software Engineering Tasks -- 4 System Requirements and Architecture Patterns -- 4.1 The Requirements Simulator Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 4.2 The Specification Disambiguation Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 4.3 The API Generator Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 4.4 The API Simulator Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 4.5 Pattern: Few-shot Code Example Generation -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 4.6 The Domain-Specific Language (DSL) Creation Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 4.7 The Architectural Possibilities Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 4.8 The Change Request Simulation Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 5 Code Quality and Refactoring Patterns -- 5.1 The Code Clustering Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 5.2 The Intermediate Abstraction Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences. | |
5.3 The Principled Code Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 5.4 The Hidden Assumptions Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 5.5 The Pseudo-code Refactoring Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 5.6 The Data-Guided Refactoring Pattern -- Intent and Context -- Motivation -- Structure and Key Ideas -- Example Implementation -- Consequences -- 6 Related Work -- 7 Concluding Remarks -- References -- Requirements Engineering Using Generative AI: Prompts and Prompting Patterns -- 1 Introduction -- 2 Background -- 2.1 Prompt Engineering -- 2.2 Generative AI Model Temperature -- 2.3 Related Work -- 3 Methodology -- 3.1 Experiment Design -- 3.2 Datasets -- 3.3 Tasks -- 3.4 Performance Metrics -- 3.5 Threats to Validity -- 4 Results and Analysis -- 4.1 Prompt Patterns' Performance for the Selected RE Tasks -- 4.2 Recommendations -- 4.3 Evaluation Framework -- 5 Discussion -- 6 Conclusion -- References -- Advancing Requirements Engineering Through Generative AI: Assessing the Role of LLMs -- 1 Introduction -- 2 LLMs-Driven RE Process -- 3 Requirements Elicitation -- 3.1 Elicitation Tasks -- 3.2 Role of LLMs -- 4 Requirements Specification -- 4.1 Specification Tasks -- 4.2 Role of LLMs -- 5 Requirements Analysis -- 5.1 Analysis Tasks -- 5.2 Role of LLMs -- 6 Requirements Validation -- 6.1 Validation Tasks -- 6.2 Role of LLMs -- 7 Preliminary Evaluation -- 8 Lessons Learned -- 9 Conclusion -- References -- Part III Generative AI in Software Development: Case Studies -- Generative AI for Software Development: A Family of Studies on Code Generation -- 1 Introduction -- 2 Related Work -- 2.1 Different LLMs for Code Generation. | |
2.2 Generate Code with LLMs to Implement a Functionality -- 2.3 Generate Test Cases with LLMs -- 2.4 Program Repair with LLMs -- 3 Research Method -- 3.1 First Study: Quality of Code Generated by LLM Compared to Humans -- 3.2 Second Study: Quality of Test Cases Generated by LLMs Compared to an Automatic Test Generation Tool -- 4 Result and Discussions -- 4.1 Results -- 4.2 Practical Suggestions -- 4.3 Discussion -- 5 Conclusion -- References -- BERTVRepair: On the Adoption of CodeBERT for Automated Vulnerability Code Repair -- 1 Introduction -- 2 Background -- 2.1 Transformer Architecture and BERT Model -- Transformer -- BERT -- 2.2 CodeBERT -- 2.3 Code Repair -- Template-Based Code Repairs -- Source Code Embeddings -- Generative-Based Code Repairs -- SeqTrans -- VRepair -- 3 Our Proposal: BERTVRepair -- 3.1 Code Preprocessing and Tokenization -- 3.2 Code Embedding Extraction -- 4 Experiments -- 4.1 Dataset -- 4.2 Model Training -- 4.3 Evaluation Metrics -- 4.4 Environment -- 5 Result -- 6 Conclusions -- References -- ChatGPT as a Full-Stack Web Developer -- 1 Introduction -- 2 AI-Assisted Software Development -- 3 Research Design -- 3.1 Project Background -- 3.2 Project Implementation and Phases -- 3.3 Development Environment -- 3.4 Development Process -- 3.5 Documentation -- 3.6 Implemented Features -- 4 Results -- 4.1 Discussions with ChatGPT -- 4.2 Code -- 4.3 Development Team's Observations and Lessons Learned -- 5 Evaluation -- 5.1 Professional Evaluation of the Backend -- File Structure and Test Coverage -- REST Handlers and Database -- Error Handling -- Maintainability -- 5.2 Professional Evaluation of the Frontend -- File Structure and Test Coverage -- Styling and Implemented Functionalities -- 5.3 Static Code Analysis -- 5.4 The Summary of Evaluation -- 6 Discussion -- 7 Conclusions -- References. | |
Part IV Generative AI in Software Engineering Processes -- Transforming Software Development with Generative AI: Empirical Insights on Collaboration and Workflow -- 1 Introduction -- 2 Related Work -- 2.1 Productivity and Work Satisfaction -- 2.2 Software Development, Knowledge Work, and Technology -- 2.3 Teams, Knowledge Sharing, and Performance -- 3 Research Method and Analysis -- 3.1 Data Collection and Analysis -- 4 What Is Generative AI Used for in Software Development? -- 4.1 Asking for Assistance When Stuck -- 4.2 Learning -- 4.3 Virtual Environments -- 4.4 Copywriting -- 4.5 Boilerplating Code and Text -- 4.6 Working with Existing Code -- 5 How and Why Do We Interact with GenAI? -- 5.1 Effects -- 5.2 Challenges -- 5.3 Prompt Engineering -- 6 Discussion -- 7 Concluding Remarks -- References -- How Can Generative AI Enhance Software Management? Is It Better Done than Perfect? -- 1 Introduction -- 2 Background -- 2.1 Agile and Software Management -- Agile: Scrum Framework -- Problems in Agile Practices -- 2.2 Generative AI -- What Is GenAI? -- Why Use GenAI? -- Benchmarks for GenAI Tasks -- 2.3 Generative AI Affecting Work Processes -- 2.4 Ethics and Human Oversight -- 3 Research Method -- 3.1 Threats to Validity -- 4 Results -- 4.1 Time Estimations Versus Actual Elapsed Time -- Experiment 1: Unit Test Implementation -- Experiment 2: GPT Is Biased, But Not as Much as Humans -- 4.2 Experiment 3: Definition of Done -- 4.3 Experiment 4: From Task Titles to Checklists -- 4.4 Experiment 5: Requirements Met -- 5 Discussion -- 5.1 Oversight -- 5.2 Better than a Human? -- 5.3 Different Reasoning Strategies -- 6 Conclusion -- 7 Future Work -- 7.1 Balancing GenAIs -- 7.2 Collaborate with AI: Tuning, Training, and Feedback -- References -- Value-Based Adoption of ChatGPT in Agile Software Development: A Survey Study of Nordic Software Experts. | |
1 Introduction. | |
Titolo autorizzato: | Generative AI for Effective Software Development |
ISBN: | 3-031-55642-9 |
Formato: | Materiale a stampa |
Livello bibliografico | Monografia |
Lingua di pubblicazione: | Inglese |
Record Nr.: | 9910865280603321 |
Lo trovi qui: | Univ. Federico II |
Opac: | Controlla la disponibilità qui |