[TIL] 25.02.04 TUE

GDORI·2025년 2월 4일
0

TIL

목록 보기
179/184
post-thumbnail

소프트웨어의 특징

소프트웨어는 하드웨어와 달리 물리적인 형태가 없으며, 다음과 같은 주요 특징을 가진다.

  • 무형성: 물리적인 형태가 없으며, 코드로 존재.
  • 복잡성: 많은 기능을 제공하고, 다양한 환경에서 작동해야 하므로 복잡한 구조를 가짐.
  • 변경 용이성: 하드웨어에 비해 수정 및 업그레이드가 쉬움.
  • 재사용성: 모듈화되어 있을 경우 코드 재사용이 가능.
  • 비가시성: 하드웨어처럼 눈에 보이는 형태가 없어 관리가 어려움.

소프트웨어 위기

소프트웨어 위기는 소프트웨어 개발의 복잡성이 증가하면서 발생하는 문제

  • 품질 저하: 소프트웨어가 점점 더 복잡해져 품질 보장이 어려워짐.
  • 개발 비용 증가: 소프트웨어의 크기와 복잡도가 커짐에 따라 개발, 유지보수 비용이 급증.
  • 프로젝트 지연: 프로젝트 완료 기한을 맞추기 어려운 경우가 많음.

소프트웨어 공학 기본 원칙

소프트웨어 공학의 기본 원칙은 효율적이고 품질 높은 소프트웨어 개발을 위한 지침을 제공

  • 구조적 접근법: 소프트웨어 개발을 체계적으로 접근.
  • 모듈화: 기능별로 나누어 관리하고, 재사용성을 높임.
  • 유지보수성: 소프트웨어가 개발된 후에도 수정 및 개선이 용이하게 설계해야 함.
  • 표준화: 개발 과정에서 일관된 절차와 표준을 따름.
  • 문서화: 개발 과정과 결과물을 명확하게 기록하여 추후 수정이나 유지보수가 용이하도록 함.

재공학

재공학은 기존의 시스템을 분석하고 개선하는 과정으로 보통 오래된 소프트웨어 시스템을 최신 기술로 개선하거나, 기존 시스템을 재설계하는 과정이다. 주요 목적은 효율성을 높이고, 시스템의 품질을 향상시키는 것이다.


역공학

역공학은 기존의 소프트웨어나 하드웨어를 분해하여 동작 원리나 구조를 분석하는 과정으로 소스 코드가 없을 때 소프트웨어를 분석하여 기능 및 설계 구조를 파악하는 데 사용된다. 법적인 문제가 발생할 수 있으므로 주의가 필요하다.


CASE

CASE 도구는 소프트웨어 개발을 지원하는 자동화된 도구다. 이를 사용하여 소프트웨어 설계, 코드 생성, 테스트 등을 효율적으로 관리할 수 있다.

  • 자동화된 설계: 시스템의 구조를 자동으로 생성.
  • 문서화: 설계 및 코드를 문서화하여 추후 참조가 가능하게 함.
  • 프로젝트 관리: 개발 진행 상황을 관리하고 추적.

소프트웨어 생명주기

소프트웨어 생명주기는 소프트웨어 개발 과정의 모든 단계를 포함하는 개념이다.
1. 요구 사항 분석: 소프트웨어가 충족해야 할 요구 사항을 정의.
2. 설계: 시스템의 구조를 설계.
3. 구현: 실제 코드 작성.
4. 테스트: 소프트웨어가 요구 사항을 충족하는지 확인.
5. 배포: 실제 환경에 소프트웨어를 배포.
6. 유지보수: 배포 후 소프트웨어의 수정 및 개선.


애자일 방법론

애자일 방법론은 유연하고 빠른 개발을 추구하는 방법론이다.

  • 반복적 개발: 짧은 개발 주기를 반복하며 점진적으로 소프트웨어를 개선.
  • 고객 협업: 고객의 피드백을 반영하여 지속적으로 개선.
  • 변경 수용: 요구 사항 변경을 적극적으로 수용하고 반영.
  • 작은 팀: 팀원이 소규모로 구성되어 빠른 의사결정과 효율적인 작업 분담이 가능.

XP

익스트림 프로그래밍은 애자일 방법론의 일종으로, 품질 높은 소프트웨어를 빠르게 개발하기 위한 방법론이다.

  • 고객과의 지속적 소통: 개발 초기부터 끝까지 고객과의 긴밀한 소통.
  • 테스트 우선 개발 (TDD): 기능을 구현하기 전에 테스트 코드를 작성하고, 이를 통과시키며 개발.
  • 작은 배포: 작은 단위로 자주 배포하여 빠르게 피드백을 받음.
  • 페어 프로그래밍: 두 명의 개발자가 하나의 컴퓨터에서 협업하여 코딩을 진행.
profile
하루 최소 1시간이라도 공부하자..

0개의 댓글

관련 채용 정보