از کلیات به جزئیات
مراحل روش طراحی بالا به پایین
مراحل روش طراحی بالا به پایین (Top-Down Design) به طور کلی به این صورت است:
۱. تعریف مسئله و تعیین هدف کلی
ابتدا باید هدف کلی و نیازمندیهای اصلی پروژه یا مسئلهای که قرار است حل شود، مشخص کنیم. این مرحله شامل درک عمیق از آنچه که قرار است به دست آورده شود، میباشد.
۲. طراحی معماری کلی (High-Level Design)
در این مرحله، ساختار کلی راهحل یا برنامه را ترسیم میکنیم. این طراحی شامل اجزای اصلی، زیر مسئلهها و ارتباطات کلی بین آنها است. در این مرحله، بر روی بخشهای بزرگتر تمرکز می شود و هنوز وارد جزئیات نشدهایم.
۳. تقسیمبندی
پس از طراحی کلی، مسئله را به بخشهای کوچکتر و قابل مدیریت تقسیم میکنیم. هر یک به عنوان بخشی مستقل و قابل تعریف از مسئله کلی در نظر گرفته میشود.
۴. طراحی جزئیات
در این مرحله، هر بخش را به طور دقیقتر و با جزئیات بیشتری طراحی میکنیم که شامل تعیین دادهها، الگوریتمها، و وظایف داخلی هر بخش است. به عبارت دیگر، هر یک از بخشهای کوچکتر که در مرحله قبلی تعیین شدهاند، به تفصیل بررسی و پیادهسازی میشوند.
۵. پیادهسازی (Implementation)
پس از طراحی دقیق، کدنویسی هر یک از بخشها یا زیر مسئلهها را آغاز میکنیم. در این مرحله، تمامی بخشهای مختلف برنامه به صورت جداگانه نوشته و سپس با هم ترکیب می شوند تا برنامه نهایی شکل گیرد.
۶. تست و اعتبارسنجی (Testing and Validation)
بعد از پیادهسازی، تمام برنامه را باید به طور کامل تست کنیم. این تستها شامل بررسی عملکرد هر بخش به صورت مستقل و همچنین بررسی کلی برای اطمینان از عملکرد صحیح و هماهنگی بین زیر مسئلهها است.
۷. یکپارچهسازی و نهاییسازی (Integration and Finalization)
در این مرحله، تمامی بخشها و زیر مسئلهها را با یکدیگر ترکیب میکنیم و برنامه به شکل نهایی خود درمیآید. همچنین ممکن است اصلاحات نهایی و بهینهسازیها انجام شود.
۸. مستندسازی و نگهداری (Documentation and Maintenance)
خوب است پس از تکمیل برنامه، مستندات لازم برای آن را تهیه کنیم. این مستندات شامل توضیحات مربوط به طراحی، پیادهسازی و نحوه استفاده از برنامه است. همچنین، برنامه را باید به گونهای طراحی کنیم که نگهداری و بهروزرسانیهای آینده به سادگی انجام شود.
فرض کنید میخواهیم برنامهای بنویسیم که میانگین نمرات چند دانشآموز را محاسبه کند. حالا این مسئله را با روش طراحی بالا به پایین حل میکنیم.
هدف ما نوشتن برنامهای است که نمرات چند دانشآموز را دریافت کند و میانگین آنها را محاسبه و نمایش دهد. برنامه باید دارای چند بخش کلی باشد:
- دریافت تعداد دانشآموزان و نمرات آنها
- محاسبه میانگین نمرات
- نمایش میانگین
پس برای هر بخش یک تابع مینویسیم:
#include <iostream>
#include <vector>
std::vector<int> getInput() {
int n;
std::vector<int> grades;
std::cout << "Enter the number of students: ";
std::cin >> n;
for (int i = 0; i < n; i++) {
std::cout << "Enter grade for student " << i + 1 << ": ";
double grade;
std::cin >> grade;
grades.push_back(grade);
}
return grades;
}
double calculateAverage(vector<int> grades) {
double sum = 0;
for (int i = 0; i < grades.size(); i++) {
sum += grades[i];
}
return sum / grades.size();
}
void displayAverage(double average) {
std::cout << "The average grade is: " << average << std::endl;
}
int main() {
std::vector<int> grades = getInput();
double average = calculateAverage(grades);
displayAverage(average);
return 0;
}
برنامهای نوشتیم را تست میکنیم:
Enter the number of students: 5
Enter grade for student 1: 15.5
Enter grade for student 2: 20
Enter grade for student 3: 13
Enter grade for student 4: 2
Enter grade for student 5: 19.75
The average grade is: 13.8