Cover image for Client-Centered Software Development : The CO-FOSS Approach.
Client-Centered Software Development : The CO-FOSS Approach.
ISBN:
9780429014406
Title:
Client-Centered Software Development : The CO-FOSS Approach.
Author:
Tucker, Allen B.
Personal Author:
Physical Description:
1 online resource (369 pages)
Contents:
Cover -- Half Title -- Title Page -- Copyright Page -- Dedication -- Contents -- List of Figures -- List of Tables -- Foreword -- Preface -- Acknowledgments -- About the Author -- Chapter 1: The Journey -- 1.1 SOFTWARE -- 1.2 SOFTWARE DEVELOPMENT MODELS -- 1.2.1 Serial Development -- 1.2.2 Agile Development -- 1.2.3 CO-FOSS Development -- 1.2.4 Software Customization: A Continuum -- Custom Software -- Off-the-Shelf Software -- Custom Software with Off-the-Shelf Components -- 1.3 SOFTWARE LICENSING -- 1.3.1 Proprietary Licensing -- 1.3.2 Open Source Licensing -- 1.3.3 FOSS Origins and Impact -- FOSS Worldwide -- Terminology: OSS, FOSS, FLOSS, H/FOSS, and CO-FOSS -- 1.4 SOFTWARE ARCHITECTURES -- 1.4.1 Software Frameworks -- 1.4.2 Web Servers and Bundles -- 1.5 NEW VS MATURE OPEN SOURCE PROJECTS -- 1.5.1 Maturity Assessment -- 1.5.2 Incubation -- Community -- Bug Tracking -- 1.6 INTO THE WEEDS -- 1.6.1 To the Instructor -- 1.6.2 To the Student -- 1.6.3 To the Client -- 1.6.4 To the Developer -- 1.7 SUMMARY -- 1.8 MILESTONE 1 -- Section I: Organization Stage -- Chapter 2: Finding a Client and a Project -- 2.1 CLIENT ACTIVITIES AND SOFTWARE NEEDS -- 2.1.1 The Current Process and Existing Software -- 2.1.2 New Software to Fit a New Need -- 2.2 DOMAIN ANALYSIS -- 2.2.1 Requirements Gathering -- 2.2.2 User Stories -- 2.2.3 Use Cases -- Unified Modeling Language -- Writing an Effective Use Case -- 2.3 SOFTWARE DESIGN -- 2.3.1 System and Performance Requirements -- 2.3.2 Software Architecture -- Layering, Cohesion, and Coupling -- Domain Class Layer -- Database Layer -- User Interface Layer -- 2.3.3 Software Security -- 2.3.4 Encouraging Code Reuse -- 2.4 THE DESIGN DOCUMENT -- 2.4.1 Overall Structure -- 2.4.2 Variations -- 2.5 THE SANDBOX -- 2.6 SUMMARY -- 2.7 MILESTONE 2 -- Chapter 3: Defining the Course -- 3.1 SOFTWARE PROJECT ELEMENTS.

3.1.1 Collaboration Tools -- 3.1.2 Development Platform -- 3.1.3 Project Hosting -- 3.1.4 The Version Control System -- 3.1.5 Sandbox and Live Versions -- 3.1.6 Reading, Writing, and Documenting Code -- 3.1.7 Unit Testing -- Unit Testing Tools -- 3.1.8 User Help -- 3.2 THE COURSE -- 3.2.1 The Classroom -- 3.2.2 Team Formation and Dynamics -- 3.2.3 Scheduling and Milestones -- 3.2.4 Ensuring Progress -- 3.2.5 The Syllabus -- 3.2.6 Assignments and Grading -- 3.2.7 Alternatives: The Two-Semester Software Projects Course -- 3.3 SUMMARY -- 3.4 MILESTONE 3 -- Section II: Development Stage -- Chapter 4: Project Launch -- 4.1 THE TEAM -- 4.1.1 Team Dynamics -- 4.1.2 Asynchronous Communication -- Aside: Mature FOSS Projects -- 4.1.3 Synchronous Communication -- 4.1.4 Shared Documents -- 4.2 THE DEVELOPMENT TOOLS -- 4.2.1 Programming Languages -- JavaScript -- Python -- Java -- Ruby -- PHP -- HTML and CSS -- Other Languages -- 4.2.2 Software Platforms -- The Apache/MySQL/PHP Server -- Server-Side Java -- Python -- Ruby -- 4.2.3 IDEs for Development -- Eclipse IDE -- Python IDEs -- Ruby IDEs -- Java IDEs -- Choosing and Installing an IDE -- 4.2.4 Working with the VCS -- 4.3 THE PRODUCT -- 4.3.1 Reading the Design Document -- Identify Classes and Modules -- Identify Instance Variables -- Identify Methods and Functions -- 4.3.2 Reading the Code -- Start from the Top -- Look for Classes with Unique Keys -- Avoid the Temptation to Edit the Code -- 4.3.3 Reading and Writing Code -- 4.3.4 Code Reuse -- 4.3.5 Licensing -- 4.4 SUMMARY -- 4.5 MILESTONE 4 -- Chapter 5: Domain Class Development -- 5.1 CODING THE DOMAIN CLASSES -- 5.1.1 Reusing External Legacy Code -- 5.1.2 Reusing Internal Legacy Code -- 5.1.3 Coding a Domain Class from Scratch -- 5.1.4 Adding Functionality: Constructor and Getters -- 5.2 SOFTWARE TESTING -- 5.2.1 Test Case Design.

5.2.2 Unit Testing Frameworks -- 5.2.3 Unit Testing the -- 5.2.4 Unit Testing the -- 5.2.5 Code Synchronization and Integration Testing -- 5.3 DEBUGGING AND REFACTORING -- 5.3.1 Debugging -- 5.3.2 Identifying Bad Smells -- Aside: Using Software Metrics -- 5.3.3 Refactoring -- 5.4 CLIENT REVIEW AND ISSUE TRACKING -- 5.4.1 Client Review -- 5.4.2 Issue Tracking -- 5.5 SUMMARY -- 5.6 MILESTONE 5 -- Chapter 6: Database Development -- 6.1 DATABASE PRINCIPLES -- 6.1.1 Relations and Tables -- Table Naming Conventions -- 6.1.2 Queries -- 6.1.3 Normalization -- 6.1.4 Keys -- 6.1.5 Concurrency Control -- 6.2 DATABASE ACCESS -- 6.2.1 Connecting the Program to the Database -- 6.2.2 Table Creation and Dropping -- 6.2.3 CRUD Functions -- Create: Inserting Rows into a Table -- Retrieving Rows from a Table -- Update: Altering Rows in a Table -- Delete: Removing Rows from a Table -- 6.2.4 Database Security -- 6.2.5 Database Integrity -- 6.2.6 Adding a Database Abstraction Layer -- 6.3 DATABASE TESTING -- 6.3.1 Testing the dbShifts.php Module -- 6.3.2 Testing the dbPersons.php Module -- 6.3.3 Testing the dbBookings.php Module -- 6.3.4 Testing the dbRooms.php Module -- 6.3.5 Integration Testing: Persons, Bookings, and Rooms -- 6.4 CLIENT REVIEW AND ISSUE TRACKING -- 6.4.1 Client Review -- 6.4.2 Issue Tracking -- 6.5 SUMMARY -- 6.6 MILESTONE 6 -- Chapter 7: User Interface Development -- 7.1 PRINCIPLES -- 7.1.1 Model-View-Controller Pattern -- MVC Example 1: Editing a Shift in Homebase -- MVC Example 2: Editing a Person in Homeroom -- MVC Example 3: Editing a Stop in Homeplate -- 7.1.2 Linkages among MVC triples -- 7.1.3 User-Level Security -- User Login and Password Encryption -- User Access Levels -- Enforcement of Access Levels -- 7.1.4 Protection against Outside Attacks -- Avoiding SQL Injection Attacks -- Avoiding Cross-Site Scripting Attacks -- 7.2 PRACTICE.

7.2.1 Sessions, Query Strings, and Global Variables -- 7.2.2 Working with Scripts and HTML -- Scripting Example 1: Editing a Shift -- Scripting Example 2: Managing a Sub Call List -- 7.2.3 Reading Deeply -- 7.2.4 Using JavaScript and jQuery UI to Improve the User Interface -- 7.2.5 Responsive User Interfaces -- Responsive user interface design -- 7.3 TESTING, DEBUGGING, AND REFACTORING -- 7.3.1 Testing a User Interface -- Organizing the Testing Process -- 7.3.2 Refactoring: Removing a Layering Violation -- 7.4 ADDING A NEW FEATURE: ALL LAYERS IMPACTED -- Changing the Edit Person MVC Triple -- Changing the Search for Persons MVC Triple -- Changing the Schedule Person MVC Triple -- Changing the Edit Shift MVC Triple -- Changing the Sub Call List MVC Triple -- 7.5 CLIENT REVIEW AND ISSUE TRACKING -- 7.5.1 A User Interface Bug -- 7.5.2 A Multi-Layer Bug -- 7.6 SUMMARY -- 7.7 MILESTONE 7 -- Chapter 8: Preparing to Deploy -- 8.1 TECHNICAL WRITING -- 8.1.1 Writing for an Audience -- 8.1.2 Standards for Writing Quality -- 8.2 USER DOCUMENTATION -- 8.2.1 User Manuals, FAQs, and Demo Versions -- Example: Firefox User Manual -- Example: OpenMRS FAQ and Demo -- Example: Homebase Demo -- 8.2.2 On-Line Help -- 8.2.3 Example: Homebase On-Line Help -- Context-Sensitive Help -- Help Table of Contents and Navigation -- Help System Architecture -- 8.3 OTHER USER SUPPORT -- 8.3.1 User Training -- 8.3.2 Feedback Surveys -- 8.3.3 Final Presentations -- 8.4 CLOSURE FOR STUDENTS -- 8.4.1 Self-Assessment -- 8.4.2 Leveraging the CO-FOSS Experience -- 8.5 SUMMARY -- 8.6 MILESTONE 8 -- Section III: Development Stage -- Chapter 9: Continuing the Journey -- 9.1 TRANSITIONING TO PROFESSIONAL SUPPORT -- 9.1.1 The Hand-Off -- 9.1.2 Case Studies -- Homebase Hand-Off and Support -- RMHP-Homebase Hand-Off and Support -- Homeroom Hand-Off and Support -- Homeplate Hand-Off and Support.

BMAC-Warehouse Hand-Off and Support -- 9.2 PROJECT EVALUATION AND CODE RELEASE -- 9.2.1 Potential New Clients -- Volunteer and Resource Scheduling -- Food Rescue and Redistribution -- Agricultural Operations -- 9.2.2 Licensing Choices -- 9.2.3 Project Hosting Alternatives -- GitHub -- GitLab -- Bitbucket -- SourceForge -- 9.2.4 Maturity Assessment -- 9.3 SOFTWARE MAINTENANCE AS A COMMUNITY ACTIVITY -- 9.3.1 Fixing Bugs: A Case Study -- User-Developer Discussion -- Debugging Activities -- Developer-Developer Discussion -- Closure -- 9.3.2 Software Maintenance: A Multi-Year Developer Perspective -- Homebase Maintenance: 2010-2018 -- Homeplate Maintenance: 2012-2018 -- Homeroom Maintenance: 2013-2018 -- BMAC-Warehouse Maintenance: 2015-2018 -- RMHP-Homebase Maintenance: 2015-2018 -- 9.4 CREATING A FORUM -- 9.4.1 Example: Wordpress Support Forums -- 9.4.2 Example: Firefox Forums -- 9.4.3 An Example Forum Exchange -- 9.5 EVOLVING INTO A DEMOCRATIC MERITOCRACY -- 9.5.1 Incubation -- 9.5.2 Organization -- 9.5.3 Task-Specific Roles -- 9.5.4 Oversight -- 9.5.5 Decision Making and Conflict Resolution -- 9.5.6 Domain Constraints -- 9.5.7 FOSS Project Foundations -- 9.6 SUMMARY -- 9.7 MILESTONE 9 -- 9.8 ENDING THE JOURNEY -- Bibliography -- Index.
Local Note:
Electronic reproduction. Ann Arbor, Michigan : ProQuest Ebook Central, 2019. Available via World Wide Web. Access may be limited to ProQuest Ebook Central affiliated libraries.
Format:
Electronic Resources
Electronic Access:
Click here to view book
Publication Date:
2019
Publication Information:
Milton :

CRC Press LLC,

2019.

©2019.