Thiết kế lặp

**Thiết kế lặp** (tiếng Anh: *[[iterative design]]*) là một phương pháp thiết kế dựa trên một quá trình tuần hoàn của tạo mẫu,thử nghiệm, phân tích, và tinh chỉnh một sản phẩm hoặc quy trình. Dựa trên kết quả của các thử nghiệm lặp đi lặp lại gần đây nhất của một thiết kế, các thay đổi và các cải tiến đã được tạo ra. Quá trình này được thiết kế với mục đính cuối cùng là nâng cao chất lượng và chức năng của một thiết kế. Trong thiết kế lặp, sự tương tác với hệ thống thiết kế được sử dụng như một loại hình nghiên cứu cho thăm dò và phát triển một dự án, như các phiên bản kế tiếp, hoặc lặp đi lặp lại của một thiểt kế được triển khai thực hiện.

## Quá trình thiết kế lặp
Quá trình thiết kế lặp có thể được áp dụng trong suốt quá trình phát triển sản phẩm mới. Tuy nhiên, những thay đổi là đơn giản nhất và ít tốn kém để thực hiện trong giai đoạn đầu của sự phát triển. Bước đầu tiên trong quá trình thiết kế là phát triển một nguyên mẫu. Các nguyên mẫu nên được đánh giá bởi một nhóm trọng tâm hoặc một nhóm không liên quan đến các sản phẩm để cung cấp ý kiến không thiên vị. Thông tin từ các nhóm trọng tâm nên được tổng hợp và tích hợp vào phiên bản kế tiếp của thiết kế. Quá trình này cần được lặp lại cho đến khi vấn đề của người dùng đã được giảm đến mức chấp nhận được.

**Ứng dụng: giao diện  con người - máy tính**Thiết kế lặp thường được sử dụng trong sự phát triển của giao diện máy tính - con người. Điều này cho phép các nhà thiết kế xác định bất kỳ vấn đề có khả năng phát sinh trong giao diện người dùng trước khi nó được đưa vào sử dụng rộng rãi. Ngay cả các chuyên gia về khả năng sử dụng tốt nhất cũng không thể thiết kế giao diện người dùng hoàn hảo trong một nỗ lực duy nhất, do đó, một vòng đời kỹ thuật về khả năng sử dụng nên được xây dựng xung quanh các khái niệm về sự lặp lại.

Các bước điển hình của thiết kế lặp trong các giao diện người dùng như sau:
# Hoàn thành một thiết kế giao diện ban đầu
# Trình bày các thiết kế cho một số người dùng thử nghiệm
# Lưu ý bất kỳ vấn đề có được từ người dùng thử nghiệm
# Tinh chỉnh giao diện để sửa chữa các vấn đề
# Lặp lại các bước 2-4 cho đến khi vấn đề được giải quyết
Thiết kế lặp trong các giao diện người dùng có thể được thực hiện bằng nhiều cách. Một phương pháp phổ biến của việc sử dụng thiết kế lặp trong các phần mềm máy tính là thử nghiệm phần mềm. Trong khi điều này bao gồm các thử nghiệm sản phẩm cho các chức năng bên ngoài của giao diện người dùng, thông tin phản hồi quan trọng về giao diện có thể được thu nhận từ việc thử nghiệm phiên bản đầu của một chương trình. Điều này cho phép các công ty phần mềm phát hành một sản phẩm chất lượng tốt hơn cho công chúng, và ngăn ngừa sự sửa đổi sản phẩm sau khi phát hành.

Thiết kế lặp trong giao diện trực tuyến (website) là một quá trình liên tục hơn, như sửa đổi trang web sau khi nó đã được phát hành cho người sử dụng, nó là khả thi hơn trong thiết kế phần mềm. Thường các trang web sử dụng người dùng của họ như là đối tượng thử nghiệm thiết kế giao diện, làm thay đổi dựa trên các khuyến nghị từ khách truy cập đến các trang web của họ.

## Sử dụng thiết kế lặp
Thiết kế lặp là một cách để đối diện với thực tế  nhu cầu không thể đoán trước và nhưng hành vi của người dùng có thể dẫn đến những thay đổi sâu rộng và cơ bản trong thiết kế. Thử nghiệm người dùng thường xuyên sẽ cho thấy thậm chí những ý tưởng được đánh giá cẩn thận sẽ không đầy đủ khi phải đối mặt với một thử nghiệm người dùng. Vì vậy, điều quan trọng là sự linh hoạt của phương pháp thực hiện thiết kế lặp được xuất hiện một cách lâu dài và mở rộng cách tiếp cận càng vào sâu trong hệ thống càng tốt. Nhà thiết kế phải nhận ra rằng kết quả thử nghiệm người dùng có thể đề nghị một sự thay đổi triệt để, đòi hỏi các nhà thiết kế phải chuẩn bị để từ bỏ hoàn toàn ý tưởng cũ và ủng hộ ý tưởng mới để phù hợp với nhu cầu của người sử dụng. Thiết kế lặp được áp dụng trong nhiều lĩnh vực, từ làm những con  dao cho đến chế tạo tên lửa. Như một ví dụ xem xét việc thiết kế một mạch điện tử phải thực hiện một nhiệm vụ nào đó, và cuối cùng là phải phù hợp với một không gian nhỏ trên một bảng mạch. Nó rất hữu ích để phân chia các nhiệm vụ độc lập thành hai nhiệm vụ nhỏ hơn và đơn giản hơn, nhiệm vụ chức năng, và các  nhiệm vụ không gian và trọng lượng. Một breadboard là một cách hữu hiệu để thực hiện các mạch điện tử trên cơ sở tạm thời, mà không cần phải lo lắng về không gian và trọng lượng.

Một khi mạch hoạt động, cải tiến hoặc thay đổi có thể được áp dụng cho các breadboard để thêm hoặc cải thiện chức năng trên thiết kế ban đầu. Khi thiết kế được hoàn thành, người ta có thể thiết lập về thiết kế một bảng mạch thích hợp đáp ứng các tiêu chí không gian và trọng lượng. Nén các mạch trên bảng mạch đòi hỏi các dây và các thành phần được sắp đặt xung quanh mà không thay đổi các đặc tính điện  từ của chúng. 

Một số trường hợp của thiết kế lặp như sau:
* Wiki - Một wiki là một kho lưu trữ tự nhiên cho thiết kế lặp. Các 'Lịch sử trang' là cơ sở cho phép theo dõi trở lại với phiên bản trước. Sửa đổi chủ yếu là gia tăng, và để lại phần trọng yếu của văn bản.
* Thông luật - Các nguyên tắc của tiền lệ pháp lý được xây dựng dựa trên kinh nghiệm trong quá khứ. Điều này làm cho pháp luật như một hình thức thiết kế lặp nơi cần có một nhật ký rõ ràng của sự phát triển tư tưởng pháp lý.
* •	Tiến hóa - Có một sự giống nhau giữa Thiết kế lặp và lý thuyết chọn lọc tự nhiên. Cả hai liên quan đến một quá trình thử và sai, thiết kế phù hợp nhất được để lại cho các thế hệ tiếp theo, trong khi thiết kế không phù hợp sẽ bị đào thải. Phiên bản tiếp theo của một sản phẩm cũng nên dần dần tốt hơn. nhà sản xuất của nó tìm hiểu những gì làm việc và những gì không trong một quá trình sàng lọc và cải tiến liên tục.

## Lợi ích
Khi áp dụng đúng cách, thiết kế lặp sẽ đảm bảo một sản phẩm hoặc quy trình là giải pháp tốt nhất có thể. Khi áp dụng sớm trong giai đoạn phát triển sẽ có thể tiết kiệm chi phí đáng kể.

Các lợi ích khác của thiết kế lặp bao gồm:
# Những hiểu lầm nghiêm trọng được làm rõ sớm trong vòng đời của sản phẩm.
# Nó cho phép và khuyến khích người dùng phản hồi, để gợi ra những yêu cầu thực tế của hệ thống.
# Nơi công việc được rút lại, thiết kế lặp cung cấp một phương pháp gia tăng sự tham gia hiệu quả hơn cho khách hàng trong sự phức tạp cái mà  thường  bao quanh quá trình thiết kế.
# Đội ngũ phát triển buộc phải tập trung vào những vấn đề quan trọng nhất đối với dự án, và các thành viên trong đội được bảo vệ khỏi những vấn đề khiến họ phân tâm từ những rủi ro thực tế của dự án.
# Liên tục, thử nghiệm lặp cho phép một đánh giá khách quan tình trạng của dự án.
# Mâu thuẫn giữa yêu cầu, thiết kế, triển khai và được phát hiện sớm.
# Khối lượng công việc của nhóm, đặc biệt là các nhóm thử nghiệm, được trải ra đồng đều hơn trong suốt vòng đời.
# Cách tiếp cận này cho phép các nhóm tận dụng các bài học kinh nghiệm, và do đó liên tục cải tiến quy trình.
# Các bên liên quan trong dự án có thể đưa ra bằng chứng cụ thể về tình trạng của dự án trong suốt vòng đời.

## Xem thêm
* Lập trình cực hạn
* Mô hình xoắn ốc
* Công nghệ thi công Top-down
* Paper prototyping

## Chú thích

## Tham khảo
* Boehm, Barry W.(May 1988) "A Spiral Model of Software Development and Enhancement," Computer, IEEE, pp.&nbsp;61–72.
* Gould, J.D. and Lewis, C. (1985).  Designing for Usability: Key Principles and What Designers Think, Communications of the ACM, March, 28(3), 300-311.
* Kruchten, Philippe. The Rational Unified Process—An Introduction,
* Kruchten, P. From Waterfall to Iterative Development - A Challenging Transition for Project Managers. The Rational Edge, 2000. Truy cập from http://www-128.ibm.com/developerworks/rational/library/content/RationalEdge/dec00/FromWaterfalltoIterativeDevelopmentDec00.pdf. Addison Wesley Longman, 1999.