[NCS 응용 SW엔지니어링 실습] 애플리케이션 구현 - 공통 모듈 구현하기
과정명 | IoT기반 융합 SW 개발자 양성과정 | ||
과목명 | 애플리케이션 구현 (2001020203_14v2) | 요소명 | 공통 모듈 구현하기 |
수행일자 | 2018년 03.27 | 훈련생 |
|
수행과제 |
DBMS에 구현한 저장 프로시저를 호출하는 메서드를 캡슐화한 DBM For All 라이브러리를 작성하고 테스트하시오. 수행 결과에는 DBM For All 라이브러리에서 제공하는 클래스 코드를 기재합니다. jejutour@daum.net 메일로 2018년 4월 6일까지 제출하시오. |
과제를 통해 확인할 능력 사항 |
1. 공통 모듈의 상세 설계를 기반으로 프로그래밍 언어와 도구를 활용하여 업무 프로세스 및 서비스의 구현에 필요한 공통 모듈을 작성할 수 있다. 2. 모듈간의 결합도는 줄이고 모듈 내부의 응집도를 높인 공통 모듈을 구현할 수 있다. 3. 공통 모듈을 테스트 케이스를 작성하고 테스트를 수행하기 위한 테스트 조건을 명세화할 수 있다. |
수행결과 |
|
참고 파일
애플리케이션 구현 실습[공통 모듈 구현하기] 예.hwp
예
수행결과 |
using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using WSECoreLibrary;
namespace DBM_For_All_Lib { /// <summary> /// DBMS를 사용하기 위한 정적 클래스 /// </summary> public static class EHDbmForAll { static string constr = @"Data Source=[DBMS인스턴스명];Initial Catalog=[DB명];User ID=[계정명];Password=[비밀번호];"; /// <summary> /// Seed 사이트 추가 메서드 /// </summary> /// <param name="url">사이트 주소</param> public static void AddSeedSite(string url) { AddCandidate(url, 0); }
/// <summary> /// 후보 사이트 추가 메서드 /// </summary> /// <param name="url">사이트 주소</param> /// <param name="depth">Seed 사이트에서 상대적 깊이</param> public static void AddCandidate(string url, int depth) { SqlCommand scom = MakeSPCommand("AddCandidate", CommandType.StoredProcedure); SqlParameter sp_url = new SqlParameter("@Url", url); SqlParameter sp_depth = new SqlParameter("@Depth", depth); scom.Parameters.Add(sp_url); scom.Parameters.Add(sp_depth);
scom.Connection.Open(); scom.ExecuteNonQuery(); scom.Connection.Close(); }
/// <summary> /// 수집 사이트 등록 메서드 /// </summary> /// <param name="purl">수집 사이트</param> public static void StorePostedUrl(PostedUrl purl) { SqlCommand scom = MakeSPCommand("AddPostedUrl", CommandType.StoredProcedure); SqlParameter sp_url = new SqlParameter("@Url", purl.Url); SqlParameter sp_ourl = new SqlParameter("@OriginUrl", purl.OriginUrl); SqlParameter sp_depth = new SqlParameter("@Depth", purl.Depth); SqlParameter sp_pt = new SqlParameter("@PostedTime", purl.PostedTime); SqlParameter sp_pc = new SqlParameter("@PostedContent", purl.Content); SqlParameter sp_title = new SqlParameter("@TItle", purl.Title);
scom.Parameters.Add(sp_url); scom.Parameters.Add(sp_ourl); scom.Parameters.Add(sp_depth); scom.Parameters.Add(sp_pt); scom.Parameters.Add(sp_pc); scom.Parameters.Add(sp_title);
scom.Connection.Open(); scom.ExecuteNonQuery(); scom.Connection.Close(); }
/// <summary> /// 수집 사이트 형태소 개수 등록 메서드 /// </summary> /// <param name="url">사이트 주소</param> /// <param name="mcnt">형태소 개수</param> public static void AddMCPostedInfo(string url, int mcnt) { SqlCommand scom = MakeSPCommand("AddMCPostedUrlInfo", CommandType.StoredProcedure); SqlParameter sp_url = new SqlParameter("@Url", url); SqlParameter sp_tcnt = new SqlParameter("@TotalCount", mcnt); scom.Parameters.Add(sp_url); scom.Parameters.Add(sp_tcnt);
scom.Connection.Open(); scom.ExecuteNonQuery(); scom.Connection.Close(); }
/// <summary> /// 형태소 정보 추가 메서드 /// </summary> /// <param name="url">사이트 주소</param> /// <param name="mo">형태소 이름</param> public static void AddMorphemeInfo(string url, Morpheme mo) { AddMorphemeInfo(mo.Name); AddInvertedItem(mo.Name, url, mo.Count); }
/// <summary> /// 역 파일 요소 등록 메서드 /// </summary> /// <param name="name">형태소 이름</param> /// <param name="url">사이트 주소</param> /// <param name="count">사이트 내 형태소 빈도수</param> public static void AddInvertedItem(string name, string url, int count) { SqlCommand scom = MakeSPCommand("AddInvertedItem", CommandType.StoredProcedure); SqlParameter sp_mo = new SqlParameter("@Morpheme", name); SqlParameter sp_url = new SqlParameter("@Url", url); SqlParameter sp_rcnt = new SqlParameter("@Refcnt", count); scom.Parameters.Add(sp_mo); scom.Parameters.Add(sp_url); scom.Parameters.Add(sp_rcnt);
scom.Connection.Open(); scom.ExecuteNonQuery(); scom.Connection.Close(); }
/// <summary> /// 형태소 정보 추가 메서드 /// </summary> /// <param name="name">형태소</param> /// <returns></returns> public static bool AddMorphemeInfo(string name) { SqlCommand scom = MakeSPCommand("AddMorphemeInfo", CommandType.StoredProcedure); SqlParameter sp_mo = new SqlParameter("@Morpheme", name); SqlParameter sp_existed = new SqlParameter("@Existed", SqlDbType.Int); sp_existed.Direction = ParameterDirection.Output; scom.Parameters.Add(sp_mo); scom.Parameters.Add(sp_existed);
scom.Connection.Open(); scom.ExecuteNonQuery(); scom.Connection.Close(); return (int)sp_existed.Value == 1; }
/// <summary> /// 형태소 목록 구하는 메서드 /// </summary> /// <returns>형태소 컬렉션</returns> public static List<string> GetMorphemes() { List<string> mores = new List<string>(); SqlCommand scom = MakeSPCommand("select * from IndexInvFileTable", CommandType.Text); scom.Connection.Open(); SqlDataReader sdr = scom.ExecuteReader(); while (sdr.Read()) { string mo = sdr["Morpheme"] as string; mores.Add(mo); } sdr.Close(); scom.Connection.Close(); return mores; }
/// <summary> /// 수집 대상 사이트 목록 구하는 메서드 /// </summary> /// <returns>수집 대상 사이트 목록</returns> public static List<Candidate> GetCandidates() { List<Candidate> candies = new List<Candidate>(); SqlCommand scom = MakeSPCommand("select * from CandidateTable", CommandType.Text); scom.Connection.Open(); SqlDataReader sdr = scom.ExecuteReader(); while (sdr.Read()) { string url = sdr["Url"] as string; int depth = (int)sdr["Depth"]; candies.Add(new Candidate(url, depth)); } sdr.Close(); scom.Connection.Close(); return candies; }
/// <summary> /// 맨 먼저 등록한 수집 대상 사이트 구하는 메서드 /// </summary> /// <returns>수집 대상 사이트</returns> public static Candidate GetFrontCandidate() { SqlCommand scom = MakeSPCommand("GetFrontCandidate", CommandType.StoredProcedure); SqlParameter sp_url = new SqlParameter("@Url", SqlDbType.NVarChar, 200); sp_url.Direction = ParameterDirection.Output; SqlParameter sp_depth = new SqlParameter("@Depth", SqlDbType.Int); sp_depth.Direction = ParameterDirection.Output; SqlParameter sp_getted = new SqlParameter("@Getted", SqlDbType.Int); sp_getted.Direction = ParameterDirection.Output; scom.Parameters.Add(sp_url); scom.Parameters.Add(sp_depth); scom.Parameters.Add(sp_getted); scom.Connection.Open(); scom.ExecuteNonQuery(); scom.Connection.Close(); int getted = (int)sp_getted.Value; if (getted == 0) { return new Candidate(); } int depth = (int)sp_depth.Value; string url = sp_url.Value as string; return new Candidate(url, depth); }
static SqlCommand MakeSPCommand(string cmdtext, CommandType cmdtype) { SqlConnection scon = new SqlConnection(constr); SqlCommand scom = new SqlCommand(cmdtext, scon); scom.CommandType = cmdtype; return scom; } } }
|
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
[NCS 실습, 응용 SW엔지니어링] 인터페이스 설계 - 요구사항 확인하기 (0) | 2018.06.18 |
---|---|
[NCS 실습, 응용 SW엔지니어링] 인터페이스 구현 (0) | 2018.06.16 |
[NCS 임베디드 SW엔지니어링] 임베디드 애플리케이션 구현환경 구축 실습 포트폴리오 (0) | 2018.05.24 |
[NCS 임베디드 SW엔지니어링] 임베디드 애플리케이션 분석 실습 포트폴리오 (0) | 2018.05.23 |
[NCS 응용 SW엔지니어링] 애플리케이션 구현 - 서버 프로그램 구현 (0) | 2018.04.04 |
[NCS 응용SW 엔지니어링 실습] 애플리케이션 구현 - 단위 테스트 (0) | 2018.03.27 |
[NCS 임베디드 SW엔지니어링] 임베디드 애플리케이션 구현 실습 (0) | 2018.03.19 |
[NCS 실습, SW아키텍처] SW아키텍처 설계하기 (0) | 2018.03.17 |
[NCS 임베디드 SW엔지니어링] 임베디드 애플리케이션 설계 (0) | 2018.03.14 |
[NCS 임베디드 SW엔지니어링] 펌웨어 구현 환경 구축 (0) | 2018.03.05 |