🚧 Under construction — VoTechWorks is being built. A free tech program — complimentary, as our commitment to get America working.
voTechWorksGrade 13 · a vocational technology learning center, by urbanicity
newSchoolWorks.com › VoTechWorks › Technology & Design › Web & Software Development › Capstone Project: Full-Stack Web Application Build, Documentation, and Defense › Lesson 1
TEC-WEB46-08 · Lesson 1 · 40 clock hours · theory

Project Planning, Requirements, and Architecture Design

Objective. Given a project idea, the student will produce a complete software requirements specification (SRS), a system architecture diagram, an entity-relationship diagram, and a Git repository initialized with a branching strategy before any code is written.

⚠ Pending professional review

This lesson, its worked examples and its practice questions has not yet been verified by an industry-certified professional or by a certification or approval body. It is a study draft and may contain errors. Do not use it as instructions for work on a job site or on live equipment. Always follow your instructor, your supervising professional, and current official references and regulations.

VoTechWorks program approval and accreditation are still in progress. Credentials are issued only by the certifying bodies named in each program, after their own exams.

Why Planning Comes Before Code

Every professional software project begins with a planning phase. Writing code before you understand what the system must do, who will use it, and how the pieces connect is one of the most common causes of project failure. In this capstone lesson you will produce three foundational artifacts — a Software Requirements Specification (SRS), a system architecture diagram, and an entity-relationship (ER) diagram — and store them in a version-controlled repository before a single line of application code is written. Employers and clients expect this discipline, and the credentials you are working toward (CompTIA ITF+, CompTIA Linux+, and PCEP Python) all reflect an industry that values structured thinking as much as coding skill.

The Software Requirements Specification

An SRS is a formal document that records what a system must do (functional requirements) and the constraints under which it must operate (non-functional requirements). The widely used IEEE 830 standard provides a template that covers purpose, scope, definitions, overall description, specific requirements, and appendices. You do not need to memorize IEEE 830 section numbers, but you do need every major section present.

Functional requirements describe specific behaviors: "The system shall allow a registered user to reset their password via email link." Each requirement gets a unique identifier (e.g., FR-01) so it can be traced through design, testing, and maintenance.

Non-functional requirements cover performance, security, usability, and legal constraints. Security belongs here explicitly. Reference the OWASP Top Ten (owasp.org) when writing security requirements — this list is the industry-standard baseline for web application threats such as injection, broken authentication, and security misconfiguration. A requirement like "The application shall sanitize all user inputs to prevent SQL injection per OWASP A03" is concrete and testable.

Out-of-scope items are as important as in-scope ones. Documenting what the project will not do protects you from scope creep and helps reviewers give accurate sign-off.

The One-Page Project Proposal

Before writing a full SRS, produce a one-page proposal that captures:

This proposal goes through peer and instructor sign-off using a structured checklist. Getting approval at this stage is a professional gate — moving forward without it wastes effort on a direction that may need to change.

System Architecture Diagram

A system architecture diagram shows the major components of your application and how they communicate. For a full-stack web application, this typically includes a client layer (browser), a web/application server, a business logic layer, a database layer, and any external APIs or services. Arrows show the direction of data flow. Label each arrow with the protocol used (HTTP, HTTPS, WebSocket, etc.).

Security note: your diagram should indicate where HTTPS is enforced. Transmitting data over unencrypted HTTP in a production system is a recognized vulnerability. This maps directly to OWASP guidance on security misconfiguration.

The Entity-Relationship Diagram

An ER diagram models the data your application will store. Each entity becomes a database table. Each entity has attributes (columns), one of which is the primary key — a unique identifier for each row. When one table references another, a foreign key column holds the primary key value of the related row. This connection is called a relationship.

Relationships have cardinality: one-to-one, one-to-many, or many-to-many. A many-to-many relationship (for example, students enrolled in courses) requires a junction table with foreign keys pointing to both related tables.

Referential integrity means the database enforces that a foreign key value always matches an existing primary key. Designing for referential integrity at the diagram stage prevents data corruption later.

Use draw.io (free, browser-based) or Lucidchart (free tier) to build your ER diagram. Include table names, all columns, data types where possible, primary key indicators (PK), and foreign key indicators (FK). Walk a classmate through the diagram verbally — explaining your design out loud reveals gaps that silent review misses.

Version Control from Day One

Every artifact — the proposal, SRS, and ER diagram — belongs in version control immediately. Professional teams use Git because it tracks every change, who made it, and why.

Repository setup steps:

1. Create a repository on GitHub or GitLab.

2. Create a `main` branch (production-ready code only) and a `develop` branch (integration branch for ongoing work).

3. Write a README following the Make a README guide (makeareadme.com): include project title, description, installation steps, usage, and license.

4. Commit the SRS and ER diagram as the project's first documented artifacts with a clear commit message such as `docs: add initial SRS and ER diagram`.

This branching strategy (main/develop) is a simplified version of Gitflow, a widely adopted workflow. Feature branches are created from `develop`, merged back after review, and only stable code is merged to `main`.

Safe Working Practices

Web development work is primarily knowledge work at a computer workstation. Ergonomic best practices apply: adjust chair height so your feet are flat on the floor, position the monitor at eye level, and take short breaks to prevent repetitive strain. When storing credentials and API keys during project setup, never commit secrets to a public repository — use environment variables or a `.env` file listed in `.gitignore`. Exposing credentials in version control is a security incident, not just a mistake.

Key terms9

Software Requirements Specification (SRS)A structured document that records all functional and non-functional requirements for a software system before development begins, providing a shared reference for developers, testers, and stakeholders.
Functional RequirementA statement describing a specific behavior or function the system must perform, written so it can be tested to confirm it is either met or not met.
Non-Functional RequirementA constraint on how the system performs its functions, covering areas such as security, performance, usability, and reliability rather than specific features.
Entity-Relationship (ER) DiagramA visual model of a database that shows entities (tables), their attributes (columns), primary keys, foreign keys, and the relationships and cardinality between entities.
Referential IntegrityA database property that guarantees every foreign key value in a table matches an existing primary key value in the referenced table, preventing orphaned or inconsistent records.
Branching StrategyA defined convention for how branches are created, named, and merged in a Git repository, helping teams isolate work in progress from stable code.
OWASP Top TenA regularly updated, consensus-based list published by the Open Worldwide Application Security Project identifying the ten most critical security risks to web applications, used as a baseline reference in security requirements.
Scope CreepThe gradual, uncontrolled expansion of a project's features or requirements beyond what was originally agreed upon, often caused by the absence of documented out-of-scope items.
Junction TableA database table used to resolve a many-to-many relationship by holding foreign keys that reference the primary keys of the two related tables.
In class: Draft a one-page project proposal including target users, core features, and out-of-scope items; receive peer and instructor sign-off using a structured checklist before advancing. · Build an entity-relationship diagram in draw.io (or equivalent) covering all planned database tables, primary/foreign keys, and relationships, then walk a classmate through it in a five-minute verbal review. · Initialize a GitHub (or GitLab) repository, create main and develop branches, write a README skeleton following the Make a README guide, and commit the SRS and ER diagram as the project's first documented artifacts.
Materials: Draw.io or Lucidchart (free tier), GitHub or GitLab account, IEEE 830 SRS template (adapted), OWASP Top Ten reference (owasp.org), instructor-provided project rubric, Google Docs or Markdown editor
Check: Instructor reviews SRS for completeness (all required sections present), ER diagram for referential integrity, and repository for correct branch structure and initial commit; all three items must be marked Satisfactory on the rubric to proceed — any Unsatisfactory item requires revision within two class days.

Practice check8

Answer each question, then check it. Nothing is recorded; this is your own practice.

CompTIA ITF+ — IT concepts and project planning
1. Which section of an SRS documents that a mobile app version will NOT be built in the current release?
CompTIA ITF+ — database concepts
2. A database table named 'orders' contains a column 'customer_id' that references the 'id' column of a 'customers' table. What is 'customer_id' called?
CompTIA ITF+ — database concepts
3. You are designing a schema where many students can enroll in many courses. Which structure is required to model this correctly?
CompTIA Linux+ — version control and development workflow
4. According to standard branching strategy (Gitflow style), which branch should contain only production-ready, tested code?
CompTIA ITF+ — security concepts
5. A security requirement states: 'The application shall sanitize all user inputs to prevent SQL injection.' Which OWASP Top Ten category does this requirement directly address?
CompTIA ITF+ — security concepts
6. A developer accidentally commits a database password directly into a public GitHub repository. What is the first corrective action?
CompTIA ITF+ — IT concepts and project planning
7. Which of the following best describes a non-functional requirement?
CompTIA Linux+ — version control and documentation
8. When initializing a new project repository, which file should be created first and describe the project title, purpose, and basic usage instructions?
Record this lesson on my transcript. Sign in with your key and enrollment email to record lessons (enroll free if you have no key). This page stays open to read and practise.