본문 바로가기

SW공학20

[SW공학] 기능점수(Function Points)의 개념과 산정방식, 예시 SW 개발단가를 주로 LoC(Line of Code) 기준으로 산정하곤 합니다. 단순히 코드량을 기준으로 보수를 측정하는 방식으로, 하청을 받는 중소기업 개발자를 '단순 코더'로 만든 주범이기도 합니다. 그래서 간혹 클린코드와는 전혀 거리가 먼 '복붙 코드'나 '하드 코딩'을 보기도 합니다. 반면 기능점수는 '기능별 난이도'를 고려해서 개발단가를 산정하는 방식입니다. 이에 대한 설명과 산정 방식을 알아보도록 하겠습니다. [ Contents ] 1. 기능점수 (Function Points) 소프트웨어의 각 기능별로 가중치를 부여한 산출방식 기능별로 구현 난이도는 다르므로, 가중치를 두어 개발단가(개발 규모)를 산정하는 방식입니다. 지금도 단순 명료한 LoC 방식을 많이 사용하지만, 최근에는 기능점수(FP).. 2023. 8. 4.
[SW공학] 작업 네트워크의 임계경로[CPM]: 가장 늦게 시작하는 날, 가장 빨리 시작하는 날, 여유 기간 구하는 방법 CPM은 SW공학에서 프로젝트를 효율적으로 관리하는 기법 중 하나입니다. 네트워크 구조로 작업 간 선후체계를 표시하고, 임계경로를 구해서 전체 프로젝트 일정을 조율합니다. 이 글에서는 CPM에서 작업 네트워크를 그리고, 임계경로와 각 작업별 최소 시작 시간(Earliest Start Time), 최대 종료 시간(Latest Finish Time), 여유 시간(Slack Time)를 구해보는 실습을 해보겠습니다. [ Contents ] 1. CPM(Critical Path Method) 작업별 선후체계를 그래프로 나타낸 작업 네트워크 작업 작업 내용 선행 작업 소요 기간 (일) S 시작 - - A 인터뷰 S 8 B 포커스그룹 S 15 C 설문조사 S 10 D 리팩토링 및 유지보수 S 25 E 기획설계 A,.. 2023. 8. 3.
[SW공학] CASE 자동화 도구의 개념과 종류 CASE 자동화 도구에 대한 개념과 그 종류에 대해서 알아보겠습니다. [ Contents ] 1. CASE (Computer Aided Software Engineering) 소프트웨어 개발 방법론의 자동화를 지원하는 일련의 도구 CASE는 프로젝트 계획, 요구 분석, 설계부터 프로그래밍, 테스트까지 자동화한 통합 개발 도구입니다. 모든 단계에 걸쳐 일관된 방법론을 지원하며, 개발 속도와 편의성이 올라가는 장점이 있습니다. 정형화된 구조와 방법을 사용하기 때문에, 대규모 시스템 구축 업무도 효율적으로 할 수 있다고 합니다. 2. CASE 분류 상위 CASE: 프로젝트 계획 수립, 요구 분석, 설계 중위 CASE: 자료 설계 하위 CASE: 프로그래밍, 설계 (DB) 프로그래밍 뿐만 아니라, 문서 작성까지.. 2023. 4. 28.
[SW공학] 리팩토링과 소프트웨어 역공학(리버스 엔지니어링) 기존 소프트웨어의 유지보수를 용이하게 하기위해, 리팩토링과 소프트웨어 역공학을 수행합니다. 이러한 작업에 대해서 알아보겠습니다. [ Contents ] 1. 리팩토링 (Refactoring) 기능(동작) 변경 없이, 코드 가독성 향상이나 유지보수가 용이하도록 하는 작업 리팩토리는 성능 향상을 위해 하는 작업이 아닙니다. '코드 다듬기'에 가까우며, 복잡하거나 중복된 코드를 개선하거나 주석을 덧붙이는 작업입니다. 따라서 개발 중에 리팩토링을 하는 건, 사실상 아무런 진전이 되지 못합니다. 다만 추후에 유지보수할 때에는 큰 도움이 될 수 있겠죠. 물론 처음부터 코드를 잘 짜는 게 좋겠지만, 그게 안된다면 틈날 때마다 코드를 다듬어주는 게 좋습니다. 2. 소프트웨어 역공학 (Reverse Engineering.. 2023. 4. 28.
[SW공학] 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트 소프트웨어 공학에서는 유닛테스트, 통합 테스트, 시스템 테스트, 인수 테스트를 거쳐 개발을 완료하게 됩니다. 해당 테스트 과정을 자세히 알아보겠습니다. [ Contents ] 1. 단위 테스트 (Unit Testing) (설계상) 최소 단위인 '모듈(Module)'의 동작 검증 '유닛 테스트' 라고도 불립니다. 주로 모듈 개발 후, 제대로 동작하는지 화이트박스 기법으로 테스트합니다. 2023.04.28 - [CS] - [SW공학] 화이트박스 테스트, 블랙박스 테스트의 개념과 종류 [SW공학] 화이트박스 테스트, 블랙박스 테스트의 개념과 종류 소프트웨어 공학의 테스트 기법에는 크게 화이트박스 테스트와 블랙박스 테스트가 있습니다. 해당 테스트 기법의 개념과 종류에 대해서 알아보겠습니다. [ Contents .. 2023. 4. 28.
[SW공학] 화이트박스 테스트, 블랙박스 테스트의 개념과 종류 소프트웨어 공학의 테스트 기법에는 크게 화이트박스 테스트와 블랙박스 테스트가 있습니다. 해당 테스트 기법의 개념과 종류에 대해서 알아보겠습니다. [ Contents ] 1. 화이트박스 (White Box) 테스트 소스코드를 통해 소프트웨어 내부 구조나 동작을 세밀하게 검사하는 기법 '화이트박스'는 속이 훤히 보이는 투명상자를 뜻합니다. 소스코드를 직접 뜯어보면서 테스트하는 기법으로, 프로그램 내부 구조나 동작을 꼼꼼히 검사할 수 있습니다. 테스트 종류에는 '제어흐름(조건문, 반복문)', '데이터 흐름(변수, 자료구조)', '분기', '경로' 테스트가 있습니다. - 테스트 검증기준 (커버리지, Coverage) 1) 문장 검증: 모든 문장이 한 번씩은 수행하는지 (안 쓰는 코드가 있는지) 2) 조건 검증:.. 2023. 4. 28.
[SW공학] 디자인 패턴: 생성, 구조, 행위 패턴의 종류 디자인 패턴은 개발자들이 객체지향 프로그래밍에서 자주 쓰는 코드 모음입니다. 이러한 종류에는 크게 생성 패턴, 구조 패턴, 행위패턴이 있습니다. 종류별로 어떤 디자인 패턴이 있는지 알아보겠습니다. [ Contents ] 1. 디자인 패턴 (Design Pattern) 객체 지향 프로그래밍에서 각 유형별로 가장 적합한 설계를 일반화하여 체계화한 패턴 객체 지향 프로그래밍에서 자주 발생한 문제들을 회피하고, 성능 및 개발 편의성을 높이기 위한 족보입니다. 베이스 코드라고 볼 수 있죠. 이미 수많은 개발자들이 수많은 프로그램을 개발했고, 그들의 프로그래밍에는 일련의 공통점이 있습니다. 자주 사용하는 솔루션이 생기기 시작했고, 그러한 것들이 모여 '디자인 패턴'이 되었습니다. 2. 생성 패턴 (객체 생성) - .. 2023. 4. 28.
[SW공학] UML 다이어그램의 종류: 유즈케이스, 클래스, 시퀸스, 상태, 액티비티, 복합 구조, 컴포넌트, 배치 소프트웨어 공학에서는 UML 다이어그램으로 시각화하여 설계합니다. 그 예시로는 유즈케이스 다이어그램, 클래스 다이어그램, 순서 다이어그램, 상태 다이어그램, 액티비티 다이어그램, 복합 구조 다이어그램, 컴포넌트 다이어그램, 배치 다이어그램이 있으며 이를 자세히 알아보겠습니다. [ Contents ] 1. 사용 사례 다이어그램 (Use case Diagram) 사용자의 관점에서 시스템의 기능과 관계를 나타낸 다이어그램 보통 '유즈케이스 다이어그램'이라고 부릅니다. 사용자의 요구를 추출하고 분석하는 데에 사용합니다. cf) 유즈케이스 다이어그램에서 화살표의 의미 : include: 필수적으로 필요한 기능, extend: 부가적으로 필요한 기능 2. 클래스 다이어그램 (Class Diagram) 소프트웨어 내.. 2023. 4. 27.
[SW공학] 소프트웨어 아키텍처: MVC, 이벤트 기반, 파이프 필터 소프트웨어 아키텍처는 전체 시스템 구조도로, 소프트웨어 성향에 따라 다양한 아키텍처 패턴을 사용합니다. 그중 많이 쓰이는 MVC 패턴, 이벤트 기반(Event-driven) 패턴, 파이프 필터 패턴을 알아보겠습니다. [ Contents ] 1. 소프트웨어 아키텍처 소프트웨어의 구성요소와 (외부) 특성, 그리고 구성 요소 간 관계를 표현한 시스템 구조도 소프트웨어 아키텍처는 구성요소(컴포넌트) 간 인터페이스와 인터랙션을 한눈에 보기에 좋습니다. 전체적인 시스템 구조를 표현하며, 사용자의 요구를 바탕으로 시스템을 설계하는 중요한 단계입니다. 위 예시는 클라이언트 서버(Client-Server) 아키텍처로, 사용자와 서버와의 인터페이스와 인터랙션을 중심으로 그려진 설계도입니다. 이외에도 MVC, 이벤트 기반,.. 2023. 4. 27.