Sonoma State University
Department of Computer Science
CS-370: Software Design and Development

Course Description

Techniques of software design and development. Software lifecycle, requirements, formal specification, metrics, design, functional and structural testing, rapid prototyping, complexity, version control, and team management. Software metrics, tools for component-based software development. Team-based, agile, and scrum methodologies emphasized.

Prerequisites

Prerequisite: Grade of C- or better in CS 215 or consent of instructor.

Instructor

Robert Bruce

Learning Outcomes

Upon successful completion of this course, students will be able to:

  1. Design a scalable, relational database schema in MySQL in third normal form.
  2. Apply the MySQL database application programming interface in software applications.
  3. Create dynamically-driven, server-side web page content in HTML5 using the Apache web server and the Common Gateway Interface.
  4. Apply software engineering principles through the entire software development lifecycle from design, implementation, testing, release, and maintenance.
  5. Employ effective skills and techniques to make team-based project management productive within the realm of software development.

Required Texts/Readings

  • Beginning Software Engineering (Second Edition) by Rod Stephens

Course Requirements

Midterm Examination

The midterm exam will cover chapters 1 through 11 (inclusive) of Stephen's Beginning Software Engineering. The exam will be closed-book. You may use one A4 sheet of paper (8.5 inches width by 11 inches length) for notes during the midterm examination. You may write notes on both sides of the sheet of paper.

Final Examination

The final exam will cover chapters 12 through 21 (inclusive) of of Stephen's Beginning Software Engineering. The final exam will be comprised of open-ended questions. The exam will be closed-book. You may use one A4 sheet of paper (8.5 inches width by 11 inches length) for notes during the midterm examination. You may write notes on both sides of the sheet of paper.

Grading Information

Assignment Percentage of Grade
In-class exercises 15 %
Project Report 10 %
Project Presentation 10 %
Database Schema 5 %
Programming Assignment 1: Authenticate User 5 %
Programming Assignment 2: Display User Transactions 5 %
Programming Assignment 3: Bid or Sell 5 %
Programming Assignment 4: Display auctions 5 %
Midterm exam 20%
Final exam 20%
TOTAL 100%

† Graded as an individual
‡ Graded as a group (each member of the group gets the same grade)

Determination of Grades

Ultimately this course is graded A, B, C, D, or F. Percentage grades are rounded to the nearest whole number. For example, a grade of 92.4% will be rounded to 92% and result in a grade of "A minus". A grade of 92.5% will be rounded to 93% and result in a grade of "A".

Grading Scale

Percent range Grade
93% to 100% inclusive A
90% to 92% inclusive A-
87% to 89% inclusive B+
83% to 86% inclusive B
80% to 82% inclusive B-
77% to 79% inclusive C+
73% to 76% inclusive C
70% to 72% inclusive C-
67% to 69% inclusive D+
63% to 66% inclusive D
60% to 62% inclusive D-
Below 60% F

Grading Policies

Late assignments

Absent extenuating circumstances (illness, family emergency), late submissions will be accepted under the late policy until the advertised "Until" deadline on Canvas. The late policy is a 10% deduction per day late. No late assignments accepted after two days.

Late exams and quizzes
  • There are no make-up exams.
  • Official proof of emergency required for missing an exam, project, or project presentation.

Course Schedule

Week Topics and Assignments Readings and Deadlines
Week 1:
Wednesday, August 20, 2025
Introduction: course objectives and expectations
Description of exercises, assignments, exams, and final project.
Exercise 1: Introduction
Chapter 1: Software Engineering From 20,000 Feet (10 pages)
Chapter 2: Before The Beginning (12 pages)
Chapter 3: The Team (19 pages)
Week 2:
Monday, Aug 25, 2025
What makes a team effective?
Exercise 2: Why do software projects fail?
Chapter 4: Project Management (23 pages)
Chapter 5: Requirements Gathering (32 pages)
Week 2:
Wednesday, Aug 27, 2025
Lecture: The Minimum Viable Product
Exercise 3: The_Minimum_Viable_Product
 
Week 3:
Monday, Sep 1, 2025
HOLIDAY HOLIDAY
Week 3:
Wednesday, Sep 3, 2025
Exercise 4: Team formation Note: Last day to drop classes is September 2, 2025
Week 4:
Monday, Sep 8, 2025
Lecture: Project Management
Exercise 5: Creating a PERT chart
Chapter 6: High-Level Design (34 pages)
Chapter 7: Low-Level Design (25 pages)
Week 4:
Wednesday, Sep 10, 2025
Lecture: Requirements Gathering
Exercise 6: FURPS Requirements Gathering
 
Week 5:
Monday, Sep 15, 2025
Lecture: High Level design
Exercise 7: Architectures in high level design
Chapter 8: Security Design (22 pages)
Chapter 17: Predictive Models (17 pages)
Chapter 18: Iterative Models (16 pages)
Week 5:
Wednesday, Sep 17, 2025
What is low level design? (p. 155)
Designing database schemas
The importance of data normalization
Why use Postgres Relational Database Management System (RDBMS)
Why ACID compliance matters
Importance of database management system portability (migrating data)
Utilizing the Postgres Database Interface (DBI)

In-class exercise: Data normalization
Beginning Software Engineering (chapter 7), p. 181, exercise 7; p. 181, exercise 8; p. 181, exercise 9
 
Week 6:
Monday, Sep 22, 2025
Developing server-side web applications
  • Introduction to HTML
  • HTTP: The Stateless Protocol
  • Techniques for maintaining state in HTTP
  • How to maintain state without using HTTP cookies
  • CGI: The Common Gateway Interface
  • Processing form data using GET and POST
In-class exercise ???
Chapter 19: RAD (50 pages)
Week 6:
Wednesday, Sep 24, 2025
Software deployment: predictive model
  • What is a predictive model?
  • Predictive model advantages
  • Predictive model disadvantages
  • Indicators that a predictive model will succeed
  • Indicators that a predictive model will failure
Predictive model examples:
  • Waterfall
  • Watefall with feedback
  • Incremental waterfall
  • V-model
Software Development Life Cycle (SDLC)
  • SDLC step 1: Inition
  • SDLC step 2: Concept development
  • SDLC step 3: Preliminary planning
  • SDLC step 4: Requirements gathering
  • SDLC step 6: High-level design
  • SDLC step 7: Low-level design
  • SDLC step 8: Development
  • SDLC step 9: Acceptance testing
  • SDLC step 10: Deployment
  • SDLC step 11: Maintenance
In-class exercise: Limitations of Predictive models
Beginning Software Engineering (chapter 17), p. 443, exercise 2
 
Week 7:
Monday, Sep 29, 2025
Software deployment: iterative model
  • What is an iterative model?
  • Iterative versus predictive models.
  • Iterative versus incremental models.
Prototypes
  • Three type of prototypes: Throwaway prototypes; Evolutionary prototypes; and Incremental prototypes
  • Advantages of prototyping
  • Disadvantage of prototyping
Sprial model development cycle
  • Sprial model development cycle: six characteristics
  • Advantages of spiral model development cycle
  • Disadvantages of spiral model development cycle
Unified Process: An iterative and incremental development framework
  • Phase 1: Inception
  • Phase 2: Elaboration
  • Phase 3: Construction
  • Phase 4: Transition
Cleanroom model: defect prevention rather than defect removal
Cowboy coding: A carte blanche approach maximizing developer autonomy

Post the midterm exam review guide.

In-class exercise: Effectiveness of an Iterative, Incremental, or Agile approach
Beginning Software Engineering (chapter 18), p. 462, exercise 1
Chapter 13: Testing (30 pages)
Chapter 14: Deployment (9 pages)
Week 7:
Wednesday, Oct 1, 2025
Rapid Application Development (RAD)
  • What is Rapid Application Development?
  • RAD: advantages
  • RAD: disadvantages
RAD models
  • James Martin Rad Model
  • Feature-Driven Development (FDD)
RAD strategies
  • Agile
  • Extreme programming (XP)
  • Scrum
  • Kanban
In-class exercise: Rapid Application Development
Beginning Software Engineering (chapter 19), p. 516, exercise 1; p. 516, exercise 2; p. 516, exercise 3
 
Week 8:
Monday, Oct 6, 2025
MIDTERM EXAM
Note: the midterm exam covers ???????? (inclusive)
Chapter 15: Metrics (24 pages)
Chapter 16: Maintenance (19 pages)
DUE: Database Schema
Week 8:
Wednesday, Oct 8, 2025
In-class exercise: Database Schema Review
Each team pairs-up with another team to conduct a database schema review.
 
Week 9:
Monday, Oct 13, 2025
Issues in Computer Security
  • Tips for securing web servers and database management servers
  • Using GNU Crypt library
  • Encrypting GET and POST requests
  • Technique for timing out due to inactivity
  • Encrypting database tables
  • Defining and alleviating SQL injection attacks
In-class exercise: Phishing
Beginning Software Engineering (chapter 8), p. 205, exercise 5; p. 206, exercise 6
Chapter 9: User Experience Design (32 pages)
Week 9:
Wednesday, Oct 15, 2025
Software Testing
Major forms of software testing
  • Unit testing
  • Integration testing
  • Regression testing
  • Automated testing
  • Component interface testing
  • System testing
  • Acceptance testing
Other forms of software testing
  • Accessibility testing
  • Alpha test
  • Beta test
  • Compatibility test
  • Destructive test
  • Functional test
  • Installation test
  • Internationalization test
  • Nonfunctional test
  • Performance test
  • Security test
  • Usability test
Testing techniques
  • Black-box testing
  • White-box testing
  • Gray-box testing
The Lincoln Index
  • What is the Lincoln Index?
  • How is the Lincoln Index computed?
In-class exercise: Bug estimation with the Lincoln Index
Fuzzing tools (not mentioned in book): another technique for determining defects in software.

Beginning Software Engineering (chapter 13), p. 357, exercise 10; p. 357, exercise 11
DUE: Programming Assignment 1: Authenticate User
Week 10:
Monday, Oct 20, 2025
In-class exercise: Code Review 1
Each team pairs-up with another team to conduct code reviews.
Chapter 10: Programming (24 pages)
Week 10:
Wednesday, Oct 22, 2025
Software Deployment
Why devise a software deployment plan?
  • Anecdote about releasing my home-grown backup software at Industrial Light + Magic.
Software deployment strategies
  • Staged deployment
  • Gradual cutover
  • Incremental deployment
  • Parallel testing
The impact of software deployment: factors to consider to avoid catastrophe
  • Physical environment
  • Hardware
  • Documentation
  • Training
  • Database
  • Other people's software
  • Your software
Software deployment mistakes
  • Assume everything will work
  • Have no rollback plan
  • Allow insufficient time
  • Don't know when to surrender
  • Skip staging
  • Install lots of updates all at once
  • Use an unstable environment
  • Set an early point of no return

In-class exercise: Deployment strategies
Beginning Software Engineering (chapter 14), p. 368, exercise 2; p. 369, exercise 3; p. 369, exercise 4
 
Week 11:
Monday, Oct 27, 2025
Software metrics
  • Qualities of effective metrics: simple, measurable, relevant, objective, easily obtainable.
Types of project metrics (or product metrics)
  • Cost
  • Effort
  • Defect Rates
  • Lines of Code (LOC)
  • Pages of Documentation
  • Functionality
  • Quality
  • Complexity
  • Efficiency
  • Reliability
  • Maintainability
Function Point Normalization
Complexity Adjustment Values (CAV)
Ishikawa Diagrams

In-class exercise: Ishikawa diagrams
Beginning Software Engineering (chapter 15), p. 396, exercise 1
Chapter 11: Algorithms (30 pages)
Week 11:
Wednesday, Oct 29, 2025
Software maintenance
Generally, software maintenance is divided into four tasks
  • Perfective tasks
  • Adaptive tasks
  • Corrective tasks
  • Preventative tasks
In-class exercise: Software maintenance
Beginning Software Engineering (chapter 16), p. 420, exercise 1; p. 420, exercise 2
DUE: Programming Assignment 2: Display User Transactions
Week 12:
Monday, Nov 3, 2025
In-class exercise: Code Review 2
Each team pairs-up with another team to conduct code reviews.
Chapter 12: Programming Languages (16 pages)
Week 12:
Wednesday, Nov 5, 2025
User experience design
User Interface (UI) versus User Experience (UX)
Design Guidelines
  • Allow exploration
  • Make the interface immutable
  • Support commensurate difficulty
  • Avoid state
  • Make similar things similar
  • Provide redundant commands
  • Do the right thing
  • Show qualitative data, explain quantitative data
  • Give forms purpose
  • Gather all information at once
  • Provide reasonable performance
  • Only allow what's right
  • Flag mistakes
Application responsiveness and the five second rule.
The "Display five things" rule
Mention the book, Don't Make Me Think by Steve Krug

In-class exercise: User experience design
Beginning Software Engineering (chapter 9), p. 242, exercise 7; p. 242, exercise 9
 
Week 13:
Monday, Nov 10, 2025
Productive programming
Top-down programming design
Programming tips:
  • Be alert
  • Write for people, not the computer
  • Comment first
  • Write self-documenting code
  • Keep it small
  • Stay focused
  • Avoid side effects
  • Validate results
  • Practice offensive programming
  • Use exceptions
  • Write exception handlers first
  • Don't repeat code
  • Defer optimization
In-class exercise: Improving code readability
Beginning Software Engineering (chapter 10), p. 270, exercise 6; p. 270, exercise 7
Chapter 20: Software Ethics (21 pages)
Week 13:
Wednesday, Nov 12, 2025
Design Patterns
Creational patterns (ways to create objects):
  • Factory method
  • Lazy initialization
  • OBject pool
  • Prototype
  • Singleton
Structural patterns (simplify the relationships between objects):
  • Adapter, Wrapper, or Translator
  • Composite
  • Decorator
  • Facade
  • Flyweight
  • Module
  • Proxy
  • Twin
Behavioral patterns (communication between objects):
  • Blackboard
  • Chair of responsibility
  • Command
  • Iterator
  • Mediator
  • Memento
  • Model-view-controller (MVC)
  • Model-view-presenter (MVP)
  • Model-view-view-model (MVVM)
  • Null object
  • Observer or publish/subscribe
  • Helper or servant
  • State
  • Strategy
  • Template
  • Visitor
In-class exercise: Offensive and Defensive programming
Beginning Software Engineering (chapter 11), p. 303, exercise 1; p. 303, exercise 2; p. 303, exercise 3
DUE: Programming Assignment 3: Bid or Sell
Week 14:
Monday, Nov 17, 2025
In-class exercise: Code Review 3
Each team pairs-up with another team to conduct code reviews.
Chapter 21: Future Trends (8 pages)
Week 14:
Wednesday, Nov 19, 2025
Software Ethics (part 1)
Real-world examples of software ethics gone awry.
  • The Volkswagen emissions scandal (aka "DieselGate")
  • The Boeing 737 jet plane.
  • Crowdstrike
In-class exercise: Software Ethics
Use a scenario from CMPE-294 and have students determine the code violations using the ACM Code of Ethics and Professional Conduct
 
Week 15:
Monday, Nov 24, 2025
Software Ethics (part 2)
In-class exercise: Ethics in software deployment and maintenance
  • Read the following article titled, ""Their Bionic Eyes Are Now Obsolete and Unsupported" posted at https://spectrum.ieee.org/bionic-eye-obsolete
  • Should medical devices manufactures be allowed to declare embedded software obsolete and unsupportable? Why or why not?
  • Should software include a "Best by" date as a form of built-in obsolence? How does this impact the Software Development Life Cycle and software profession?
 
Week 15:
Wednesday, Nov 26, 2025
Future Trends in Software Deployment:
  • Continuous Integration and Continuous Deployment (CI/CD)
  • Low Code/No Code (LCNC)
In-class exercise: Generative AI (artificial intelligence) for software development
  • How will generative AI impact current and future software developers?
  • How will generative AI impact your career as a future graduate?
  • How will you stay relevant and competitive (skills-wise) with the rise of generative AI?
 
Week 16:
Monday, Dec 1, 2025
AI-driven software development

Post the final exam study guide

In-class exercise: "Vibe coding" with ChatGPT
  • Prompt ChatGPT to generate the source code for web-based online auction website like Ebay.
  • Evaluate the output source code generated by ChatGPT.
  • What programming language(s) did ChatGPT use?
  • Is the source code easy to read and understand?
  • Does the source code appear complete and fully-functional?
  • Are there any security vulnerabilities in the source code?
  • Does the source code require any external dependent libraries?
  • What is your overall assessment? Is AI-driven software development the future of software development?
 
Week 16:
Wednesday, Dec 3, 2025
Final Project Presentation DUE: Project Report
DUE: Programming Assignment 4: Display auctions
December 8, 2025 FINAL EXAM from 3:30 PM to 5:30 PM
Note: The final exam covers chapters ????? inclusive