Thursday, January 19, 2012

Comparison between SWEBOK and Textbook

One of our textbooks this semester is Systems Analysis and Design in a changing world by Satzinger, Jackson and Burd, it outlines 6 core processes of systems development.  SWEBOK (Software Engineering Body of Knowledge) provides 10 knowledge areas to describe systems development.

The six core processes are:


  1. Identify the problem and obtain project approval
  2. Planning and monitoring
  3. Discovering and understanding details
  4. Design system components
  5. Building, testing, and integrating system components
  6. Complete systems testing and deploying the solution
The core processes cover all phases of the project and include everyone involved in the project including the end users.

The ten SWEBOK knowledge areas are:

  1. Software Requirements
  2. Software Design
  3. Software Construction
  4. Software Testing
  5. Software Maintenance
  6. Software Configuration Management
  7. Software Engineering Management
  8. Software Engineering Process
  9. Software Engineering Tools and Methods
  10. Software Quality

SWEBOK provides a more detailed approach to systems development when compared to the Systems Analysis and Design Textbook.  The textbook focuses more on the initial design and planning stages while SWEBOK puts more focus on maintenance, engineering, and improvements after a project has been deployed.

Wednesday, January 18, 2012

The Software Development Silver Bullet

The title of this post is a bit of a misnomer because there really is no Silver Bullet when it comes to programming. While reading the1986 essay "No Silver Bullet" by Frederick Brooks I began to think about things that may be close to a silver bullet as far as software development goes.

SaaS and SOA are two major advancements that I think come close to being the magical silver bullet.  A common problem with software development is releasing updates, maintaining multiple versions of programs and customer support.  As browsers become more powerful and broadband more abundant programs may begin to exist on the cloud entirely eliminating the need for a program to exist on a physical computer.  A central program could exist that would always be up to date and could easily be modularized to create custom variations of the software.