0% found this document useful (0 votes)
19 views

Roadmap of Software Engineering

Uploaded by

victor.silva.bos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views

Roadmap of Software Engineering

Uploaded by

victor.silva.bos
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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