반응형

 

소프트웨어 생명 주기(Software Lift Cycle)

소프트웨어 개발 방법론의 바탕이 되며 운용, 유지보수 등의 과정을 각 단계별로 나눈것을 의미하며 일반적으로 사용되는 모형에는 폭포수 모형, 프로토 타입 모형, 나선형 모형, 애자일 모형 등이 있습니다.

 

A. 폭포수 모형(Warterfall Model)

폭포수와 같이 한번 떨어지면 거슬러 올라갈 수 없듯이 이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히하여 결과를 철저하게 검토 및 승인 과정을 거친 후 다음 단계로 나아가는 개발 방법론

  1. 전통적인 소프트 웨어 생명 주기 모형 (고전적 생명 주기 모형)
  2. 선형 순차적 모형
  3. 다음 단계를 수행하기 위한 결과물을 명확하게 산출되며 두개 이상의 과정이 병행하여 수행될 수 없음

 

 

B. 프로토 타입 모형(Prototype Model, 원형 모형)

사용자의 요구사항을 정확히 파악하기 위해 개발할 소프트웨어의 시제품(Prototype)을 만들어 최종 결과물을 예측하는 모형

  1. 시제품(Prototype)은 의뢰자 및 개발자 모두에게 공동의 참조 모델이 됨
  2. 시스템의 일부 혹은 시스템의 모형을 만드는 과정(요구된 소프트웨어를 구현)하며 이는 추후 구현 단계에서 사용할 골격 코드가 됨
  3. 단기간 제작을 목적으로 사용됨 → 비효율적인 언어나 알고리즘이 사용될 가능성이 있음

 

 

C. 나선형 모형(Spiral Model, 점진적 모형)

폭포수 모형과 프로토타입 모형의 장점+위험 분석 기능을 추가한 모형으로써 보헴(Boehm)이 제안한 모형

  1. 나선처럼 여러 번의 개발 과정을 거쳐 점진적으로 최종 소프트웨어를 개발
  2. 위험을 관리 및 최소화 하는것을 목적으로 함
  3. 핵심 기술에 문제가 있거나 요구사항이 이해하기 어려운 경우에 적합한 모델
  4. 점진적으로 개발 과정이 반복되어 누락되거나 추가된 요구사항을 첨가할 수 있음(정밀 및 유지보수 과정이 필요치 않음)

 

 

-------------------- 애자일 정리 예정

 

 

 

 

 

 

반응형
반응형

 

STS3에서 MVC Project를 찾을 수 없음(STS MVC Project invalid thread access, org.springframework.samples.mvc failed)

2월 이후 STS3 버전을 다운로드 받고 워크스페이스를 변경하면 Spring MVC Project를 찾을 수 없는 현상이 발생했습니다.

일부 블로그에서는 워크스페이스\.metadata\.plugins\org.springsource.ide.eclipse.commons.content.core에 https-content.xml을 작성하면 MVC Project를 생성할 수 있다는 글도 있지만, 프로젝트 생성 시 보이기는 하지만 만들수는 없는 현상이 발생 했습니다.

※ https-context.xml을 넣어서 프로젝트를 생성할 때 MVC Proejct를 보이게끔 해주어야 합니다. 해당 파일은 이후 업로드 예정입니다. 
※ 기존에 사용하던 프로젝트가 있으신 분들은 https-context.xml을 가져와서 넣으시면 됩니다.

 

Spring 홈페이지나 여러가지 레퍼런스들을 찾아봣지만 그렇다할 오피셜은 없었습니다. https-content.xml을 봣을 때 MVC Project를 다운로드 받기 위한 URL을 어떠한 이유로 차단하고 있거나, 더이상 서비스하지 않는것으로 추측됩니다. (이슈로 인해 잠시 안되는 것인지, MVC Project에 대한 지원이 아예 종료된것인지는 확인이 되지 않습니다.)

https-content.xml

 

URL을 통해 다운로드를 받아오지 않고 아래에 배포한 zip 파일을 직접 워크스페이스\.metadata\.sts\content\org.springframework.templates.mvc-3.2.2에 넣음으로써 해결할 수 있습니다.

 

※ 해당 zip 파일에 있는 내용은 이전에 작업하셨던 프로젝트가 있다면 해당 경로에 찾아가면 있습니다. 기존 프로젝트가 있으신 분이라면 워크스페이스\.metadata\.sts\content\org.springframework.templates.mvc-3.2.2 경로로 이동하여 파일들을 새로운 워크스페이스 경로에 넣으시면 됩니다.

 

org.springframework.templates.mvc-3.2.2.zip
0.01MB

 

반응형
반응형

 

문제 링크 : https://www.acmicpc.net/problem/1764

 

[백준] 1764번: 듣보잡 (실버4, 자료 구조, 문자열, 정렬해시를 사용한 집합과 맵, JAVA)

해당 문제는 N과 M의 중복 개수와 이름을 출력하는 문제입니다. (중복 개수 출력을 못봐서 두 개의 케이스로 풀었습니다..)

 

1. getOrDefault를 사용한 풀이

getOrDefault는 지정된 값을 찾아서 없다면 기본값을, 있다면 값에 1을 더하여 사용했습니다. map.put(name, map.getOrDefault(name,0) +  1);  으로 사용을 했는데 name값이 있다면 value를 1 증가 시키고 없다면 기본값(0)을 반환시키도록 하는 함수입니다.

보도 못한(M) 사람을 입력받고 해당하는 키가 있다면 값을 1 증가, 증가된 값이 2라면 중복되는 값이기 때문에 list에 넣습니다. 이후 Collections.sort를 사용하여 듣보잡 리스트(list)를 정렬시키고 list의 사이즈와 요소를 출력합니다.

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        int N = Integer.parseInt(input[0]);
        int M = Integer.parseInt(input[1]);
        Map<String, Integer> map = new HashMap<>();
        List<String> list = new ArrayList<>();

        for (int i = 0; i < N; i++) {
            String name = br.readLine();
            map.put(name, 1);
        }
        
        for (int i = 0; i < M; i++) {
            String name = br.readLine();
            map.put(name, map.getOrDefault(name,0) +  1);
            if (map.get(name) == 2) {
            	list.add(name);
            }
        }
        
        Collections.sort(list);
        System.out.println(list.size());
        for(String s : list) {
        	System.out.println(s);
        }
    }
}

 

2. containsKey를 사용한 풀이

containsKey는 해당하는 키가 있는지 확인해주는 함수입니다. 두번째 for문에서 containsKey를 사용하여 입력받은 값이 현재 map의 키에 있는지 확인하고, 있다면 names 리스트에 추가합니다.

이후 모두 구했다면 듣보잡은 names 리스트에 추가되어 있으므로 정렬 후 사이즈와 요소를 출력합니다. 

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        int N = Integer.parseInt(input[0]);
        int M = Integer.parseInt(input[1]);
        Map<String, Integer> nameCountMap = new HashMap<>();
		List<String> names = new ArrayList<>();
        
        for (int i = 0; i < N; i++) {
            String name = br.readLine();
            nameCountMap.put(name, 0);
        }
        
        for (int i = 0; i < M; i++) {
            String name = br.readLine();
            if (nameCountMap.containsKey(name)) {
            	names.add(name);
            }
        }
        
        Collections.sort(names);
        System.out.println(names.size());
        for(String s : names) {
        	System.out.println(s);
        }
    }
}

 

반응형
반응형

 

문제 링크 : https://www.acmicpc.net/problem/1526

 

1526번: 가장 큰 금민수 (브론즈1, 수학, 구현, 브루트포스 알고리즘, JAVA)

수를 하나 입력받고, 4와 7로만 이루어진 숫자의 최댓값을 구하는 문제입니다. 전체 코드는 아래와 같은데, 값을 입력받은 후 해당 숫자를 char 배열로 변환합니다.

이후 각각의 char 배열에 7또는 4가 있는지 확인하고 count를 증가시키게 되는데, count가 char 배열의 길이와 같을 경우 모든 값이 4또는 7로 이루어진 문자이기 때문에 출력 후 종료합니다.

만약, 같지 않다면 입력받은 값(N)에서 1씩 감소시키며 원하는 값을 찾을때까지 반복합니다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

   public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        while(true) {
           char[] ch = Integer.toString(N).toCharArray();
           int count = 0;
           for(int i=0; i<ch.length; i++) {
              if(ch[i] == '7') {
                 count++;
              } else if(ch[i] == '4') {
                 count++;
              }
           }
           
           if(count == ch.length) {
              System.out.println(N);
              break;
           }
           
           N--;
        }
   }
}

 

반응형

+ Recent posts