학과 및 교과소개
소프트웨어공학과 Department of Software Engineering
소프트웨어공학은 높은 품질의 소프트웨어를 효과적으로 개발하고 운영하는데 필요한 일련의 이론과 실용적 기법들을 다루는 학문이다. 이를 위하여 소프트웨어공학과에서는 소프트웨어 개발과 운영에 효과적인 고급 기술을 교육시키고, 정보화 및 융합기술 시대에 크게 기여할 수 있는 소프트웨어 전문가를 양성하는 것을 목표로 하고 있다.
소프트웨어공학과에서는 데이터웨어하우스, 빅데이터 분석, 분산 및 모바일 컴퓨팅 등 최근에 이슈가 되고 있는 새로운 기술들과 함께, 소프트웨어 설계, 소프트웨어 아키텍처, 테스팅, 소프트웨어 유지보수, 프로젝트 관리 등 소프트웨어공학을 학습함으로써, 이론적 기반과 함께 실용적인 기술도 획득할 수 있는 기회를 제공한다.
교과목 소개 | 교과목 개요 |
---|---|
소프트웨어 공학 (기초) |
높은 품질의 소프트웨어를 시간과 비용 측면에서 효율적으로 개발, 운영, 유지보수하기 위한 기본 이론과 실용적 기법을 다룬다. S/W 개발을 위해 소프트웨어 개발 프로세스, 요구사항 분석, 설계, 리뷰, 시험 등을 습득하며, 과제 관리를 위해 과제 계획, 기간과 비용 산출, 품질 보증, 형상 관리 등을 학습한다. |
데이터 모델링 (기초) |
본 과목은 소프트웨어가 사용하는 데이터에 대한 분석과 이를 기반으로 데이터베이스를 설계 운영하는 기법들을 다룬다. 주된 내용으로는 ER Diagram이나 Class Diagram을 이용한 데이터 모델링 기법, SQL 기반의 데이터베이스 정의 및 질의 처리, DB 설계의 정규화(Normalization) 등이 있다. |
데이터웨어하우스 | 데이터웨어하우스는 조직의 데이터를 일관성있게 보관하여 다수의 사용자들이 접근하여 데이터를 분석할 수 있는 기술이다. 이를 통해 정보시스템의 구성 요소인 모델링, ETL (Extract, Transaction, Loading), OLAP (On-line Analytics Processing) 등의 구성 기술을 이해한다. 또한 데이터웨어하우스 구축 방법론, 정보 전략, 정보기술과 기업조직, 정보기술 아키텍쳐, 정보자원 관리, 정보기술기반 비즈니스 등의 이슈들을 다룬다. |
빅데이터 분석 | 본 과목은 빅데이터 분석 및 활용과 관련된 개념 및 분석 기법을 다룬다. 주된 내용으로는 빅데이터의 개념, 주요 기술, Map Reduce 기반 분석, R기반 통계적 분석, 빅데이터 분석 시스템의 아키텍처 설계, 빅데이터 지원 도구 등이 있다. |
데이터마이닝 | 데이터마이닝이란 방대한 데이터로부터 그 속에 들어 있는 지식, 규칙이나 패턴을 추출하는 기술이다. 데이터마이닝의 요소기술 및 관련 소프트웨어를 학습함으로써 기업의 제반 경영 활동으로부터 발생하는 산재된 정보를 통합하고 체계적으로 분석하여 신속, 정확한 의사 결정을 위한 지식으로 활용할 수 있도록 한다. |
소프트웨어 프로세스 | 본 과목은 소프트웨어 개발 방법론의 중심이 되는 개발 프로세스들을 다룬다. 주요 소프트웨어 프로세스들에 대하여, 개요, 절차, 주요 활동/태스크, 장단점 및 관리 기법들을 학습한다. 또한, 과제별 복잡도와 특성에 따라 최적 프로세스를 선택하며, 과제별 프로세스의 정제 기법도 학습한다. |
소프트웨어 설계 | 본 과목은 소프트웨어의 설계 단계에 적용할 수 있는 주요 기법들을 다룬다. 높은 품질의 소프트웨어 개발을 위해 설계 모델에서 품질이 우선되어야 한다. 주된 내용으로는 설계 원칙, 설계 절차, 아키텍처 설계, 컴포넌트 설계, UI 설계, 데이터베이스 설계, 설계 모델의 평가 기법 및 설계 메트릭 등이 있다. |
소프트웨어 아키텍처 | 본 과목에서는 목표 소프트웨어의 아키텍처를 설계하는 프로세스와 주요 기법들을 다룬다. 아키텍처는 복잡한 소프트웨어의 개발 요구사항에서 비기능적/품질 요구사항을 효과적으로 반영, 설계하는데 효과적인 수단이다. 주된 내용으로는 아키텍처 설계 프로세스, 아키텍처 스타일, 아키텍처 뷰포인트(Viewpoint), 아키텍처 택틱(Tactic), 아키텍처 확인(Validation) 등이 있다. |
소프트웨어 테스팅 | 본 과목은 구현된 소프트웨어 프로그램에 대한 주요 테스팅 기법들을 다룬다. 주된 내용으로는 테스팅 목적 및 개념, 테스팅의 종류, 단위(Unit) 테스팅, 통합 시험, Blackbox 테스팅, Whitebox 테스팅, 시스템 시험, 객체지향 테스팅, 모델 기반 테스팅 등이 있다. |
소프트웨어 유지보수 | 본 과목은 운영 중인 소프트웨어의 유지보수에 필요한 기법들을 다룬다. 주된 내용으로는 소프트웨어 유지보수의 종류, 유지보수 절차, 오류제거, 기능보완 및 예방을 위한 유지보수 기법들을 다룬다. |
소프트웨어 품질보증 | 본 과목은 소프트웨어의 높은 품질을 보증하기 위한 이론과 실용적 기법을 다룬다. 주된 내용으로는, ISO 9126 등 소프트웨어 품질 모델, 품질 측정 메트릭, 리뷰(Review), 통계적 품질 보증 기법, 검증과 확인(Verification & Validation) 등이 있다. |
임베디드 소프트웨어설계 | 본 과목은 임베디드 소프트웨어의 특징, 구성 등 기본 개념과 임베디드 소프트웨어 개발에 필요한 기법들을 다룬다. 주된 내용으로는 임베디드 소프트웨어의 특징, 임베디스 소프트웨어의 요구사항, 임베디드 시스템 지원 운영체제, 임베디드 소프트웨어 요구사항 분석 및 설계 기법, 테스팅, 지원 도구 등이 있다. |
분산 컴퓨팅 | 오늘날 분산 컴퓨팅은 모바일 컴퓨팅을 거쳐서 클라우드 컴퓨팅으로 발전하고 있다. 이 교과목에서는 클라우드 컴퓨팅의 기본이 되는 분산컴퓨팅의 특징을 이해하고, 그 시스템을 구성하는 요소기술들과 함께, 시스템을 구축하기 위해 고려해야 하는 디자인 이슈들을 학습한다. |
모바일 컴퓨팅 | 본 과목은 모바일 디바이스를 사용하는 모바일 소프트웨어 앱 개발과 품질 관리 기법들을 다룬다. 주된 내용으로는 모바일 컴퓨팅의 특징, 모바일 플랫폼 종류 및 특징, 모바일 앱 개발 프로세스, 모바일 앱 아키텍처 설계, 모바일 앱 품질 평가 기법 등이 있다. |