본문 바로가기
카테고리 없음

소프트웨어 공학과 이해 정리 개념

by bazz 2022. 11. 8.
반응형

노트북과 검은 화면과 글씨

1. 정의와 특징 그리고 분류법

컴퓨터에 작업을 수행시키기 위한 명령 집합으로 프로그램이라고도 불린다. 프로그램, 문서, 데이터(정보)를 합한 것을 소프트웨어라 한다. 소프트웨어 구조는 프로그램 코드 내부에 존재하여 전체적인 윤곽(구조) 파악 어려운 비가시성을 가진다. 소프트웨어는 규칙적이고 정형화된 구조가 없어 이해하고 관리하는 데 어려운 복잡성을 가진다. 소프트웨어는 사용자 요구나 환경 변화에 따라 적절한 변형 용이한 순응성을 가진다. 하드웨어는 제조하여 만들어지는 것, 소프트웨어는 개발되는 것 즉 비제조 성이 있다. 하드웨어는 시간 경과에 따라 마모되어 품질(운영 성공률) 저하되고 소프트웨어는 사용자의 다양한 유지보수에 따른 수정 때문에 품질 저하하는 비 마모성이 있다. 하드웨어는 부품 조립에 의해 생산, 소프트웨어는 주문 제작에 의해 개발되는 비 조립성을 가진다. 소프트웨어는 여러 분류로 나뉘게 된다. 실시간, 임베디드, 지능, 경영정보, 등 다양하게 있다. 크게는 두 가지로 나누어볼 수 있는데 응용 소프트웨어는 사용자의 작업 수행을 돕기 위한 소프트웨어이고 경영정보, 의료용, 학사관리, 게임, 문서편집기, 등을 담당한다. 시스템 소프트웨어는 응용 소프트웨어 개발자를 위한 소프트웨어이고 운영체제, 장치 드라이버, 유틸리티를 예시로 들 수 있다. 즉 소프트웨어 공학은 실세계에서 사용자의 실질적인 문제 해결을 위해 소프트웨어 개발에 과학적인 원리를 체계적으로 적용하는 학문 분야라고 할 수 있다. 

2. 프로세스, 방법, 도구로 나누어 생각해보자

프로세스는 제품 생산을 위해 수행되는 일련의 순차적인 활동을 말한다. 소프트웨어 개발 프로세스는 소프트웨어 제품을 개발하기 위한 일련의 순차적인 활동으로 소프트웨어 공학의 가장 기본 주제이다. 계획, 분석, 설계, 구현, 테스트, 유지보수의 순서로 진행된다. 계획의 세부 활동으로 문제 영역에 대한 기본적인 이해와 상위수준의 요구 파악을 통하여 시스템의 목적과 범위를 정의한다. 위험 분석을 통해 프로젝트에 대한 경제성, 기술력 자원 일정에 대한 위험성, 타당성을 분석한다. 프로젝트 수행에 필요한 작업 일정 비용추정 인력조직, 자원에 대한 계획을 수립한다. 분석의 세부 작업으로 개발 소프트웨어에 대한 사용자 요구를 수집하고 이해하여 시스템이 무슨(what) 기능/비기는 요구를 제공해야 하는지 정의한다. 설계의 세부 작업으로 분석 단계에서 파악된 사용자의 기능/비기는 요구를 어떻게(how) 제공할 것인지 고민한다. 시스템의 전체적인 구조 외에 소프트웨어 구조와 각 모듈의 상세 절차에 대한 솔루션을 결정한다. 구현의 세부 작업으로 프로그래밍하는 단계로써 설계 문서를 바탕으로 코드로 변환하며 단위 모듈에 대한 검사를 수행한다. 테스트의 세부 작업으로 통합 모듈에 대한 테스트, 전체 시스템에 대한 기능/비기는 요구에 대한 만족도 테스트를 수행한다. 유지보수로 고객에게 소프트웨어를 인도한 후 발생하는 다양한 변경 요청을 수행한다.

3. 다양한 방법론으로 알아보기

1970년대부터 소개된 구조적 방법론(Structured Methodology)은 시스템을 데이터흐름에 기초하여 기능 중심으로 분할하고 하향식으로 분석하여 전체 시스템을 일관성 있게 이해하는 데 도움을 주며 하향식 계층적 구조와 모듈화 설계를 가능하게 하는 방법론이다. 1980년대 소개된 정보공학 방법론(Information Engineering Methodology)은 구조적 방법론과 다르게 데이터 중심의 분석/설계에 의한 데이터 모델링을 중시하며, 기능은 데이터 구조에 종속하는 방법론이다. 경영정보 시스템(MIS), 기업정보 시스템(EIS), 결정지원 시스템(DSS)과 같은 비즈니스 시스템 개발에 적용될 수 있는 방법론이다. 1 990년대 소개된 객체지향 방법론(Object-Oriented Methodology)은 구조적 방법론과 다르게 데이터와 데이터 관련 기능(행위)을 하나로 묶어 객체로 정의하여 객체중심으로 분석/설계하는 방법론이다. 대표적인 객체지향 방법론에는 마르미, UP, Objectory, OMT, OOA와 같은 방법론들이 있다. 2000년대 애자일 방법론(Agile Methodology)은 기존 방법론들이 실제 문제 해결보다는 문서 작성이나 프로세스, 도구 적용에 치중하는 것과 비교하여 고객과의 상호작용에 중점을 두는 방법론이다. XP, Serum, Adaptive Software Development, Crystal과 같은 애자일 방법론은 결과물에 대한 빈번한 릴리즈, 고객 평가 피드백, 반복 개발을 강조하는 방법론이다.

 

반응형

댓글