ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 소프트웨어 엔지니어링
    CS 공부/AI 2023. 4. 24. 20:08

    소프트웨어의 다양한 분야

    - 프론트엔드: 웹페이지의 앞단

    - 백엔드: 데이터 처리, 연산, API 등을 진행

    -  풀스택: 프론트엔드+백엔드

    - 머신러닝, AI

    - 데이터

    - 모바일 앱: 앱 개발

    - 게임

    - DevOps, 클라우드: 클라우드 리소스 효율적으로 사용

    - 보안 등

     

    소프트웨어 개발 라이프사이클

    1) Planning: 계획

    2) Analysis: 요구 조건 분석

    3) Design: 설계

    4) Implementation: 구현

    5) Testing & Integration: 테스트

    6) Maintenance : 유지 보수

     

    좋은 소프트웨어 설계

    1) 모듈성

    • 레고 블록을 사용해 장난감을 만드는 것
    • 큰 프로그램을 작고 독립적인 부분으로 나누는 것을 의미
    • 여러 함수가 모여 하나의 모듈을 이루고, 모듈끼리 서로 영향을 줌

    2) 응집도

    • 시스템의 모듈 구성 요소가 목적을 달성하기 위해 관련되어 있는 정도
    • 하나의 모듈 안에서 각각의 함수가 서로 엮여서 동작
    • 낮은 응집도: 공동의 목적이 없고, 관련되어 있지 않음
    • 높은 응집도: 각각의 모듈이 긴밀하게 엮이고, 하나의 역할을담당
    • 하나의 Class에 모든 기능을 구현하는 것이 아닌, 목적에 맞게 나누고 서로 교류하는 인터페이스

    3) 결합도

    • 모듈 간 상호 의존성의 정도
    • 낮은 결합도: 하나의 함수 내부 구현이 바뀌어도 다른 함수가 영향을 받지 않음
    높은 응집도(모듈 내 교류)와 낮은 결합도(모듈끼리는 덜 교류)를 가진 소프트웨어 지향

    4) 테스트

    • 사용자들에게 안정적으로 소프트웨어를 사용할 수 있도록, 기능이 추가될 때 기존 시스템에서 오류가 생기는지 버그가 있는지 등을 확인하는 과정
    • 코드 뿐만 아니라 전체 시스템에 대한 확인
    • Unit Test(개별 단위), Integration Test, End-to-End Test(처음부터 끝까지), Performance Test(성능, 부하)

    5) 문서화

    • 소프트웨어를 이용하기 위한 README, API 문서, 아키텍쳐 문서
    서비스에 AI 기술들을 적용하기 위해서는 소프트웨어 엔지니어링도 학습해야한다

     

    'CS 공부 > AI' 카테고리의 다른 글

    Linux 쉘 스크립트  (0) 2023.04.25
    파이썬 버전 관리  (0) 2023.04.25
    📂 3D dataset & 3D task  (0) 2023.04.07
    Multi-modal learning  (0) 2023.04.06
    📷 Conditional generative model  (0) 2023.04.05
Designed by Tistory.