Week 11 (06.12.-11.12.)
- Topic: Software Engineering
- Lessons: Software Engineering, Code Profiling, Automated Testing, Continuous Integration, Building Python Packages, Web Deployment
- Project: Add tests to our projects
- Dataset: MovieLens (10k)
- Code: GitHub
This was the last week of lectures and assigned projects, so we learned some general software engineering techniques and best practices for individual and team coding.
Software engineering metaphors
- Bazaar: independently written code for open-source software, to which multiple developers can contribute as they see fit.
- Cathedral: long complex code for a software built by a group of developers, based on a central plan and software infrastructure, meant to be deployed into a product.
- Garden: maintaining code, cleaning it up and refactoring, deleting irrelevant/old code and replacing with code that meets the current needs.
10 tips for software development
Here are 10 tips for efficient software development and clean code that we got from our teacher:
- Know your league (Bazaar vs Cathedral)
- Structure your code
- Use git
- Master debugging
- Add essential files (
- Clean code
- Add tests
- Continuous integration
- Verification and validation
- Write good documentation
Testing code is a really important part of software development, or any quite complex project, to ensure that everything runs well and doesn’t break as you make changes to the code. There are four main types of software tests:
- Unit Test: for a single function/class/module.
- Integration Test: for multiple components together.
- Regression Test: re-run tests after changes to code.
- Acceptance Test: user-level, A/B-testing, focus groups.
I started applying these tips right away on the project that I’m currently working on, and also started cleaning up a bit the code of my past projects. Next week I’ll be working only on my final project and preparing the presentation for the graduation on Friday!