Title
Software Engineering Principles and Practice
Code
Credit Hours
3
Category
Computing
Prerequisite
None
Co-Requisite
None
Follow-up
None
Learning Outcomes
Course Description
Text Book(s)
This course provides a comprehensive introduction to the fundamental concepts, principles, and practices of software
engineering. It aims to equip students with the necessary knowledge and skills to understand, build, and manage computer-based
systems.
1. Understand the Nature of Software Engineering: Grasp the core definitions, characteristics of software, and the importance of
a systematic, disciplined, and quantifiable approach to software development.
2. Analyze Software Processes: Differentiate between various software process models, including prescriptive (e.g., Waterfall,
Incremental, Evolutionary) and agile approaches (e.g., Extreme Programming, Scrum), and understand their applicability.
3. Perform Requirements Engineering: Identify, elicit, specify, validate, and manage software requirements, understanding the
difference between user and system requirements, and the role of scenarios and models.
4. Apply System Modeling Techniques: Utilize Unified Modeling Language (UML) diagrams (e.g., use cases, class diagrams,
sequence diagrams, state diagrams) to represent different aspects of a software system.
5. Design Software Architectures and Components: Understand architectural design decisions, common architectural patterns,
object-oriented design concepts, and component-level design, considering quality attributes.
6. Implement Software Quality Assurance (SQA): Comprehend the elements of software quality, the role of reviews, inspections,
and metrics in ensuring quality throughout the software process.
7. Develop Software Testing Strategies: Design effective test cases using white-box and black-box testing techniques, and
understand different testing levels (unit, integration, validation, system) and the art of debugging.
8. Manage Software Configuration and Change: Understand the importance of software configuration management (SCM),
including identification, version control, change control, and configuration auditing.
9. Grasp Software Project Management Fundamentals: Recognize the importance of people, product, process, and project in
software management, including basic concepts of estimation, scheduling, and risk management.
• Pressman, Roger S. Software Engineering: A Practitioner’s Approach. 7th ed. McGraw-Hill, 2010. (Note: The provided course
outline mentions 8th ed. McGraw-Hill, 2015, but the excerpts are from the 7th edition.)
• Sommerville, Ian. Software Engineering. 9th ed. Addison-Wesley, 2011. (Note: The provided course outline mentions 10th ed.
Pearson Inc., 2014, but the excerpts are from the 9th edition.)
Applying UML and Patterns 3rd Edition by Craig Larman
Reference Material
Assessment Criteria
• Abran, A., and J. Moore, SWEBOK: Guide to the Software Engineering Body of Knowledge, IEEE, 2002.
• Bass, L., P. Clements, and R. Kazman, Software Architecture in Practice, 2nd ed., Addison-Wesley, 2003.
Assignment
Quizzes and Tests
Midterm
Final
15
10
35
40
Lecture
No.
Week No.
1
Topic
The nature and unique characteristics of software. Defining
software engineering: discipline, process, methods, tools.
Software application domains and legacy software.
1
2
3
2
4
A generic process model: framework activities
(communication, planning, modeling,
construction, deployment). Software process
structure.
A generic process model: framework activities communication
continue
6
A generic process model: framework activities: planning –
Feasibility Study
7
4
8
6
Software myths and realities. Professional ethics and
responsibilities of software engineers. Overview of Software
Engineering.
5
3
5
Software myths and realities. Professional ethics and
responsibilities of software engineers. Overview of Software
Engineering.
9
10
11
Economic Feasibility: Project selection Method (Cost Benefit
Analysis, Payback, ROI, NPV)
Economic Feasibility: Project selection Method( Cost Benefit
Analysis, Payback, ROI, NPV)
Scope Planning, Scope Creep, Gold Platting
A generic process model: framework activities: planning
Umbrella activities (project tracking, risk management, SQA,
technical reviews, SCM, measurement). Process flow: linear,
Source
Book-Chapter No. (Sections /
Pages)
Recommendations for
Learning Activities
(Mention Assignments, Test,
Quizzes, Practical, Case
Study, Projects, Lab Work or
Reading Assignments)
iterative, evolutionary, parallel. Process patterns and
assessment.
12
The Waterfall model: stages, strengths, weaknesses.
Prescriptive process models.
Incremental and Evolutionary process models (e.g.,
prototyping, spiral model).
13
Agile Manifesto and principles. Extreme Programming (XP):
values, process, practices (e.g., pair programming, test-driven
development). Agile development techniques.
Scrum framework: roles, events, artifacts. Plan-driven vs. agile
development: choosing the right approach. Agile process
models
7
14
15
8
16
Requirements engineering tasks: inception, elicitation,
elaboration, negotiation. Functional and non-functional
requirements.
Requirements specification, validation, management. The
software requirements specification (SRS) document structure.
Identifying stakeholders and collaborative requirements
gathering. Usage scenarios (use cases) and their importance.
UML diagrams: Use Case Diagrams, Class Diagrams
(attributes, operations, associations, generalization). Structural
models.
Entity Realationship Diagram (ERD)
Mid Term