This repository is a student learning portfolio for software engineering and system design fundamentals. It contains notes, templates, and case-study summaries that help me practise planning, documenting, testing, and explaining software systems.
I am building this as part of my GitHub student portfolio for bursaries, internships, graduate programmes, and future Honours opportunities.
Larger software projects need more than code. They need clear requirements, planning, diagrams, testing, teamwork, documentation, and version control. This repository helps me organise those skills in a practical student-level way.
This foundation repo includes:
- Software engineering notes
- Requirements engineering notes
- UML diagram notes
- Testing notes
- Project management notes
- Reusable documentation templates
- Case-study summaries from academic team project experience
Some case studies in this repository are based on academic team projects, including CineBook and Clinic Appointment System/CASS. They should be read as learning and documentation summaries from collaborative project experience, not as claims that I personally built every feature alone.
| Concept | What It Shows |
|---|---|
| Requirements engineering | Turning user needs into clear requirements |
| Functional requirements | What a system should do |
| Non-functional requirements | Quality expectations such as security, usability, and performance |
| UML thinking | Planning system behaviour and structure |
| Testing basics | Checking that software works as expected |
| Project management | Scope, milestones, risks, responsibilities, and communication |
| Documentation | Making a project easier to understand and maintain |
| Team collaboration | Working fairly in group project settings |
software-engineering-system-design/
|-- README.md
|-- case-studies/
| |-- README.md
| |-- cinebook-case-study.md
| `-- clinic-appointment-system-case-study.md
|-- notes/
| |-- project-management-basics.md
| |-- requirements-engineering.md
| |-- software-engineering-basics.md
| |-- testing-basics.md
| `-- uml-diagrams.md
`-- templates/
|-- functional-requirements-template.md
|-- non-functional-requirements-template.md
|-- risk-register-template.md
|-- test-case-template.md
`-- use-case-template.md
- Software engineering is about planning and communication as much as programming.
- Requirements help a team understand what the system should achieve.
- Diagrams can make systems easier to discuss before implementation.
- Testing helps find problems before users are affected.
- Project planning helps teams manage scope, time, risks, and responsibilities.
- Academic team projects should be documented honestly and fairly.
This repository currently focuses on software engineering foundations. Future improvements may include:
- UML diagram images
- ERD examples
- Sequence diagrams
- System architecture diagrams
- Test plans
- Project schedules
- Agile/Scrum examples
- Improved case studies from real projects