Course Title: Software Engineering
Course Code:
Pre-Requisites:
Credit Hours Theory: 2
Credit Hours Lab (If 1
Applicable):
Course Objectives: Software Engineering (SE) comprises the core principles consistent in
software construction and maintenance: fundamental software
processes and life-cycles, mathematical foundations of software
engineering, requirements analysis, software engineering
methodologies and standard notations, principles of software
architecture and re-use, software quality frameworks and validation,
software development, and maintenance environments and tools. An
introduction to object-oriented software development process and
design. Topics include: iterative development, interpretation of
requirements and use case documents into code; application of design
notation in UML and use of commonly-used design patterns. Current
industry-strength programming languages, technologies and systems
feature highly in the practical components, electives and projects of
the course, but they are also taught with a view to understanding and
applying principles underlying their more ephemeral character.
Learning Outcomes: After the successful completion of course, the students will be able to:
1. Basic knowledge and understanding of the analysis and design of
complex systems.
2. Ability to apply software engineering principles and techniques.
3. Ability to develop, maintain and evaluate large-scale software
systems.
4. To produce efficient, reliable, robust and cost-effective software
solutions.
5. Ability to perform independent research and analysis.
6. To communicate and coordinate competently by listening,
speaking, reading and writing english for technical and general
purposes.
7. Ability to work as an effective member or leader of software
engineering teams.
8. To manage time, processes and resources effectively by
prioritising competing demands to achieve personal and team goals
Identify and analyzes the common threats in each domain.
9. Ability to understand and meet ethical standards and legal
responsibilities.
Content SOFTWARE ENGINEERING FUNDAMENTALS
• Course Logistics
• Software Development Challenges
• Software Scope
• Software Engineering Discipline
• Software Methodologies and Related Process Models
• The Human Side of Software Development
• Introduction to Agile Software Engineering
SOFTWARE DEVELOPMENT LIFE CYCLES (SDLCs) –
Part I
• Process Models and Solution Life Cycle Phases
• Traditional Life Cycle Models
o Waterfall
oV
o Phased
o Evolutionary
o Spiral
o CBSE
• Alternative Techniques
o UP
o RAD
o JAD
o PSP/TSP
o Prototyping
SOFTWARE DEVELOPMENT LIFE CYCLES (SDLCs) –
Part II
• Agile Software Engineering Process Models
o Extreme Programming
o Agile Software Development
o DevOps
o Site Reliability Engineering (SRE)
• Roles and Types of Standards
• ISO 12207: Life Cycle Standard
• IEEE Standards for Software Engineering Processes and
Specifications
SOFTWARE ENGINEERING TOOLS PRIMER
• Requirements Management Tools (e.g., IBM Rational Doors)
• Design Tools (e.g., Sparx Enterprise Architect)
• Development Tools
o IDEs (e.g., Xcode, Eclipse, IntelliJ IDEA, NetBeans, Microsoft
Visual Studio, Atom)
o Source Control Management (e.g.,GitHub)
o Release Orchestration (e.g., OpenMake)
o Collaboration (e.g., Jira, Trello, Slack)
• Operations Management Tools
o Database Automation (e.g., Datical)
o Deployment (e.g, ElasticBox)
o Configuration Management (e.g., Ansible, Chef, Puppet)
o Continuous Integration (e.g, Jenkins)
o Container Management (e.g., Docker, Kubernetes)
• Testing Tools and Frameworks
o Testing Tools (e.g., Junit, Selenium)
o PaaS (e.g., PythonAnywhere, AWS Code9, Heroku)
• Management and Monitoring Frameworks
o - AIOps (e.g, Splunk, Logstash)
o - Analytics (e.g., Dynatrace, ElasticSearch)
o - Monitoring (e.g., Nagios)
• Security Frameworks (e.g., Snort, BlackDuck)
• Cloud Platforms (e.g., AWS, Azure, GCP, IBM Cloud)
• Project Management (e.g., Scoro, Basecamp, Microsoft Project)
• Selecting Appropriate Tools
PLANNING AND MANAGING REQUIREMENTS
• Requirements Development Methodology
• Specifying Requirements
• Eliciting Accurate Requirements
• Documenting Business Requirements
• Defining User Requirements
• Validating Requirements
• Achieving Requirements Traceability
• Managing Changing Requirements
• Reviews, Walkthroughs, and Inspections
• Requirements Modeling
• Agile Requirements Engineering
INTRODUCTION TO SOFTWARE ANALYSIS AND DESIGN
• Roles of Analysis and Design
• Traditional Data and Process Modeling Approaches
• Performing Requirements Analysis
• Object-Oriented Modeling
• User Experience Design
• Design for Mobility
• Selecting and Combining Approaches
• Creating a Data Model
BUSINESS MODEL ENGINEERING
• Business Model Capture Tools
• Process Modeling
• Capturing the Organization and Location Aspects
• Developing a Process Model
FROM ANALYSIS AND DESIGN TO SOFTWARE
ARCHITECTURES
• Building an Object Model using UML
• Architectural and Pattern-Based Design
• Model Driven Architectures
• Business Process Management
• Achieving Optimum-Quality Results
• Selecting Kits and Frameworks (e.g., Bootstrap, .Net)
• Using Open Source, free, freemium, paid, and Enterprise software
components
BUILDING SOFTWARE
• Language and Platform Issues
• Component Infrastructures
• Pair Programming
• Refactoring
• Test Driven Development (TDD)
• Distributed Development and Agile Methods Scalability
SOFTWARE VERIFICATION AND VALIDATION
• Unit Testing
• Integration and System Testing
• Static Confirmation
• Dynamic Testing
• Traceability Matrices
• Automated Testing
• Other Specialized Testing
SOFTWARE QUALITY AND SECURITY
• Software Quality Concepts
• Software Configuration Management (CM)
• Software Quality Assurance (SQA)
• Software Quality and Agile Methods
o Automated and Manual Functional Testing
o Acceptance testing
o Mock objects
o User interface testing (HTTPUnit, Canoo)
o Performance testing
• Software Metrics and Analytics
• Quality and Process Standards and Guidelines
o ISO 9000
o SWEBOK
o ISO 15504
o SEI’s Capability Maturity Model (CMM)
o CMM Integration (CMMI)
• Software Security Engineering
RISK MANAGEMENT IN SOFTWARE ENGINEERING
PROJECTS
• Project Management Concepts
• Project Planning and Estimation
• Cooperative roles of software engineering and project management
• Developing risk response strategies
• Risk Management in Agile Processes
• Agile Project Planning
• Project Management Metrics
• Software Support Strategies
Advanced Topics
• Software Process Improvement
• Quantifying Software Specifications Using Formal Methods
o Using Set Theory and Logic
o Verifying Requirements Mathematically
• Emerging Trends in Software Engineering
• Data Science for Software Engineers
• Measuring User Satisfaction
• Software Engineering Ethics
Recommended Text Books: Software Engineering: A Practitioner's Approach, By
Roger S. Pressman and Bruce Maxim, McGraw-Hill Higher
International; ISBN-10: 1259872971; ISBN-13: 978-
1259872976, 9th Edition (09/19)
Software Engineering (10th Edition) by Ian
Sommerville Pearson; ISBN-10: 0133943038; ISBN-13:
978-0133943030 (04/15)
Reference Books: Site Reliability Engineering, by Niall Murphy, Betsy
Beyer, Chris Jones, and Jennifer Petoff O’Reilly Media;
ISBN-10: 149192912X, ISBN-13: 978-1491929124 (04/16)
Helping Web Sites: https://www.ibm.com/cloud/devops
https://landing.google.com/sre
www.agilemanifesto.org
http://www.agilemodeling.com/
http://www.aboutus.org/Adaptivesd.com www.AgileAlliance.org
http://www.extremeprogramming.org/
https://ronjeffries.com/
http://hillside.net/patterns
http://www.omg.org/mda/
http://www.stevemcconnell.com
Attendance is mandatory. Every class is important. All deadlines are
hard. Under normal circumstances late work will not be accepted.
Students are required to take all the tests. No make-up tests will be
given under normal circumstances. There is 0 tolerance for
General Instructions for plagiarism. Any form of cheating on exams/assignments/quizzes is
students: subject to serious penalty.
Attendance
75% attendance is mandatory. Latecomers will be marked as
absent.
Evaluation Criteria
Assignments/projects 20%
Quizzes 10%
Mid-Term 20%
Final 50%
CONTRIBUTION OF COURSE LEARNING OUTCOMES (CLOs) TO
PROGRAMME LEARNING OUTCOMES (PLOs)
BS Software Engineering Data Structures and Algorithms
No Program Learning Course Learning Outcomes
Outcomes
1 2 3 4 5 6 7
1 Engineering Knowledge
2 Problem analysis
3 Design/Development of
solutions
4 Investigation
5 Modern tool usage
6 Engineer and society
7 Environment and
sustainability
8 Ethics
9 Individual and Team work
10 Communication
11 Project Management
12 Lifelong learning