CPE18-Lecture-Notes-C1-2

Luzon State University

  • Location: Quezon Province

  • Year Established: 1964

  • Course Code: CPE18 - Software Design

  • Instructor: Engr. Dean Adrian L. Nombrefia

Chapter 1: Introduction to Software Development

1.1 Software Development Defined

  • Software development is the process of transforming user requirements (problem statements) into a viable software solution.

  • It encompasses:

    • Analyzing user requirements

    • Designing a solution

    • Implementing that solution on a computer

  • Programming is seen as the primary implementation component, focusing on coding but also sometimes including design.

1.1 Software Development Defined (Continued)

  • Software engineering includes the broader processes of software development and management aspects such as:

    • Project Management

    • Configuration Management

    • Scheduling and Estimation

    • Managing personnel and resources

  • Software development is a narrowed focus of software engineering aimed at the actual creation of software.

1.2 How to Develop Software?

  • Good Communication Among Team Members:

    • Continuous and effective communication among team members is vital for project success.

    • Co-located teams tend to communicate more efficiently than geographically dispersed teams.

  • Good Communication Between Team and Customer:

    • Constant interaction with the customer is crucial for effective requirement management.

    • Close proximity between the development team and the customer facilitates quicker feedback and involvement in testing.

    • Agile methodologies emphasize customer involvement within development teams.

  • A Process Everyone Buys Into:

    • All projects should follow a process framework agreed upon by all members.

    • Larger projects tend to be more plan-driven.

1.2 How to Develop Software? (Continued)

  • A Plan Everyone Buys Into:

    • Every software project requires a comprehensive plan covering all aspects, including risk, resource management, and scheduling.

  • Know Where You Are at All Times:

    • Regular status meetings help developers stay updated on project progress and issues.

  • Use of Correct Tools and Practices:

    • Each project has unique needs requiring careful selection of tools and methodologies to ensure successful execution.

Chapter 2: Software Process Model

2.1 The Four Variables

  • Every software program follows a life cycle:

    1. Conception

    2. Requirements Gathering/Exploration/Modeling

    3. Design

    4. Coding and Debugging

2.1 The Four Variables (Continued)

  • Variations may exist in how these steps are implemented, with two primary approaches:

    • Complete life cycle completion before revisions (traditional).

    • Partial cycles with iterative improvements (more contemporary).

2.1 The Four Variables (Continued)

  • The Four Variables of Software Development:

    • Cost: Limited control; influences team size and tool selection.

    • Time: Delivery schedule often dictated externally.

    • Quality: Refers to the number/severity of defects acceptable for release.

    • Features (Scope): Defines product functionalities.

2.2 Software Process Models

  • Code and Fix Model:

    • Minimal planning and documentation; reactive approach to coding problems.

  • Waterfall Model:

    • The first formal model comprising distinct life cycle phases, requiring documentation and management throughout.

    • Emphasizes a linear progression through project stages without backlog revisits.

2.2 Software Process Model (Continued)

  • Iterative Models:

    • Acknowledges that complete requirements knowledge and flawless designs are not typical; promotes gradual builds and revisions through repeated cycles.

  • Evolutionary Prototyping:

    • Develops software in stages, prioritizing functions and refining based on user feedback.

2.2 Software Process Model (Continued)

  • Agile Methodologies:

    • Focus solely on generating working code over extensive documentation.

    • Emphasizes well-defined collaboration in the software development process.

Agile Values and Principles

  • Key values from the Agile Manifesto include:

    • Individuals and interactions over processes and tools

    • Working software over comprehensive documentation

    • Customer collaboration over contract negotiation

    • Responding to change over following a plan

Agile Development Process

  • Principles guide Agile development, emphasizing customer satisfaction, adaptability to changes, frequent delivery of working software, and collaboration between business stakeholders and developers.

Assignment Topics

  1. Define and discuss Extreme Programming (XP):

    1. Four fundamental ideas of Extreme Programming

    2. Four basic activities of Extreme Programming

  2. Define and discuss Scrum Agile Methodology:

    1. Scrum roles

    2. Scrum artifacts

  • Note: Answers to be written on long bond paper.