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 OutcomesNoYes
1An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
2An 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
3An ability to communicate effectively with a range of audiences
4An 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
5An 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
6An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
7An ability to acquire and apply new knowledge as needed, using appropriate learning strategies