10 (12?) Rules for Writing and Delivering Quality Software
Book Proposal
Outline
Chatper 1 - Requirements are Requirements
Why requirements are important
Aligns customer, budget and builders
Drives the technical design and architecture
Drives the look and feel
The golden triangle
Capturing requirements
Listing Objectives
Prioritizing Objectives
Process Flow Diagrams
Mock-ups
Business Requirements Docs
The Collaborative Process
Customers
Web Designers
Architects
Engineers
Using requirements
The importance of keeping in sync, keeping in front of the customer and getting unambiguous sign-off
Mapping BRD to Functional Design Docs
Discipline around
Documentation
Scope Creep
Working with Stakeholders
Internal (Customers and other Groups)
External (Customers and Vendors)
Mgt
Using Integrated PM software
Chapter 2 - Would You Bet Your Paycheck on it? (Test, Test, Test)
The Scientific Method
Using Tools
Requirements are Requirements
Importance of Testing Environments and Realistic Test Data
Dev
QA
SIT
Prod
Building Test Cases
Iterative Functional Tests
Iterative Regression Tests
Iterative Test Automation
Iterative Load Testing
Ad Hoc Real World Testing
Customer Testing and User Acceptance
Defect Mgt
Breaking the Application
User Interfaces
Intuition and Common Sense
Building better idiots
Unexpected Events
Multiple Users
Multiple Locations
Value of Beta Launches
Chapter 3 - Speed Kills
Why is response time important?
What causes latency and how do I fix it
Database
Lack of Capacity
Hardware
Software
Version
Cluster
DB Design
Too little normalization
Too much normalization
Too many joins
Poor indexing
Poor use of DB capabilities like SPs, Views, Jobs, Triggers, etc.
SQL
Poorly constructed
Never tested and optimized
Network
Lack of Capacity
Bandwith
Network devices
Load Balancers
Too many hops
Webservices
SOA gone wild
Overly architected (solving future problems that don’t exist)
Delivering Static content from appserver layer
Too much Javascript (also an app issue)
Webserver
Hardware
Software
Version
Load Balancer Optimization
Distributing
Delivering Static content
Appserver
Hardware
Software and Versions
Distributing and Clustering
Performance Tuning
Application
Database Layer Design and Code
Connection Mgt
SQL
Caching
Using the DB: Stored Procs, Views, Triggers
Business Layer Design and Code
Memory Mgt
Calculations
Messaging
Caching
UI Layer Design and Code
Network impact of
HTML
Images
JS
Other static resources
Leveraging JS for business logic
Impact of AJAX
Chapter 4 - Its All Data
What is data?
Storing Data
Memory
Immediate
Intermediate (caching)
Disk
Database
Importance of the Database Design and Implementation
Normalization
Advantages
Traps
Benchmarking Queries
Using Database Components
Indexes
Stored Procedures
ETLs
Jobs
XML
Messaging
Network Impact
Numerous quick messages vs. one big one
Guaranteed Delivery
Using queues
Webservices
Chapter 6 - Design is Not Over Rated
Importance of the design phase
How requirements gathering and architectural design work together
Listing and rating objectives
Flexibility vs. Progress
Understanding the budget
Hardware constraints
Resource constraints
Using design tools
Using mock-ups and POCs
Documenting design
Chapter 7 - Five Average Programmers != One Great Programmer
The Gap
The significance of the gap between almost getting it, and getting it
Separating the great from the good and the good from the average
Finding Great Talent
Overcoming fear
Dealing with the objections that must be overcome when hiring talent
Managing Talent and Rookies
Meetings
Design Conflicts
Schedules
Documentation
Chapter 8 - Deja Vu All Over Again (Build re-usable components and re-use them)Value of reusable components
Buy vs. Build
Build vs. Get for Free
Service Oriented Architecture
Using XML
Messaging Strategies
Configurations in the DB
Utility Classes
Managing Libraries
Interfaces
Black box strategy
Publish libraries
Enforcing the use of libraries
Deploying libraries
C#
Java
JavaScript
Chapter 9 - Divide and Conquer (Divide up Roles, Responsibilities and Tasks for Faster, more Focused and Accountable Development)Project Roles and Responsibilities
DBA
Architect
Programming Lead
Programmer
Web Designer
Graphic Artist
Technical Writer
Business Analyst
Project Manager
Systems Engineer
Financial Analyst
Dividing up coding tasks around end-to-end functional specs
Dividing up coding tasks around layers (UI, Messaging, Business Logic, DAO, DB)
Template plan (Architect and senior engineer(s) develop a template for each solution end-to-end so other engineers can copy.
Divide around deployable components (.dlls, .wars, .ears)
Object Oriented Concepts
Solving hard tasks first
Code Re-use
Utility classes
Configurable
Configuration Management
Chapter 10 - Nothing is Finished Until its Documented
The Real Value of Documentation
Documentation as an Afterthought
Documentation as a Development Task
Utilizing Technical Writers and Copywriters
Documentation as a Project Deliverable
Iterative Documentation
Example
Chatper xxx. Manage the Details
Overview
Project Management
Organizing Roles
Organizing and Tracking Tasks
Using Tools
Source Control
Importance
Enforcement of Rules
Using Tools
Chapter xxxx. Understand the Web
Why the web?
Deploy one place, access everywhere
Deploy one place, update one place
Leverages current and future reusable components
Leverages access to external web services and resources
Understanding web apps
What is really happening?
Process flow, forms and data
JavaScript
DHTML
CSS
Java vs. .NET
Flash
No comments:
Post a Comment