CENG350 SOFTWARE ENGINEERING
Course Code: | 5710350 |
METU Credit (Theoretical-Laboratory hours/week): | 3 (3.00 - 0.00) |
ECTS Credit: | 5.5 |
Department: | Computer Engineering |
Language of Instruction: | English |
Level of Study: | Undergraduate |
Course Coordinator: | Prof.Dr. MEHMET HALİT S. OĞUZTÜZÜN |
Offered Semester: | Spring Semesters. |
Course Objectives
By the end of this course the students will be able to
Understand software lifecycle processes, including specification, design, construction, testing and evolution.
Use software process models.
Construct models of computer-based systems.
Understand software quality assurance.
Apply software engineering standards.
Understand professional and ethical responsibilities of software engineers.
Course Content
Software Project Management: metrics, estimation, planning. Software requirement analysis techniques. Software design techniques. Software implementation. Software quality assurance. Software testing. Software maintenance. Review of CASE technology.
Course Learning Outcomes
Understand the domain and the basic terminology of Software Engineering.
Analyze widely used software process models.
Compare plan-driven and agile approaches to software development.
Distinguish user requirements and system requirements.
Distinguish functional requirements and different kinds of non-functional requirements
Elaborate system dependability requirements, including reliability, availability, safety and security.
Compose a software requirement specification that is verifiable, correct, consistent, complete and unambiguous.
Apply UML for modeling various aspects of computer-based systems using a state-of-art tool.
Construct a requirements model for a computer-based system using UML.
Construct a design model for a computer-based system using UML.
Apply the relevant standard for software requirement specification, e.g. IEEE 830.
Apply the relevant standard for software design description, e.g. IEEE 1016.
Analyze system architecture from multiple viewpoints.
Assess candidate architectural patterns and design patterns for a given design problem.
Distinguish different levels of testing.
Select testing techniques appropriate for a given test objective.
Understand the fundamental concepts of quality as related to software, such as process quality and product quality, along with related standards.
Understand software metrics and their relation to product quality.
Discuss the processes involved in evolution of software.
Identify ethical issues in a given situation, using the terminology of ACM/IEEE SECEPP.
Understand IPR concepts closely related to software industry, including copyrights and patents.
Program Outcomes Matrix
Contribution | |||||
# | Program Outcomes | No | Yes | ||
1 | An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics | ✔ | |||
2 | An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors | ✔ | |||
3 | An ability to communicate effectively with a range of audiences | ✔ | |||
4 | An ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts | ✔ | |||
5 | An ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives | ✔ | |||
6 | An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions | ✔ | |||
7 | An ability to acquire and apply new knowledge as needed, using appropriate learning strategies | ✔ |