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:
Conception
Requirements Gathering/Exploration/Modeling
Design
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
Define and discuss Extreme Programming (XP):
Four fundamental ideas of Extreme Programming
Four basic activities of Extreme Programming
Define and discuss Scrum Agile Methodology:
Scrum roles
Scrum artifacts
Note: Answers to be written on long bond paper.