소프트웨어공학

‍이세현·2024년 10월 15일
1

소프트웨어 공학은 기능적 요구사항, 비기능적 요구사항을 제대로 구현하기 위한 체계적인 절차, 소프트웨어 아키텍처 설계와 구현, 사람과 사업 측면에서의 소프트웨어 Management에 대한 것을 다루는 학문이다.

소프트웨어 엔지니어링 구성요소: 소프트웨어 개발 절차, 소프트웨어 구조, 소프트웨어 개발 도구

Development Process Model

매번 프로세스를 새로 만드는 것은 번거로우므로 model을 사용한다.

Plan Driven Process

  • 모든 절차가 사전에 수립된 계획에 의해서 진행되고 평가된다.
    • 사전에 전체 과정을 계획해야 한다.
  • 비행기, 자동차 등 요구사항이 지속적으로 바뀌지 않는 경우 주로 사용한다.
  1. Waterfall Process Model
    • 가장 전통적인 모델로, 물이 흘러가는 모양과 같다.
    • 요구사항 분석 → 설계 → 구현(coding) → 검증 → 유지보수
  2. V-Cycle Process Model
    • Verification/Validation이 강조된 모델
    • 자동차 등 Safety가 중요한 시스템 개발에 주로 채택된다.
    • ISO 26262 같은 표준에 적용되어 있는 모델이다.
    • Verification(설계) → 구현 → Validation(검증)

Agile Process

  • Early Release & Continual Evolution
    • 요구사항을 빠르게 반영하여 조기에 초기 버전의 소프트웨어를 완성한다.
    • 이후 계속적인 요구사항 변화에 기민하게 반응하여 지속적으로 진화시킨다.
  • Software Defined Vehicle을 위해 자동차 분야에서도 빠르게 적용하고 있다.
    • 자동차의 경우 내부적으로 먼저 출시하는 것 또한 early release에 포함된다.
  • 대표적인 Agile Process: Scrum
    • 완벽한 요구사항 분석이 불가능한 경우
    • 참가 인원
      • Product Owner: 제품 책임자
      • Team: 개발팀
      • Scrum Master: 애자일 프로세스 코치. 절차가 잘 진행되는지 확인하는 역할
    • 주요 개념
      • Sprint: 2~4주 단위의 tasks
      • Daily stand-up: 15분 이하의 짧은 미팅
    • Sprint과 Review, 짧은 plan을 반복한다.
  • Agile 방법론과 연계하여 개발과 운영을 한팀에서 진행하는 DevOps 방법론도 있다.

Configuration Management

  • 소프트웨어의 전주기적 변화를 관리하는 방법
    • Meta Operation을 관리하는 것
    • 소프트웨어 개발 과정에서 소프트웨어의 변경 사항을 추적하고 제어하는 프로세스
  • Version Control: 소스코드의 변경 내역 관리
  • Build Management: 빌드 자동화
  • Change Management: 변경사항이 어디에 영향을 미치는지 분석
  • Release Management: 제품 릴리즈 관리

Software Architecture

Layered Architecture

  • 추상화 수준에 따른 구조
  • 21세기의 모든 소프트웨어는 Layered Architecture 기반으로 설계된다.
  • Hardware → OS → Virtualization → Middleware → Application Framework → Applications
  • 자율주행 아키텍처로 Apollo가 있다.

Data Stream Architecture: ROS-based Autoware

  • 센서가 포함된임베디드 시스템에서 사용하는 아키텍처
  • ROS는 middleware에 해당한다.

Tools

  • 통합 개발 환경(Integrated Development Environmet)
    • VS code와 같이 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어
  • 코드 에디터
    • IDE와 달리 하나의 파일에 대해서 수정할 때 용이하다.
  • 컴파일러
  • 소스코드 버전 관리 도구
    • Jira, Confluence(wiki 기능), Jenkins 등
  • 소스코드 빌드 도구
profile
Hi, there 👋

0개의 댓글

관련 채용 정보