Software Engineering Fundamentals and the Software Process - Software Development Lifecycle (SDLC) Models: Waterfall, Iterative, and Agile - Software Project Management: Planning, Scheduling, and Risk Management - Requirements Engineering: Elicitation, Specification, and Validation - Ethical and Professional Responsibilities in Software Engineering - Overview of Case Studies: Embedded Systems and Information Systems.
Introduction to Dependable Systems: Safety, Reliability, and Availability - Security Engineering: Risk Management and Secure Design Principles - Advanced Requirements Models: User and System Requirements - Socio-Technical Systems and Critical Systems Specification - Validation, Verification, and Software Quality Assurance - Architectural Patterns for Dependable Systems
System Modeling: Context, Interaction, and Structural Models - Architectural Design: Organization, Decomposition, and Patterns - Object-Oriented Design using UML - Distributed Systems Architecture: Client-Server and Service-Oriented - Software Reuse: Component-Based Engineering and Application Frameworks - Testing Strategies: Unit, Integration, System, and Release Testing.
Software Evolution: Change Management and Legacy Systems - Software Maintenance: Types of Maintenance and Maintenance Processes - Configuration Management: Version Control and System Building - Model-Driven Engineering (MDE) and Automated Code Generation - Open Source Development and Software as a Service (SaaS) - Embedded Software Design and Real-Time Systems.
Project Planning: Estimation Techniques (COCOMO, Agile Estimation) - Quality Management: Quality Plans, Standards, and Reviews - Process Improvement: Capability Maturity Model Integration (CMMI) and ISO 9001 - Managing People: Team Organization and Stakeholder Communication - Cost Estimation and Project Scheduling - Case Study Analysis and Course Review.
Reference Book:
Gamma, Erich, et al. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994. Martin, Robert C. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall, 2008. Beck, Kent. Extreme Programming Explained: Embrace Change, 2nd Edition. Addison-Wesley, 2004. Humphrey, Watts S. Managing the Software Process. Addison-Wesley, 1989. Larman, Craig. *Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd Edition.* Prentice Hall, 2004.
Text Book:
Sommerville, Ian. Software Engineering, 9th Edition. Addison-Wesley, 2011.. Pressman, Roger S., and Bruce R. Maxim. Software Engineering: A Practitioner's Approach, 9th Edition. McGraw-Hill, 2019.