Roadmap of Software Engineering

Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

RoadMap of Software Engineering

Lesson Plan

Author: Hayder Zaeem


Date: 2020

GitHub: hayderzaeim

Twitter: hayderzaeem

Instagram: hayder_zaeem

LinkedIn: Hayder Zaeem


© 2020 Hayder Zaeem. All rights reserved. 1

Foundations
● Computer Science Fundamentals
○ Data Structures
○ Algorithms
○ Theory of Computation
○ Discrete Mathematics
○ Computer Architecture
● Programming Languages
○ Syntax and Semantics
○ Compilers and Interpreters
○ Language Paradigms (Procedural, Object-Oriented, Functional,
etc.)

2. Software Development Process


● Software Development Life Cycle (SDLC)
○ Requirements Analysis
○ System Design
○ Implementation
○ Testing
○ Deployment
○ Maintenance
● Development Methodologies
○ Waterfall
○ Agile (Scrum, Kanban, etc.)
○ DevOps

3. Software Design
● Design Principles
○ SOLID Principles
○ Design Patterns (Creational, Structural, Behavioral)
● Architectural Styles
○ Monolithic
○ Microservices
○ Service-Oriented Architecture (SOA)
○ Event-Driven Architecture
© 2020 Hayder Zaeem. All rights reserved. 2

4. Software Testing
● Types of Testing
○ Unit Testing
○ Integration Testing
○ System Testing
○ Acceptance Testing
○ Regression Testing
○ Performance Testing
● Testing Frameworks and Tools
○ JUnit, NUnit
○ Selenium, Appium
○ LoadRunner, JMeter

5. Software Maintenance
● Types of Maintenance
○ Corrective
○ Adaptive
○ Perfective
○ Preventive
● Maintenance Process
○ Issue Tracking
○ Version Control
○ Continuous Integration/Continuous Deployment (CI/CD)

6. Software Quality
● Quality Attributes
○ Reliability
○ Usability
○ Efficiency
○ Maintainability
○ Portability
● Quality Assurance Practices
○ Code Reviews
○ Static Analysis
○ Dynamic Analysis
© 2020 Hayder Zaeem. All rights reserved. 3

○ Formal Methods

7. Software Project Management


● Project Planning
○ Scope Definition
○ Time Management
○ Cost Management
● Risk Management
○ Risk Identification
○ Risk Analysis
○ Risk Mitigation
● Resource Management
○ Team Management
○ Stakeholder Management

8. Advanced Topics
● Formal Methods
○ Model Checking
○ Theorem Proving
● Software Metrics
○ Code Complexity
○ Defect Density
● Software Reliability Engineering
○ Reliability Models
○ Fault Tolerance

9. Specialized Areas
● Real-Time Systems
○ Real-Time Scheduling
○ Embedded Software
● Distributed Systems
○ Distributed Algorithms
○ Consensus Protocols
● Parallel Computing
○ Multithreading
○ Parallel Algorithms
© 2020 Hayder Zaeem. All rights reserved. 4

● Security Engineering
○ Secure Coding Practices
○ Threat Modeling

10. Research and Academia


● Research Areas
○ Software Engineering Methodologies
○ Software Evolution
○ Empirical Software Engineering
● Academic Pathways
○ Bachelor's Degree
○ Master's Degree
○ Ph.D. in Software Engineering
● Academic Publications
○ Journals
○ Conferences
○ Workshops

here is a detailed list of tools commonly used in each section of Software


Engineering:

1. Foundations
● Computer Science Fundamentals
○ Data Structures and Algorithms
■ CLRS (Introduction to Algorithms)
■ GeeksforGeeks
■ LeetCode, HackerRank
○ Theory of Computation
■ Automata Theory Tools
■ JFLAP (Java Formal Languages and Automata Package)
○ Discrete Mathematics
■ WolframAlpha
■ MATLAB
○ Computer Architecture
■ Logisim
■ Simulink
© 2020 Hayder Zaeem. All rights reserved. 5

2. Software Development Process


● Software Development Life Cycle (SDLC)
○ Requirements Analysis
■ IBM Rational DOORS
■ Jira
○ System Design
■ Lucidchart
■ Microsoft Visio
○ Implementation
■ IDEs (IntelliJ IDEA, Eclipse, Visual Studio)
■ Text Editors (VSCode, Sublime Text)
○ Testing
■ Selenium
■ JUnit, TestNG
○ Deployment
■ Docker
■ Kubernetes
○ Maintenance
■ JIRA
■ Redmine
● Development Methodologies
○ Waterfall
■ Microsoft Project
○ Agile (Scrum, Kanban, etc.)
■ Trello
■ Atlassian JIRA
○ DevOps
■ Jenkins
■ GitLab CI/CD

3. Software Design
● Design Principles
○ UML Tools (StarUML, Lucidchart)
○ Enterprise Architect
● Architectural Styles
○ Monolithic
■ Spring Framework
© 2020 Hayder Zaeem. All rights reserved. 6

■ Django
○ Microservices
■ Docker
■ Kubernetes
○ Service-Oriented Architecture (SOA)
■ Apache Camel
■ MuleSoft
○ Event-Driven Architecture
■ Apache Kafka
■ RabbitMQ

4. Software Testing
● Types of Testing
○ Unit Testing
■ JUnit, NUnit
■ Mocha, Jasmine
○ Integration Testing
■ Postman
■ SOAP UI
○ System Testing
■ Selenium
■ Appium
○ Acceptance Testing
■ Cucumber
■ FitNesse
○ Regression Testing
■ Selenium
■ QTP/UFT
○ Performance Testing
■ JMeter
■ LoadRunner
● Testing Frameworks and Tools
○ Selenium
○ JUnit, TestNG
○ LoadRunner, JMeter

5. Software Maintenance
© 2020 Hayder Zaeem. All rights reserved. 7

● Types of Maintenance
○ Corrective
○ Adaptive
○ Perfective
○ Preventive
● Maintenance Process
○ Issue Tracking
■ JIRA
■ Bugzilla
○ Version Control
■ Git (GitHub, GitLab, Bitbucket)
■ SVN
○ Continuous Integration/Continuous Deployment (CI/CD)
■ Jenkins
■ Travis CI

6. Software Quality
● Quality Attributes
○ Reliability
■ SonarQube
○ Usability
■ Axure RP
■ Sketch
○ Efficiency
■ New Relic
■ Dynatrace
○ Maintainability
■ CodeClimate
○ Portability
■ Docker
■ Vagrant
● Quality Assurance Practices
○ Code Reviews
■ GitHub Pull Requests
■ Crucible
○ Static Analysis
■ SonarQube
© 2020 Hayder Zaeem. All rights reserved. 8

■ ESLint, Pylint
○ Dynamic Analysis
■ Valgrind
■ JProfiler
○ Formal Methods
■ SPIN
■ Alloy

7. Software Project Management


● Project Planning
○ Microsoft Project
○ Asana
● Risk Management
○ RiskWatch
○ Active Risk Manager
● Resource Management
○ Microsoft Project
○ TeamGantt

8. Advanced Topics
● Formal Methods
○ SPIN Model Checker
○ TLA+
● Software Metrics
○ SonarQube
○ CodeClimate
● Software Reliability Engineering
○ IBM Rational Rhapsody
○ SCADE

9. Specialized Areas
● Real-Time Systems
○ VxWorks
○ FreeRTOS
● Distributed Systems
○ Apache Hadoop
© 2020 Hayder Zaeem. All rights reserved. 9

○ Apache Spark
● Parallel Computing
○ MPI
○ OpenMP
● Security Engineering
○ OWASP ZAP
○ Burp Suite

10. Research and Academia


● Research Areas
○ Mendeley
○ Zotero
● Academic Pathways
○ Google Scholar
○ IEEE Xplore
● Academic Publications
○ LaTeX (Overleaf)
○ Microsoft Word

Learning Resources
Foundations

● Data Structures and Algorithms


○ Books: "Introduction to Algorithms" by Cormen, Leiserson,
Rivest, and Stein; "Algorithms" by Robert Sedgewick and Kevin
Wayne
○ Online Courses: Coursera (Princeton's "Algorithms, Part I & II"),
Udacity (Data Structures and Algorithms Nanodegree)
○ Practice: LeetCode, HackerRank, CodeSignal
● Theory of Computation
○ Books: "Introduction to the Theory of Computation" by Michael
Sipser
○ Online Courses: Coursera (Stanford's "Automata Theory"), MIT
OpenCourseWare
© 2020 Hayder Zaeem. All rights reserved. 10

● Discrete Mathematics
○ Books: "Discrete Mathematics and Its Applications" by Kenneth
H. Rosen
○ Online Courses: Coursera (UC San Diego's "Mathematical
Thinking in Computer Science"), Khan Academy
● Computer Architecture
○ Books: "Computer Organization and Design" by David Patterson
and John Hennessy
○ Online Courses: Coursera (University of Washington's
"Computer Architecture"), edX (MIT's "Computation Structures")
Software Development Process

● Software Development Life Cycle (SDLC)


○ Books: "Software Engineering: A Practitioner's Approach" by
Roger S. Pressman
○ Online Courses: Coursera (IBM's "Software Engineering"),
Udacity
● Development Methodologies
○ Books: "Agile Software Development with Scrum" by Ken
Schwaber and Mike Beedle
○ Online Courses: LinkedIn Learning (Agile Development
Practices), Pluralsight
Software Design

● Design Principles
○ Books: "Design Patterns: Elements of Reusable Object-Oriented
Software" by Erich Gamma, Richard Helm, Ralph Johnson, and
John Vlissides
○ Online Courses: Coursera (University of Alberta's "Software
Design and Architecture"), Udemy
● Architectural Styles
○ Books: "Microservices Patterns" by Chris Richardson
○ Online Courses: Coursera (University of Colorado Boulder's
"Software Architecture"), Pluralsight
Software Testing

● Types of Testing
© 2020 Hayder Zaeem. All rights reserved. 11

○ Books: "Effective Software Testing" by Elfriede Dustin


○ Online Courses: Coursera (University of Minnesota's "Software
Testing and Automation"), Udacity
● Testing Frameworks and Tools
○ Online Resources: Selenium Documentation, JUnit 5 User Guide
Software Maintenance

● Maintenance Process
○ Books: "Software Maintenance Success Recipes" by Donald J.
Reifer
○ Online Courses: edX (MIT's "Software Construction"), Coursera
Software Quality

● Quality Assurance Practices


○ Books: "Software Quality Assurance: From Theory to
Implementation" by Daniel Galin
○ Online Courses: Coursera (University of Minnesota's "Software
Development Processes and Methodologies"), Udemy
Software Project Management

● Project Planning and Management


○ Books: "The Art of Project Management" by Scott Berkun
○ Online Courses: Coursera (Google Project Management
Professional Certificate), edX (University of Washington's
"Introduction to Project Management")
Advanced Topics

● Formal Methods
○ Books: "Principles of Model Checking" by Christel Baier and
Joost-Pieter Katoen
○ Online Courses: Coursera (University of Washington's "Software
Development Capstone Project")
● Software Metrics and Reliability
○ Books: "Metrics and Models in Software Quality Engineering" by
Stephen H. Kan
○ Online Courses: Coursera, edX
© 2020 Hayder Zaeem. All rights reserved. 12

Specialized Areas

● Real-Time Systems
○ Books: "Real-Time Systems" by Jane W. S. Liu
○ Online Courses: Coursera (University of Colorado Boulder's
"Real-Time Embedded Systems"), Udacity
● Distributed Systems
○ Books: "Designing Data-Intensive Applications" by Martin
Kleppmann
○ Online Courses: Coursera (University of Illinois' "Cloud
Computing Concepts"), edX (MIT's "Distributed Systems")
● Parallel Computing
○ Books: "Introduction to Parallel Computing" by Ananth Grama,
Anshul Gupta, George Karypis, and Vipin Kumar
○ Online Courses: Coursera (University of Illinois' "Parallel
Programming"), edX
● Security Engineering
○ Books: "Security Engineering: A Guide to Building Dependable
Distributed Systems" by Ross Anderson
○ Online Courses: Coursera (University of Maryland's
"Cybersecurity Specialization"), Udacity (Security Engineer
Nanodegree)

Certificate Courses
● Coursera
○ IBM Software Engineering Professional Certificate
○ Google IT Support Professional Certificate
○ University of Alberta's "Software Product Management"
● edX
○ Microsoft Professional Program in DevOps
○ MIT's Professional Certificate in Data Science
○ University of Washington's Certificate in Software Development
● Udacity
○ Full Stack Web Developer Nanodegree
○ Data Engineer Nanodegree
○ Cloud Developer Nanodegree
● Pluralsight
○ Agile Project Management Certificate
© 2020 Hayder Zaeem. All rights reserved. 13

○ Advanced Software Development Certificate


○ DevOps Foundations Certificate
● LinkedIn Learning
○ Agile Development Practices Certificate
○ Software Development Life Cycle Certificate
○ Project Management Professional (PMP)®

University Programs
● Bachelor’s Degree Programs
○ Massachusetts Institute of Technology (MIT) - BS in Computer
Science and Engineering
○ Stanford University - BS in Computer Science
○ University of California, Berkeley - BS in Electrical Engineering
and Computer Sciences
● Master’s Degree Programs
○ Carnegie Mellon University - Master of Software Engineering
○ University of Illinois Urbana-Champaign - Master of Computer
Science
○ University of Southern California - MS in Computer Science
(Software Engineering)
● Ph.D. Programs
○ Stanford University - Ph.D. in Computer Science
○ Massachusetts Institute of Technology (MIT) - Ph.D. in
Electrical Engineering and Computer Science
○ University of California, Berkeley - Ph.D. in Computer Science
● Online Degree Programs
○ Georgia Institute of Technology - Online Master of Science in
Computer Science (OMSCS)
○ University of Illinois Urbana-Champaign - Online Master of
Computer Science (MCS)
○ Arizona State University - Online BS in Software Engineering

You might also like