Credits and Contact Hours
3 credits, 43 hours
Course Instructor Name
Prof. Mehmet H. Karaata, Dr. Abdullah Shaibani
Textbook
- Ian Sommerville, Engineering Software Products: An introduction to modern software engineering, 1st Edition, Pearson Reference Text
- Software Engineering: A practitioner's Approach, Roger Pressman and Bruce Maxim, 8th Edition
Catalog Description
The course introduces the basic concepts of software engineering, methodologies, and process models. The course covers the followings: Software life cycle, models and methods for software specification, analysis and design, object oriented analysis and design using UML, patterns, frameworks and APIs, architectural design, distributed system architectures. The course also introduces the use of state-of-the-art tools for computer-aided software engineering. The course increase students' knowledge of classic and modern software engineering techniques and develop concrete experience in turning ill-formed concepts into products working with a team.
Prerequisite
ENGR-209 and ENGR-310
Co-requisite
CpE-341
Specific Goals for the Course
Upon successful completion of this course, students will be able to:
- Apply software engineering knowledge and models. (Student outcome: 2)
- Analyze a software system proposal and choose the appropriate software model for the system. (Student outcomes: 2)
- Understand the functional and non-functional system properties. (Student outcomes: 2)
- Produce user and system specification documents using standard templates. (Student outcomes: 3, 4)
- Apply agile software engineering on a project and its principle best practices to software development. (Student outcome: 2)
- Analyze and design software systems to generate software requirements and design specifications. (Student outcomes: 2, 3)
- Understand and identify various software engineering problems, and solve these problems using computer-aided software engineering (CASE) tools.
- Use software analysis and design methods, as well as modern software engineering tools to work on their projects.
- Understand and apply object-oriented analysis and design techniques, including UML. (Student outcomes: 2)
- Understand the properties of good system architecture and commonly used design patterns. (Student outcomes: 2)
- Collaborate in small teams to apply software engineering knowledge to a selected project, then submit a written report and present the work orally while maintaining an ethical and professional behavior. (Student outcomes: 3, 4, 5)
Topics to Be Covered
- Software Products
- Agile Software Engineering
- Features, Scenarios and Stories
- Software Architecture
- Cloud-based Software
- Microservices Architecture
- Security and Privacy
- Reliable Programming
- Testing
- DevOps and Code Management
- UML Diagrams and Practice