HW : 모든 물리적인 요소
SW : OS + 애플리케이션 : 프로그램(실행파일 + 라이브러리), 매뉴얼(자료), 데이터 등으로 구성
OS (Operating System) 운영체제
애플리케이션
데스크톱 앱 : PC에서 동작하는 앱. 프로그램이 PC에 설치되어있고, 데이터도 PC에 저장되어 있음. PC에 연결된 하드웨어를 제어
스마트폰 앱 : 스마트폰의 GPS 기능, 카메라, 네트워크, 센서 등의 하드웨어를 제어
웹앱 : 네트워크 접속이 전제됨. 인터넷 상에서 제공되는 서비스. 사용하려면 웹 브라우저 (SW)가 필요함.
SIer (System Integrator) : 기업마다 요구하는 기능이 달라 독자적인 앱을 구성. 각 기능을 서로 연계해야 동작해야 하므로, 시스템 전체를 고려해 설계, 개발, 운용을 모두 담당하는 기업. 안정적인 시스템 가동이 중요해서, 많은 기업에서 사용된 실적이 있는 기술이나 시스템을 사용하는 것이 일반적.
웹 계열 : SNS, 쇼핑 등 웹으로 서비스 제공하는 기업
임베디드 계열 : 가전제품, 게임기 등 하드웨어의 성능을 최대화하기 위한 SW.
패키지 벤더 : 소프트웨어 자체가 제품
SE (System Engineer) : 고객과의 조정이나 설계 작업 등 상류 공정을 중심으로 전체를 담당하는 사람. 고객 업무 이해도, 시스템 전체에 대한 폭넓은 지식, 커뮤니케이션 능력 중요
프로그래머 : 설계서를 바탕으로 실제 프로그램을 개발. 언어, 알고리즘 등에 정통하고 고품질의 프로그램을 작성
PM (Project Manager) : 프로젝트의 예산, 인원, 스캐쥴 관리 → 개발이 원활하게 진행되도록. 조직에 따라서는 Product Manager 등의 직책이 주어지기도 함.
테스터 : 제품 공개 전 테스트 하는 작업 담당
오퍼레이터 : 운용하는 사람
요구 분석 : 고객이 시스템화에서 요구하는 사항을 정리.
요건 정의 : 개발측이 비용 등 실현가능성을 고려해서 판단, 구현할 범위를 고객과 조정하여 문서로 작성.
설계
개발 - 테스트
워터폴 개발 모형 : 요건 정의 - 설계 - 구현 - 테스트 - 운용의 큰 흐름을 따라 개발을 진행함. 대규모 프로젝트에 많이 이용되며, 구현, 테스트 공정에 와서 이전 공정의 누락을 알게되면 수정이 힘들다. 재작업할 일이 생기지 않도록 상류 공정에서 주의 깊게 확인하고 문서 등을 정비한 후 개발을 진행함.
애자일 개발 모형 : 웹 시스템 개발 등에서는 변화가 심해, 사양을 명확하게 정하기가 어렵고, 기능 추가-변경이 빈번하게 발생 → 요건 정의에서 릴리스까지의 사이클을 작은 단위로 반복하는, 워터폴보다 대처가 유여한 개발 기법. 다만 워터폴과 비교하면 처음 견적과는 비용, 일정이 큰 폭으로 달라질 우려가 있고, 변경이 반복되므로 개발자의 동기 저하, 프로젝트 지연 등의 리스크가 있다.
애자일에서 사용되는 기법의 예
https://blog.naver.com/bebejin93/222818547687
애자일 SW 개발 선언
스파이럴 개발 모형 : 설계-프로토타입을 반복해서 개발하는 기법. 시제품을 만들어 의뢰자도 완성된 이미지를 확인할 수 있지만, 의뢰자의 요구가 많아지면 시제품만 만들다가 기간 내에 완성되지 않을 가능성이 있다.
코딩 : 설계서를 바탕으로 소스코드를 입력해 SW를 개발하는 프로그래밍 공정
종이에 흐름도나 UML (Unified Modeling Language) 을 쓰고나서 소스 코드를 입력하는 방법도 있다. (클래스, 속성 등의 관계도, 타입 등을 나타내는 듯)
실행, 운용환경 구축