소프트웨어 공학

Software Engineer (week 1)

rabbit-jun 2025. 3. 4. 11:38

Software Engineer 정의: 소프트웨어 엔지니어는 사용자의 요구사항을 분석하고, 소프트웨어 시스템을 설계·구현·테스트·유지보수하여 최적의 성능과 신뢰성을 갖춘 소프트웨어를 개발하는 역할을 한다.

 

 

소프트웨어 엔지니어에서 중요한 5가지

 

  • 소비자의 Needs 파악
    • 요구사항 분석 (Requirement Analysis)
    • 고객 및 사용자의 요구사항을 조사하고 분석하여 요구사항 명세서를 작성함.
    • 개발 비용과 일정 계획을 수립하는 과정이 포함됨.
  • System의 Input과 Output 설계
    • 시스템 설계 (System Design)
    • 시스템이 처리할 입력과 출력의 구조를 정의함.
    • 데이터 흐름, 인터페이스, 알고리즘 설계 등을 포함함.
  • 시스템 분석하기
    • 소프트웨어 아키텍처 분석 (Software Architecture Analysis)
    • 시스템을 계층적으로 분석하여 각 모듈의 역할을 정의함.
    • 성능, 보안, 확장성 등을 고려하여 최적의 설계를 도출함.
  • 시스템 코딩하기
    • 구현 (Implementation / Coding)
    • 프로그램을 실제로 개발하는 과정.
    • 코딩 스타일 가이드, 코드 품질 관리, 버전 관리(Git 등) 등이 포함됨.
  • 시스템을 실행하고 에이징 테스트 수행
    • 테스트 및 유지보수 (Testing & Maintenance)
    • 단위 테스트(Unit Test), 통합 테스트(Integration Test), 사용자 테스트(User Testing) 등을 수행함.
    • 실제 필드에서 성능을 검증하고, 시스템이 정상적으로 동작하는지 확인하는 과정이 포함됨.

 

 

 

소프트웨어 개발에서 중요한 고려 요소

 

  • Need (요구사항 분석): 고객 및 사용자의 필요를 파악하는 과정
  • Tech (기술 선택 및 설계): 적절한 기술과 개발 도구 선택
  • Payment (비용 산정 및 예산 관리): 프로젝트 비용 분석
  • Regulation (규제 및 법적 요건 준수): 개인정보 보호법, 보안 규정 등 고려

 

 

 

컴퓨터의 성능을 나타내는 지표 MIPS (Million Instructions Per Second)

 

  • 초당 실행할 수 있는 명령어(instruction) 수를 나타냄.
  • 일반적으로 CPU 성능을 평가하는 지표 중 하나.
  • 하지만 CPU 성능을 평가할 때 CPI(Clock per Instruction), FLOPS(Floating Point Operations Per Second) 등의 지표도 사용됨.

 

 

 

컴퓨터의 계산 이론

1. 시간 복잡도 (Time Complexity)

  • 속도와 처리 시간과 관련됨.
  • 연산의 효율성을 측정하는 방법 중 하나.
  • CPU와 GPU가 연관됨.
    • CPU: 주로 미분, 적분 등의 순차적 계산에 강함.
    • GPU: 대수학, 벡터 연산, 병렬 처리에 강함.

2. 공간 복잡도 (Space Complexity)

  • 메모리 사용량과 관련됨.
  • 연산을 수행하는 데 필요한 저장 공간을 측정함.
  • SRAM, DRAM, HBM이 관련됨.
    • SRAM (Static RAM): 캐시 메모리, 속도가 빠르지만 비쌈.
    • DRAM (Dynamic RAM): 주 메모리(RAM), 속도가 상대적으로 느림.
    • HBM (High Bandwidth Memory): GPU에서 사용되며 병렬 연결을 통해 높은 대역폭을 제공함.

 

 

 

반응형