1. Trang chủ
  2. » Luận Văn - Báo Cáo

ỨNG DỤNG PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRIZ VÀ SCAMPER TRONG TIN HỌC

28 492 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 583,85 KB

Nội dung

Trong bài thu hoạch này, em xin trình bày những nguyên lý sáng tạo của phương pháp TRIZ được ứng dụng trong ngôn ngữ lập trình JAVA, và cách ứng dụng phương pháp SCAMPER trong quản lý dự

Trang 1

ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN - PHÒNG SAU ĐẠI HỌC

BÀI THU HOẠCH

PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC

ỨNG DỤNG PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRIZ VÀ SCAMPER TRONG TIN

Trang 4

LỜI NÓI ĐẦU

Trong mỗi con người luôn tồn tại những mặt đối lập: tốt – xấu; thiện – ác; sáng tạo – thụ động Nói về tư duy sáng tạo, chúng hiện hữu như một nhân tố bẩm sinh trong con người Nói cách khác ai cũng có khả năng sáng tạo, nhưng do tính trì trệ thụ động quá lớn đã đè ép cơ hội thắp sáng những tia sáng tạo; hoặc chúng ta không có phương pháp, không vận dụng đúng phương pháp sáng tạo để giải quyết vấn đề một cách khoa học sáng tạo Đặt biệt trong tin học, phương pháp sáng tạo giúp chúng ta định hướng tư duy, phát huy sáng tạo trong những trường hợp khó, và giải quyết vấn

đề một cách dễ dàng hơn, hệ thống hơn

Với môn học “phương pháp nghiên cứu khoa học trong tin học” giúp trang bị chúng

ta những phương pháp, nguyên lý giải quyết vấn đề khoa học hiệu quả nhất Trong bài thu hoạch này, em xin trình bày những nguyên lý sáng tạo của phương pháp TRIZ được ứng dụng trong ngôn ngữ lập trình JAVA, và cách ứng dụng phương pháp SCAMPER trong quản lý dự án phần mềm để tìm kiếm giải pháp cải thiện hiệu quả làm việc của nhóm Xin chân thành cảm ơn thầy Hoàng Kiếm đã trang bị những kiến thức, kinh nghiệm quý báu và truyền cảm hứng sáng tạo cho chúng em trong bước ngoặc nghiên cứu khoa học

Trang 5

I Các nguyên lý sáng tạo khoa học được ứng dụng trong ngôn ngữ lập trình JAVA

1 Nguyên lý phân nhỏ và “tách riêng”

Nội dung:

• Chia một đối tượng thành nhiều phần độc lập

• Làm cho một đối tượng dễ dàng tháo rời

java.awt Các thành phần để xây dựng giao diện đồ hoạ (GUI)

java.util Cung cấp nhiều lớp và nhiều giao diện tiện ích khác

nhau, như là các cấu trúc dữ liệu, lịch, ngày tháng, v.v java.net Cung cấp các lớp và các giao diện cho việc lập trình

mạng TCP/IP

Trang 6

JAVA chia nhỏ và tách riêng package thành nhiều thu viện nhỏ khác nhau giúp cho người lập trình linh động hơn, chỉ cần sử dụng (import) và cài đặt (implement) những thư viện cần thiết Tách những thư viện không cần thiết ra khỏi thư viện hiện hành để làm tăng khả năng thực thi, tiết kiệm không gian lưu trữ và vùng nhớ

Ví dụ: cấu trúc một dự án JAVA được chia nhiều packages như sau:

2 Nguyên lý phẩm chất cục bộ

Nội dung:

• Đổi cấu trúc của đối tượng từ đồng nhất sang không đồng nhất, đổi môi trường bên ngoài (hoặc tác động bên ngoài) từ đồng nhất sang không đồng nhất

• Đặt mỗi thành phần của đối tượng dưới điều kiện hoạt động tối ưu

Trang 7

• Cho mỗi thành phần của đối tượng thực hiện một chức năng hữu ích khác nhau

Ứng dụng trong JAVA:

JAVA là ngôn ngữ lập trình hướng đối tượng, được chia nhỏ thành những lớp (class) khác nhau Với tính kế thừa và đa hình của JAVA, mỗi lớp có những phương thức riêng, cách ứng xử riêng và những phương thức chung, tính năng chung được kế thừa sử dụng lại từ lớp cha Ngoài ra, lớp còn có những phương thức cục bộ không chia sẽ dữ liệu với các lớp khác Đây là tính đóng gói của JAVA

Ví dụ:

public class Person {

private String firstName ;

private String lastName ;

private Date birthday ;

public Person(String firstName, String lastName, Date birthday) {

this firstName = firstName;

this lastName = lastName;

this birthday = birthday;

}

public String getFirstName() {

return firstName ; }

public String getLastName() {

return lastName ; }

public Date getBirthday() {

return birthday ; }

}

public class Student extends Person{

private String studentId ;

private String faculty ;

private List<Course> listOfCourse = new ArrayList<Course>();

public Student(String studentId, String firstName,

String lastName, Date birthday, String faculty) {

super (firstName, lastName, birthday);

this studentId = studentId;

Trang 8

this faculty = faculty;

}

public String getStudentId() {

return studentId ; }

public String getFaculty() {

return faculty ; }

public void registerCourse(Course course){

// here local variable

boolean isAllowed = isAllowedToRegister();

if (isAllowed){

listOfCourse add(course);

} }

// here local method

private boolean isAllowedToRegister(){

return listOfCourse size()<20? true : false ; }

}

3 Nguyên lý phản đối xứng

Nội dung:

• Đổi hình dạng của đối tượng từ đối xứng sang bất đối xứng

• Nếu một đối tượng đã bất đối xứng, tăng mức độ bất đối xứng của nó

Trang 9

Ví dụ:

public static void main(String[] args){

//init Person object as Student

Person p = new Student();

p.getFirstName();

//Cast Person to Student

Student s = (Student)p;

s.registerCourse( new Course());

Collection<Person> list = new ArrayList<Person>();

list.add( new Person());

list.add( new Student());

for (Person person : list){

System out println( "Firstname: " + person.getFirstName()); System out println( "Lastname: " + person.getLastName()); System out println( "Birthday: " + person.getBirthday());

if (person instanceof Student){

Student student = (Student) person;

System out println( "Faculty: " + student.getFaculty());

} }

• Cho các tác vụ nối tiếp hoặc song song với nhau; đặt chúng gần nhau

về mặt thời gian

Trang 10

Ứng dụng trong JAVA:

Một lớp trong JAVA có thể được thiết kế cài đặt (implements) kết hợp nhiều giao diện (interface) khác nhau để tổng hợp nhiều phương thức, tính năng trong cùng một lớp

Ví dụ:

public interface InterfaceA {

public void doMethodA();

}

public interface InterfaceB {

public void doMethodB();

}

public class ClassImpl implements InterfaceA, InterfaceB{

public void doMethod() { }

@Override

public void doMethodB() {

// TODO Coding here

}

@Override

public void doMethodA() {

// TODO Coding here

} }

5 Nguyên lý vạn năng

Nội dung:

• Cho một thành phần hoặc một đối tượng thực hiện nhiều chức năng; loại bỏ các thành phần khác

Trang 11

Ứng dụng trong JAVA:

Một chương trình viết bằng JAVA có thể chạy trên nhiều máy tính có hệ điều hành khác nhau Windows, Unix, Linux,…Viết một lần chạy mọi nơi “Write one run everywere”

Nền tảng JAVA SE 7 cho phép JAVA có thể làm việc với nhiều ngôn ngữ lập trình khác nhau JVM có thể chạy nhiều ngôn ngữ khác nhau và chúng tồn tại hài hoà với JAVA

6 Nguyên lý chứa trong

public class OuterClass {

public void outerMethod(){

}

public class InnerClass{

public void innerMethod(){

} }

}

Trang 12

7 Nguyên lý gây ứng suất sơ bộ

Nội dung:

• Nếu cần thiết phải thực hiện một hành động với tác động có hại lẫn có ích, hành động này nên được thay thế bằng hành động ngược lại để kiểm soát tác động có hại

• Tạo một áp lực ban đầu lên đối tượng để phản lại áp lực không mong muốn khi hoạt động

public void registerCourse(Course course) throws Exception{

// not allowed to register course that doesn't belong to faculty

if (!course.getCourseType().equals( faculty )){

throw new Exception( "Not allowed to register this course." );

}

// here local variable

boolean isAllowed = isAllowedToRegister();

if (isAllowed){

listOfCourse add(course);

} }

8 Nguyên lý thực hiện sơ bộ

Nội dung:

• Thực hiện trước thay đổi cần thiết trên đối tượng (toàn bộ hoặc một phần)

Trang 13

• Sắp xếp trước các đối tượng để chúng có thể đi vào hoạt động từ vị trí thuận tiện nhất và không mất thời gian chờ

Ứng dụng trong JAVA:

Khi khởi tạo một đối tượng, dữ liệu của biến static được tạo trước, sau đó mới chạy hàm tạo (constructor) để cấp phát một chịa chỉ vùng nhớ mới cho đối tượng Như vậy đối tượng mới được chuẩn bị trước đầy đủ dữ liệu

Ví dụ:

public class Student extends Person{

private String studentId ;

private String faculty ;

// required courses for a Student, don't need to register

static List<Course> listOfCourse = new ArrayList<Course>();

static {

listOfCourse add( new Course( "IT" , "001" , "Triet Hoc" ));

listOfCourse add( new Course( "IT" , "002" , "PPNCKH" ));

}

public Student(String studentId, String firstName,

String lastName, Date birthday, String faculty) {

super (firstName, lastName, birthday);

this studentId = studentId;

this faculty = faculty;

}

public String getStudentId() {

return studentId ; }

public String getFaculty() {

return faculty ; }

Trang 14

Ứng dụng trong JAVA:

Sử dụng Try-Catch trong lập trình để xử lý ngoại lệ (exception), và thực hiện phương án khác nếu có lỗi xảy ra

Ví dụ:

Student student = new Student( "001122" , "Huynh" , "Dang" , null , "MATH" );

Course course = null ;

// if Student is not allowed to register this course,

// then try to register another one of MATH.

course = new Course( "MATH" , "011" , "CSDL Co Ban" );

PooledConnection pooledConnection = dataSource.getPooledConnection();

return pooledConnection.getConnection(); // Obtain connection from pool

Trang 15

}

private static InitialContext createContext() throws NamingException {

Properties env = new Properties();

env.put(Context INITIAL_CONTEXT_FACTORY ,

"com.sun.jndi.rmi.registry.RegistryContextFactory" );

env.put(Context PROVIDER_URL , "rmi://localhost:1099" );

InitialContext context = new InitialContext(env);

return context;

}

11 Nguyên lý đảo ngược

Nội dung:

• Đảo ngược hành động dùng để giải quyết vấn đề

• Cho các thành phần di chuyển được thành cố định, và các thành phần

// create array list object

ArrayList<String> arrlst = new ArrayList<String>();

// populate the list

Collections reverse (arrlst);

// [E, D, C, B, A]

System out println( "The Reverse List is :" +arrlst);

Trang 16

12 Nguyên lý năng động

Nội dung:

• Cho phép (hoặc thiết kế) các đặc tính của đối tượng, môi trường bên ngoài hay quá trình có thể chuyển sang chế độ tối ưu hoặc tìm ra điều kiện hoạt động tối ưu

• Chia đối tượng thành các thành phần có thể chuyển động tương đối với nhau

• Nếu một đối tượng (hoặc quá trình) cố định hay thiếu linh động thì làm cho nó di chuyển hoặc tự thích nghi được

Ứng dụng trong JAVA:

Kiểu dữ liệu Map<key,value> lưu dữ liệu dưới dạng <key,value>, có thể lưu trữ bất kỳ kiểu đối tượng nào và có thể tách rời thành 2 danh sách chứa toàn key hoặc toàn value

Ví dụ:

Map map = new HashMap();

map.put( "key1" , new Person());

map.put( "key2" , new Student());

map.put( "key3" , new Integer(1000));

map.put( "key3" , "Sunday" );

// get keys only

• Thay vì hành động liên tục thì hành động theo chu kỳ hoậc theo nhịp

• Nếu một hành động đã có tính chu kỳ thì tăng mức độ hoặc tần số của

Trang 17

• Dùng khoảng nghỉ giữa các xung để thực hiện hành động khác

public static void main (String arguments ) {

TimerTask fetchMail = new FetchMail();

//perform the task once a day at 4 a.m., starting tomorrow morning

//(other styles are possible as well)

Timer timer = new Timer();

private final static long fONCE_PER_DAY = 1000*60*60*24;

private final static int fONE_DAY = 1;

private final static int fFOUR_AM = 4;

private final static int fZERO_MINUTES = 0;

private static Date getTomorrowMorning4am(){

Calendar tomorrow = new GregorianCalendar();

tomorrow.add(Calendar DATE , fONE_DAY );

Calendar result = new GregorianCalendar(

Trang 18

14 Nguyên lý quan hệ phản hồi

Ví dụ:

public static void main( String args[] ){

try { // Load the database driver

Class forName ( "sun.jdbc.odbc.JdbcOdbcDriver" ) ; // Get a connection to the database

Connection conn = DriverManager getConnection ( "jdbc:odbc:Database" ) ; // Get a statement from the connection

Statement stmt = conn.createStatement() ; // Execute the Update

int rows = stmt.executeUpdate( "

UPDATE Cust SET CUST_NO = 9842 WHERE CUST_NO = 9841" ) ;

// Print how many rows were modified

// if rows=0, then go to insert new

System out println( rows + " Rows modified" ) ;

if (rows == 0){

stmt.executeUpdate( "

INSERT INTO Cust values('9842','9841','','' ) " );

} // Close the statement and the connection

Trang 19

• Sử dụng vật thể truyền tải trung gian hoặc quá trình trung gian

• Tạm thời kết hợp đối tượng với một đối tượng khác mà có thể dễ dàng tháo bỏ

Ứng dụng trong JAVA:

Hai đối tượng (object) khác nhau được xem là cùng kiểu dữ liệu khi chúng cài đặt (implements) cùng một interface

Ví dụ:

public interface MidInterface {

public void doSonething();

}

public class ClassA implements MidInterface {

@Override

public void doSonething() {

// TODO Auto-generated method stub

}

}

public class ClassB implements MidInterface{

@Override

public void doSonething() {

// TODO Auto-generated method stub

}

}

Trang 20

public static void main(String[] args) throws Exception{

List<MidInterface> list = new ArrayList<MidInterface>();

MidInterface classA = new ClassA();

17 Nguyên lý sao chép (copy)

Nội dung:

• Thay vì sử dụng đối tượng hiếm, đắt tiền, dễ vỡ thì dùng bản sao đơn giản và rẻ tiền hơn

• Thay thế đối tượng hoặc quá trình bằng bản sao quang học

• Nếu bản sao quang học đã được dùng thì chuyển sang bản sao hồng ngoại hoặc cực tím

Trang 21

Ứng dụng trong JAVA:

Với tính kế thừa của lập trình hướng đối tượng JAVA, lớp con được thừa hưởng tất cả các phương thức của lớp cha, và có thể override bất kỳ phương thức nào khi cần

Ví dụ:

public class ParentClass {

public void doSomething(){

System out println( "ParentClass" );

}

}

public class ChildClass extends ParentClass{

@Override

public void doSomething(){

// copy here what ParentClass did first

super doSomething();

// adding code here to do specific some things for ChildClass

System out println( "Adding more code here." );

Trang 22

Ví dụ:

public abstract class Person {

public abstract String getFirstName();

public abstract String getLastName();

public abstract List<Course> registerCourse(Course course); }

public class Student extends Person{

@Override

public String getFirstName() {

// TODO code here

return null ; }

@Override

public String getLastName() {

// TODO code here

return null ; }

@Override

public List<Course> registerCourse(Course course) {

// TODO code here

return null ; }

}

public class Teacher extends Person{

@Override

public String getFirstName() {

// TODO code here

return null ; }

@Override

public String getLastName() {

// TODO code here

return null ; }

@Override

public List<Course> registerCourse(Course course) {

// TODO code here

return null ; }

}

Ngày đăng: 05/07/2015, 14:00

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Bài giảng môn học “Phương pháp nhiên cứu khoa học trong tin học”, Giảng viên : GS.TSKH Hoàng Văn Kiếm Sách, tạp chí
Tiêu đề: Phương pháp nhiên cứu khoa học trong tin học
8. Phương pháp luận sáng tạo - TRIZVIET - http://www.trizviet.com.vnz Link
2. Tài liệu tham khảo, bài thu hoạch của các khoá học trước Khác
3. Giải một bài toán trên máy tính như thế nào? (tập 1, 2, 3) - GS. TSKH Hoàng Kiếm, Nhà xuất bản giáo dục – 2003 Khác
4. Phương pháp luận nghiên cứu khoa học , V Cao Đàm, hà xuất bản Khoa Học và Kỷ Thuật –1999 Khác
5. Các thủ thuật (nguyên tắc) sáng tạo cơ bản, 2007 - Phan Dũng Khác
6. Phương pháp luận sáng tạo – Giải quyết vấn đề và ra quyết định - Phan Dũng 7. Algorit sang chế - Nguyễn Chân-Phan ng- ương Xuân Bảo Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w