Development and Maintenance Support Tools

Conrad Huang

March 31, 2014

What Are We Doing?

  • Developing a web application as a team
    • Application
      • Web site providing access to the contents of a database
    • Target audience
      • Web visitors who may know nothing about our app
    • Team
      • Three members with different roles

What Do We Need?

  • Web and database server
    • Serve up production site for end users
    • Serve up test sites for developers
    • Already set up on plato server
  • Content
    • Static HTML pages
    • Dynamic HTML pages
      • "Dynamic" = changes in response to user actions
    • Programs generating web output
      • For display as static web page
      • For processing by dynamic web page
      • Typically created from database entries
    • You will write all this

How Do We Create the Content?

  • Write HTML for static text
  • Write JavaScript for dynamic content
  • Write server-side scripts to support dynamic content
  • Fix all issues encountered
    • Requirement changes
    • Bugs
    • Enhancement requests

Content Creation Components

  • Development
    • Determine requirements and specification
    • Design web application architecture and interface
    • Write documents and code
    • Revise
    • Test
    • Publish
    • Repeat
  • Communications (with developers and users)
    • Write requirements and specifications
    • Write and review design documents (e.g., database schema)
    • Propose changes
    • Report and track problems
    • Announce releases for users
    • Get feedback from users

Development

  • Production web site
    • A stable site for end users
    • Created from tested source
  • Test sites
    • Separate from production site
    • Multiple test sites
      • Per new feature
      • Per developer
  • Source code version control
    • History for all source
      • Track when and why changes were made
      • Compare against previous (working) versions
      • Recover previous versions
    • Multiple branches
      • Production release
      • Candidate release
      • Development branches
    • Controlled update
      • Merge changes from multiple developers
      • Create production release from tested source

Tools Supporting Development

  • Tools for writing source code
    • Interactive development environment (IDE)
      • IDLE
      • Eclipse
      • CherryPy
    • Text editors, e.g., emacs and vi

Communications

  • Among developers
    • Design documents
    • Proposed changes
    • Problems and solutions
    • Bug reports
  • With end users
    • Announcements
    • Examples
    • Release notes
    • Feedback
      • Problem reports
      • Suggestions

Tools Supporting Communications

  • We use Trac for the latter two
    • Ease of creating and finding documents and reports
    • History of updates
    • Help answer questions
      • Why did we add this feature?
      • When was this bug report files?
      • When was it fixed and who did it?
    • Bonus: access source code repository

Development and Maintenance Tools