CPIT-251 Software Engineering (I)
Credits: 3 credit hours Prerequisite: CPIT-250
Description
The objective of this course is to study software engineering principles and techniques used in the specification, design, and testing of software systems. Major software development methodologies are reviewed including requirements, analysis and specification, design, testing, and documentation.
Course Learning Outcomes
By completion of the course the students should be able to:
- Describe the need for and importance of software engineering and its objectives.
- Differentiate between the various activities involved in software engineering process.
- Discover how to develop software as part of a software team.
- Decide which architecture is suitable for a given non- functional requirements.
- Distinguish between different distributed application architecture models.
- Introduce object-oriented software design using the UML and highlight important implementation concerns.
- Introduce software testing and software testing processes.
- Explain why software evolution is such an important part of software engineering.
- Describe the challenges of maintaining a large base of software systems, developed over many years.
- Introduce software configuration management processes and tools.
- Illustrate the reuse-driven software engineering.
- Describe an approach to software reuse based on the composition of standardized, reusable components.
- Contrast between two tier and three tier client server architecture.
- Introduce distributed systems engineering and distributed systems architectures.
- Distinguish between different distributed application architecture models.
Textbook/References
- Roger Pressman, Bruce Maxim, , “Software Engineering: A Practitioner’s Approach”, McGraw-Hill Education; 8 edition (2014-01-23); ISBN-13 9780078022128; ISBN-10 0078022126
Topics Coverage & Durations
Topics | Weeks |
---|---|
Introduction to software engineering (Chapter 1) | 1 |
Software Processes (Chapter 2) | 1 |
Agile Software Development (Chapter 3) | 1 |
Architectural Design (Chapter 6) | 1 |
Design and Implementation (Chapter 7) | 1 |
Software Testing (Chapter 8) | 1 |
Software Evolution (Chapter 9) | 1 |
Configuration Management (Chapter 25) | 1 |
Software Reuse (Chapter 15) | 1 |
Component-based software engineering (Chapter 16) | 1 |
Distributed software engineering (Chapter 17) | 1 |
Grading
- Assignments: 10%
- Group Project: 30%
- Midterm exam: 30%
- Final exam: 30%