Course Layout
- Continuing System Design
- System Design (A not that brief recap)
- Addressing design goals
- Software Architectures
- Patterns and Anti-Patterns
- A detailed review of design patterns
- Structural
- Behavioral
- Creational
- Anti Patterns
- Development Anti patterns
- Architectural Anti patterns
- Management Anti patterns
- Testing Anti patterns
- Aspect Oriented Programming
- Why?
- When?
- Concepts
- Cross cutting
- Joint Points
- Advices
- Pointcuts
- Service Oriented Software Engineering
- Why?
- When?
- Concepts
- Service
- Abstractions
- Communications
- Design Principles
- Agile Methodologies(No need! We have covered this part!)
- Agile Manifesto
- Agile Framework
- Methodologies
- Agile Estimation
- Agile Management and Organization
- XP
- SCRUM
- Kanban
- Microservice Architecture(Exciting new stuffs instead!)
- things microservice
- Concepts
- Containarization
- Migration from Monolith to Microservices
- Challenges and Concerns
- Software Testing
- Software testing types
- Black Box
- Grey Box
- White Box
- Functional and Non-Functional
- How Google test software?
- Verification and Validation
- Reliability, Security and Real-time Software Engineering(If we had enough time!)
- Availability and reliability
- Reliability requirements
- Fault-tolerant architectures
- Programming for reliability
- Reliability measurement
- Security and dependability
- Security and organizations
- Security requirements
- Secure systems design
- Security testing and assurance
- Embedded system design
- Architectural patterns for real-time software
- Timing analysis
- Real-time operating systems
Things that are expected from you!
- Continuing your SE 1 Project
- Design
- Patterns
- Implementation ( every sprint a working feature!)
- Testing
- I am trying to hold a Demo day!
- Mandatory Group Presentation ( from the list of subjects I give you)
- Final Exam