AI_Tech부스트캠프 week6...[1]AI 개발기초(1) 소프트웨어 엔지니어링과 AI 엔지니어링

Leejaegun·2024년 9월 10일

AI_tech_CV트랙 여정

목록 보기
6/74

1. Software Engineering 이란

->소프트웨어를 개발하는 과정에서 체계적이고 효율적인 방법을 사용하여 소프트웨어의 품질과 유지보수성을 보장하는 학문분야
(Software is a set of Computer program and associated documentation and data. )

1.1 방법론

1) Planning
2) Analysis
3) Design
4) Implementation
5) Testing & Integration
6) Maintenance
->1) ~6) 까지 계속 반복.

2. "좋은" 소프트웨어 설계

2.1) 모듈성

  • 모듈 : 고유한목적,기능을 가지는 단위
  • 소프트웨어 개발의 모듈성은 큰 프로그램을 작고 독립적인 부분으로 나누는 것을 의미

2.2) 응집도

  • 응집도 : 시스템의 모듈 구성 요소가 목적을 달성하기 위해 관련되어 있는 정도

낮은 응집도


-> 하나의 모듈이 여러가지 기능을 담당하고 공동의 목적이 없고 관련되어 있지 않음

높은 응집도

각각의 모듈이 긴밀하게 엮이고 각각의 모듈이 하나의 역할 담담.

👉Class, 객체지향 사고 필요
하나의 Class 에 모든 기능을 구현하는 것이 아닌, 목적에 맞게 나누고 서로 교류하는 인터페이스

2.3) 결합도

  • 모듈들의 상호 의존성

좋은 소프트웨어란, 높은 응집도 + 낮은 결합도를 가진 소프트웨어다.

2.4) 테스팅


테스팅이란, 사용자들에게 안정적으로 소프트웨어를 사용할수
있도록,기능이 추가될 때 기존시스템에서 오류가 생기는지 버그가 있는지등을 확인하는과정

테스팅 종류

    1. Unit test : 개별단위
    1. Integration test: 다른 단위, 구성요소 테스트
    1. End to End Test : 처음부터 끝까지 테스트
    1. Performance Test : 성능, 부하 테스트

2.5) 문서화

문서화 : 소프트웨어를 이용하기 위함 README, API문서, 아키텍처문서

2.6) 소프트웨어 엔지니어링 배워야 하는 이유.

머신러닝 모델ML 은 위에 저 작은 점에 불과
👉 머신러닝 모델을 실제 유저에게 사용하게 할려면, 소프트웨어 엔지니어링을 하게 될 것.
-> 소프트웨어 엔지니어링 관점에서도 생각해야함.

ex) Twitter engineering

머신러닝은 거대한 구조 속에 일부.

-> 서비스에 AI기술들을 적용하기 위해서 서비스를 만들어내는,소프트웨어 엔지니어링을 이해하는 것이 중요

3. AI engineering

3.1 AI engineering이란?

AI 를 개발하는 것 -> MLDL,LLM 등 여러 범위를 포함함.

3.2 AI engineering Work.

4. Software engineering과 AI engineering 차이

5. AI engineering Case

5.1 Uber


시간대별 지역별 수요예측을 한 후에, 수요가 많은 지역으로 미리 자동차 배치
또한 이상탐지, ETA(Estimated Time of Arrival) 등등 예측.

5.2 도어대시


개인화 추천에 그래프 알고리즘 사용.

5.3 듀어링고


학습에 도움을 주는 AI

5.4 구글


이미지를 AI를 이용하여 검색할 수 있게금 함.

6. 책 추천

  1. Clean code
    https://www.oreilly.com/library/view/clean-code-a/9780136083238/

  2. Design Patterns:
    https://www.oreilly.com/library/view/design-patterns-elements/0201633612/

profile
Lee_AA

0개의 댓글