소프트웨어 공학(8)
-
1차 점검
1. 구현(코딩) 단계에서 포함되지 않는 항목은?a) 코드 품질 관리b) 버전 관리c) 알고리즘 선택d) 코딩 스타일 가이드 2. 소프트웨어 엔지니어에서 중요한 고려요소 5가지를 서술하시오 3.시스템 설계 (System Design) 단계에서 수행하는 작업을 서술하시오. 4. 소프트웨어 아키텍처 분석 (Software Architecture Analysis) 단계에서 수행하는 작업을 서술하시오 5. 시간 복잡도와 공간 복잡도의 개념을 서술하시오. 6. 소프트웨어 위기의 주요 원인 3가지를 서술하시오. 7. 1970년대 구조적 프로그래밍이 강조한 두 가지 핵심 개념을 쓰시오. 8. 객체지향 프로그래밍(OOP)의 특징으로 올바르지 않은 것은?A. 캡슐화B. 정보 은닉C. 단계적 상세화D. 상속E. 다형성..
2025.04.21 -
UML
UML1. UML의 개념소프트웨어 시스템을 다각도로 이해할 수 있도록 12개의 다이어그램을 제시 (UML 2.x에서는 총 14개의 표준 다이어그램)구조 다이어그램, 행위 다이어그램, 상호작용 다이어그램 등시스템이 상호작용하는 측면, 시스템 전체 구조 측면, 컴포넌트 간의 관계 등을 시각적으로 볼 수 있게 나타낸 도면소프트웨어 시스템을 설계하고 이해하는 데 사용되는 표준화된 시각적 언어객체 지향 설계와 개발에 주로 사용되며, 다양한 다이어그램을 통해 시스템의 구조와 동작을 시각적으로 표현UML을 활용하면 복잡한 시스템을 명확하게 설명하고 개발 과정에서 발생할 수 있는 오해나 오류를 줄일 수 있음 2. UML의 역할시각화: 복잡한 소프트웨어 시스템을 이해하기 쉽게 시각적으로 표현문서화: 시스템의 구조와 동작..
2025.04.13 -
애자일 프로세스 모델
애자일 프로세스 모델의 이해애자일: 납렵한, 민첩한애자일 프로세스 모델: 고객의 요구에 민첩하게 대응하고 그때그때 주어지는 문제를 풀어나가는 방법론가벼운 프로세스 방법론의 공통적인 특성을 정의1. 애자일의 기본 가치프로세스와 도구 중심이 아닌, 개개인과의 상호 소통을 중시문서 중심이 아닌, 고객과의 협력을 중시계획 중심이 아닌, 변화에 대한 민첩한 대응을 중시프로세스 품질 자체보다는 산출물의 실행 가능성과 사용자 피드백을 더 중시 2. 애자일의 원칙고객 만족을 위한 소프트웨어를 빠르고 지속적으로 제공개발 후반 새로 추가되는 요구사항 허용동작 가능한 소프트웨어를 자주 고객에게 전달 (짧으면 2주 길면 2달)대면 의사소통 중시자율적 사고와 자유로운 분위기 중시 3. 애자일 프로세스 개발 방법기본기능만 1차 ..
2025.04.13 -
소프트웨어 개발 프로세스
전통적인 소프트웨어 개발 과정소프트웨어 개발 프로세스1. 소프트웨어 프로세스프로세스: 흔히 일을 처리하는 과정 또는 순서소프트웨어 프로세스: 소프트웨어 개발 과정을 체계적으로 계획,관리할 의도 아래 서로 관련 있는 활동을 단계로 분리하여 정의한 것블랙박스 프로세스:개발 초기에 요구사항을 한 번 정한 뒤, 중간 피드백 없이 일괄적으로 개발을 수행하는 방식개발 과정이 사용자에게 보이지 않으며, 최종 결과만 전달됨장점: 빠른 개발 가능단점: 사용자 요구 반영이 어려움, 잘못된 방향으로 개발될 가능성투명한 프로세스:개발 단계를 작은 단위로 나누고, 각 단계마다 사용자 피드백을 받으며 개발하는 방식사용자와의 지속적인 소통을 통해 점차적으로 제품 완성도를 높임장점: 사용자 만족도 상승, 요구사항 반영 용이단점: 개..
2025.03.25 -
인공지능 소프트웨어 품질
인공지능 소프트웨어머신러닝 모델은 입력과 출력의 수학적 관계를 훈련 데이터 일부에 대해서만 학습하며, 전체 입력 공간에 대한 보장은 어려움.(훈련 데이터 이외의 데이터에 대해서는 오차가 발생할 수 있다)캡슐화와 모듈화 개념 등은 딥러닝 아키텍처 설계, 파이프라인 구성 등에서 부분적으로 적용(전통적 소프트웨어에 비해 명확한 인터페이스 정의나 의도적 설계 분할이 어렵다)학습 알고리즘보다 학습에 사용하는 데이터가 더 중요하다.성능을 올리기 위해선 초기 가중치를 잘 선택해야 한다.(특히 깊은 신경망에서는 Vanishing/Exploding Gradient 문제를 방지하기 위한 초기화 전략) 1. 인공지능 소프트웨어의 이슈투명성(Transparency) :기계학습 기반 시스템은 동일한 입력에 대하여 서로 다른 결..
2025.03.25 -
소프트웨어의 정의와 품질
소프트웨어 공학품질 높은 소프트웨어를 경제적으로 개발하기 위해 계획을 세우고, 개발하며, 유지 및 관리하는 전 과정에서 공학적, 과학적, 수학적 원리를 적용하여 소프트웨어 개발 방법론, 도구, 기술을 연구하는 학문이다.1. 소프트웨어 개발 생명 주기계획(Planning) → 분석(Analysis) → 설계(Design) → 구현(Implementation) → 테스트(Testing) → 유지보수(Maintenance)목표개발 대상의 명확화소프트웨어 개발을 위한 다양한 공학적 기법 탄생 → 개발 과정의 체계화 및 개발 수명주기 지원 → 사용자의 요구사항을 충족하는 품질 높은 소프트웨어 개발소프트웨어 공학의 성질엄격성(Rigidity): 개발자의 경험과 지식에 따라 품질이 크게 좌우됨정형성(Formality..
2025.03.19