소프트웨어공학
독서 모임 신청이라는 작은 프로젝트 하나로 요구를 정하고, 모델과 모듈을 설계하고, 테스트로 확인하고, 계획과 품질과 변경을 관리하는 과정까지 따라가며, 규칙을 왜 만들었고 그 규칙이 지켜지는지를 어떻게 확인하는지 배웁니다.
프로그램은 코드만으로 완성되지 않습니다. 무엇을 만들지 정하고, 그 결정을 코드와 테스트로 옮기고, 바뀌는 요구에 맞추어 고치고, 문제가 생겼을 때 되살리는 일까지가 모두 소프트웨어를 만드는 일입니다. 이 교재는 독서 모임 신청이라는 작은 프로젝트 하나를 처음부터 끝까지 다루면서, 중복 신청과 정원과 취소와 마감의 규칙을 정하고, 그 규칙을 코드와 테스트, 저장과 복구까지 이어 갑니다.
프로그래밍 경험이 많지 않아도 1장부터 차례로 읽으면 됩니다. 실습은 JavaScript로 하며, 실행 환경과 작은 프로그램에서 Node.js를 설치하고 첫 프로그램을 실행하는 것부터 시작합니다. 예제는 Node.js 24 이상과 그 안에 들어 있는 모듈만 쓰므로 따로 설치할 패키지가 없고, 모든 예제는 실제로 실행해 본문의 출력과 같은지 확인했습니다.
실습은 reading-lab이라는 폴더 하나에서 이어집니다. 기능 요구와 수락 조건에서 신청 규칙을 담은 core.mjs의 전체 코드를 만들고, 그 뒤의 글들은 이 파일을 가져다 쓰는 예제를 examples 폴더에 하나씩 더합니다. 폴더의 구성과 실행하는 위치는 소프트웨어와 개발 산출물에서 설명합니다.
예제의 회원 아이디는 모두 가상의 값이며, 프로그램은 프로세스 하나와 작은 로컬 자료만 다룹니다. 로그인, 결제, 여러 서버에서의 동시 처리, 실제 운영 배포는 이 교재의 범위 밖이므로, 범위를 넓힐 때는 따로 확인해야 합니다. 각 글의 연습 문제는 해설을 열기 전에 자기 답을 먼저 적어 보고, 틀렸다면 어떤 전제나 규칙을 놓쳤는지 설명해 보세요.
학습 경로
1단계 · 준비와 요구(1–2장)에서는 실행 환경을 갖추고 작은 신청 프로그램을 만든 뒤, 소프트웨어와 개발 산출물이 무엇인지 정리합니다. 이어서 사용자의 문제와 범위를 정하고, 신청 규칙을 결과 코드와 수락 조건으로 바꾸며, 품질에 대한 요구와 변경을 추적하는 방법을 다룹니다.
2단계 · 모델과 설계(3–4장)에서는 유스케이스로 사용자의 흐름을, 상태와 데이터 모델로 저장할 사실을, 화면 설계로 사용자에게 보여 줄 안내를 정합니다. 그리고 모듈을 나누는 기준, 결합도와 응집도, 인터페이스와 객체의 관계, 코딩 규칙과 코드 검토를 다룹니다.
3단계 · 테스트(5장)에서는 기대 결과를 요구에서 끌어내는 오라클, 동치 분할과 경계값 분석, 문장과 분기와 조건 커버리지, 통합과 인수와 회귀 테스트를 차례로 실행해 봅니다.
4단계 · 개발 방식과 구조(6–7장)에서는 폭포수 모델부터 애자일과 스크럼까지 개발 프로세스를 비교하고, 아키텍처의 관점과 디자인 패턴, 저장 방식을 바꾸어 끼우는 설계, 동시 저장과 복구의 문제를 다룹니다.
5단계 · 계획, 품질, 변경(8–10장)에서는 작업을 나누고 규모와 일정을 추정하며 기능점수를 계산합니다. 이어서 품질 모델과 유지보수, 측정과 검토를 다루고, 형상 관리와 릴리스, 기존 시스템의 역공학으로 교재를 마무리합니다.
다른 교재로 이어가기
프로세스와 스레드, 동시에 실행되는 작업을 운영체제가 어떻게 다루는지는 운영체제에서, 트랜잭션과 데이터 모델은 데이터베이스에서 더 깊이 다룹니다. 이 교재의 JavaScript 예제에 타입을 붙여 더 안전하게 만들고 싶다면 TypeScript로 이어 갈 수 있습니다. 자격시험의 답안 형식이 필요하면 정보관리기술사 교재를 참고할 수 있습니다.
장별 목차
1장 준비와 개발의 대상
2장 문제에서 검증 가능한 요구로
3장 사용자 흐름과 모델링
4장 모듈과 코드 설계
5장 오류를 발견하는 테스트
6장 개발 방식과 반복
7장 아키텍처와 패턴
8장 계획과 불확실성
9장 품질과 유지보수
10장 변경·릴리스·재구조화
다 읽은 뒤에는 용어를 얼마나 외웠는지보다, 신청 규칙 하나를 두고 왜 그렇게 정했는지, 그 규칙을 어떤 사례로 확인하는지, 규칙이 바뀌면 무엇을 함께 고쳐야 하는지를 스스로 설명할 수 있는지 점검해 보세요.