Fundamentals of Project Planning

Oct 6, 2024

Lecture Notes on Project Planning Principles and Software Engineering

Key Planning Principles

Principle 1: Understand the Scope of the Project

  • Importance of knowing the project's scope.
  • Involve the customer in planning activities.

Principle 2: Involve the Customer

  • Engage the customer for feedback, especially during prototyping.

Principle 3: Recognize that Planning is Iterative

  • Planning should be revisited and revised as needed.

Principle 4: Estimate Based on What You Know

  • Make realistic estimations to avoid missing deadlines due to unforeseen circumstances.

Principle 5: Consider Risk in Planning

  • Create a risk management plan.
  • List potential risks and solutions.

Principle 6: Be Realistic

  • Acknowledge that people cannot work 100% efficiency every day.
  • Consider team members' physical and emotional conditions.

Principle 7: Adjust Granularity in Planning

  • Modify the level of detail in planning based on team dynamics.

Principle 8: Define How to Ensure Quality

  • Establish quality assurance processes.

Principle 9: Describe How to Accommodate Change

  • Develop a strategy for managing changes in project scope or requirements.

Principle 10: Track the Plan Frequently

  • Monitor project progress and adjust plans as necessary to stay on track.

Modeling Principles

Requirements Model

  • Represents customer requirements in three domains:
    • Information Domain
    • Functional Domain
    • Behavioral Domain

Design Models

  • Present software characteristics that assist in construction, including:
    • Architecture
    • User interface
    • Component-level details

Modeling Principles

  1. Information domain must be presented and understood clearly.
  2. Define the functions of software clearly.
  3. The behavior of software must be represented based on external events.
  4. Models must uncover details in a layered fashion.
  5. Move from essential information towards implementation details.

Design Modeling Principles

  1. Design must be traceable to requirement models.
  2. Consider system architecture in designs.
  3. Data design is as crucial as processing functions.
  4. User interface design should focus on ease of use.
  5. Component-level design should be independent and loosely coupled.
  6. Design representations should be easily understandable.
  7. Develop designs iteratively, striving for simplicity.

Construction Principles

  • Construction involves coding and testing tasks for operational software delivery.
  • Testing principles help systematically uncover errors efficiently.

Preparation Principles

  1. Understand the problem before coding.
  2. Choose appropriate programming languages and environments.
  3. Create unit tests to apply post-component completion.

Coding Principles

  • Constrain algorithms, utilize pair programming, and ensure meaningful variable names.
  • Code should be self-documenting and logically structured.

Validation Principles

  • Conduct code walkthroughs and unit tests to identify and correct errors.

Testing Principles

  1. Tests must trace back to customer requirements.
  2. Plan testing early and start from small to large.
  3. Exhaustive testing may not be practical.

Deployment Principles

  1. Manage customer expectations regarding software capabilities.
  2. Assemble and test a complete delivery package.
  3. Establish a support regime before delivery.
  4. Provide appropriate instructional materials for end users.
  5. Address critical software bugs before deployment.

Conclusion

  • The importance of feedback and adaptability in software engineering was emphasized.
  • Best of luck with upcoming exams!