전체 글
-
소프트웨어 공학(2) - 아키텍처 설계Computer Science/SW Engineering 2021. 12. 10. 21:27
아키텍처 설계 소프트웨어 시스템이 어떻게 구성되어야 하는지? 시스템의 전체 구조 설계를 이해하는 것 시스템 내 주요 컴포넌트와 그 관계를 식별하는 중요한 연결 아키텍처 설계 프로세스를 통해 확인할 수 있는 것 시스템이 컴포넌트들 간의 집합으로 어떻게 구성되어 있는지 표현하는 모델 아키텍처 추상화 작은 단위의 아키텍처 개별 프로그램은 어떻게 구성되어있는지? 시스템이 컴포넌트들로 어떻게 구성되었는지? 큰 단위의 아키텍처 외부 시스템과 컴포넌트를 포함하는 시스템 이 시스템이 어떻게 분산되어 있는지? 아키텍처 명시화의 장점 이해관계자가 시스템을 이해하는 것에 도움이 된다. 비 기능적 요구사항에 대한 시스템 분석에 도움이 된다. 대규모 재사용을 통해 새로운 아키텍처 설계에 참고와 시간 단축이 가능하다. 아키텍처 ..
-
소프트웨어 공학(1)Computer Science/SW Engineering 2021. 12. 9. 23:05
소프트웨어 - 개발 비용은 소프트웨어 프로세스에서 적은 비중을 차지 - 유지 보수 비용이 개발 비용보다 크다. - 요구사항은 지속적으로 바뀐다. 소프트웨어 제품의 유형 - 일반 소프트웨어 → 어떤 고객이던 구매 가능, 현재는 맞춤식 SW도 반영 - 맞춤식 소프트웨어 → 특정 고객에게 맞춤, 고객이 SW 명세를 개발하고 통제 좋은 소프트웨어의 특성 - 수용성 : 설계 목적에 부합하는 사용자를 수용할 수 있어야 한다. - 확실성 : 시스템에 장애가 발생하더라도 경제적 피해를 야기하면 안된다. - 보안성 : 악의적인 사용자가 시스템에 피해를 입힐 수 없어야한다. - 효율성 : 시스템 자원을 낭비하면 안된다. - 유지보수성 : 고객의 요구를 충족시킬 수 있도록 진화할 수 있어야한다. 공통의 기본 소프트웨어 프로..
-
[Java] java.lang.UnsupportedOperationException메모/트러블 슈팅 2021. 11. 20. 22:36
안드로이드 앱 개발 중 에러가 발생해서 찾아보았다. Array를 List로 변환할 때 생기는 에러라고 한다. 아래 코드에서 처럼 Arrays.asList(배열명)를 사용해서 리스트로 변환하고 변수에 할당하면 그 변수는 수정할 수 없다고 한다. 따라서 생성자를 통해 변환해주는 것으로 해결했다. //String 배열 선언 String[] localNodes; ... //변환 전 arrayList = new ArrayList(); list = Arrays.asList(localNodes); arrayList.addAll(list); //변환 후 //Array -> List를 asList 변환 시, 아래와 같이로 선언해야 수정가능. arrayList = new ArrayList(); list = new Arra..
-
[백준] Python - 색종이와 가위개발/알고리즘 2021. 11. 2. 22:37
20444번: 색종이와 가위 첫 줄에 정수 n, k가 주어진다. (1 ≤ n ≤ 231-1, 1 ≤ k ≤ 263-1) www.acmicpc.net 색종이와 가위 문제다. 이진탐색 문제라고는 하지만 이진탐색을 쓸 필요는 없다. 색종이를 잘랐을때 입력한 값 만큼의 사각형이 나오는지 판단하는 문제이다. 여기서 규칙이 하나 생기는데 x를 가로로 자르는 횟수, y를 세로로 자르는 횟수, n을 총 자르는 횟수, k를 잘랐을 때 나오는 사각형의 총 개수라고 하면 1) x + y = n 2) (x+1)(y+1) = k가 성립한다. 여기서 1)에서 x = n - y를 2)에 대입하면 x에 대한 2차 방정식이 나온다. 사각형의 개수는 무조건 자연수일 수 밖에 없으니 이 2차 방정식을 근의 공식을 통해 해가 자연수로 나오..
-
[백준] Python - 트리개발/알고리즘 2021. 10. 10. 04:59
1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 트리의 리프 노드의 개수를 확인하는 문제다. 내 개인 서버에서는 잘 돌아가는데 백준 테스트 케이스에서 어떤 경우가 있는지 몰라서 예제만 확인했더니... 에러를 해결하지 못했다. 그래서 어떤 알고리즘으로 찾아 힌트를 봤더니 dfs를 쓴다 했다. 깊이 우선 탐색을 재귀로 짜서 리프노드에 도달하면 갯수 +1 하고 리턴, 삭제노드의 부모가 자식이 1개면 갯수 +1 이런식으로 구현했다. 더보기 from sys import stdin n = int(stdin.read..