[Software Engineering] 소프트웨어와 소프트웨어 공학!

isitcake_yes·2023년 3월 28일
0

소프트웨어공학

목록 보기
1/4
post-thumbnail

⚙️소프트웨어 공학

💡 소프트웨어(Software)란?

  • 소프트웨어란? 컴퓨터 시스템을 효율적으로 운영하기 위해 개발된 프로그램의 총칭이다.

  • 소프트웨어의 예시

    • 운영체제: 컴퓨터 하드웨어와 사용자 소프트웨어 사이에서 중재하는 소프트웨어. Windows, macOS, Linux 등
    • 어플리케이션 소프트웨어: 특정 작업을 수행하기 위한 소프트웨어. 워드프로세서, 그래픽 에디터, 게임, 웹 브라우저 등
    • 시스템 소프트웨어: 하드웨어와 소프트웨어 간의 상호작용을 관리하고, 시스템 자원을 효율적으로 사용하는 소프트웨어. 디바이스 드라이버, 보안 소프트웨어, 데이터베이스 관리 시스템 등
    • 프로그래밍 언어 및 개발도구: 소프트웨어를 개발하기 위한 도구. C++, Python, Java 등
    • 모바일 어플리케이션: 스마트폰이나 태블릿 PC에서 사용하는 소프트웨어. 캘린더, 메모장, 카메라, 게임 등
    • 인공지능 및 기계 학습 소프트웨어: 기계 학습 알고리즘 등을 사용하여 인간의 지능적인 역할을 수행하는 소프트웨어. 스피치 리코그니션, 언어 번역, 이미지 인식 등

    이처럼 소프트웨어는 우리 일상 생활에서 굉장히 많이 사용되고 있으며, 더욱 빠르고 효율적인 작업을 가능하게 해준다.


💡 소프트웨어 공학(Software Engineering)이란?

  • 소프트웨어 공학이란? 소프트웨어 개발 전체 생명주기(life cycle)에서 요구사항 분석, 설계, 구현, 테스트, 유지보수 등과 같은 과정을 체계적으로 수행하며, 효율적이고 안정적인 소프트웨어를 개발하는 방법을 연구한다.

  • 소프트웨어 공학의 목표는 고품질의 소프트웨어를 효율적으로 개발하고, 비용과 시간을 절약하여 소프트웨어 프로젝트를 성공적으로 완료하는 것이다. 이를 위해 소프트웨어 개발자는 소프트웨어 개발 프로세스의 다양한 단계에서 공학적 기법과 원칙을 적용하여 소프트웨어의 품질을 향상시키고, 유지보수 가능성을 높이며, 프로젝트 일정과 예산을 준수할 수 있도록 해야한다.


💡 오늘날의 소프트웨어

  • 소프트웨어 역할의 변화
    • 비지니스 지원 역량에서 -> 비지니스 자체 (핵심역량)으로 변화
  • 고객, 사용자, 개발자의 변화
    • 밀레니얼 세대. 세대별 특징 파악 필요
  • 더 많은 이해관계자, 개발 복잡도 증가
    • 융합기술 / 기업간 협력 / 산업간 협력 등
  • 컴퓨팅 환경의 복잡도 증가
  • 오픈 아키텍쳐, 소프트웨어 플랫폼화를 통한 생태계 구축
  • 유연한 소프트웨어, 외부서비스와의 간편한 통합
  • 더 빨리, 더 자주 업데이트하는 소프트웨어
  • 글로벌화, 시간과 공간에 대한 새로운 니즈 (24 * 7 * 365 서비스)

--> 하지만, SW 프로젝트의 현주소는...

  • 프로젝트 성공율은 약 14%정도 (대규모 프로젝트의 성공율은 약 6%정도)
  • 실패요인
    • 개발생산성에 비해 소프트웨어 복잡도가 급격히 증가 -> 프로젝트의 비용, 시간 초과 ...

--> SW 프로젝트가 성공하기 위해서는...

  • 소프트웨어 프로세스(Software Process = 일하는 방식)가 중요하다. ⭐️⭐️⭐️
    • 제품 뿐 아니라, 소프트웨어 프로세스에 대한 평가가 중시되고 있음.
  • 소프트웨어 프로세스에 따른 체게적인 설계가 필요하다.
    • 실제 현업에서는 체계적이지 못한 경우가 매우 많음.. 처음으로 다시 돌아와서 다시 시작하는 경우도 많음..



다음 게시물에서는 소프트웨어 프로세스에 대해 자세히 알아보자!!!

* 소프트웨어 공학을 공부하며 작성할 시리즈 입니다. 화이탱~!

profile
주니어 개발자 주니어발록 주니어예티 주니어레이스

0개의 댓글