کتاب The Design of Design(+) ( طراحیِ یک طراحی ) ، نوشته Frederick Phillips "FredBrooks Jr (+) ، یکی از بهترین و جامع ترین کتاب های موجود در زمینه طراحی نرم افزار است . 



این کتاب یک کتاب مقدماتی نیست. بهتر بگویم ، یک کتاب پیشرفته طراحی نرم افزار است. یعنی شما باید پایه و اصول طراحی نرم افزار را بدانید. هدفم از معرفی این کتاب بدین دلیل است که بعد از اتمام هر فصل از نقشه راه یکی از فصل های این کتاب را با هم بحث می کنیم. 

طراحی نرم افزار یکی از بهترین  و زیربنایی ترین شغل های مربوط به صنعت نرم افزار است. فیلد طراحی نرم افزار در اکثر مواقع با طراحی فتوشاپ و طراحی وب اشتباه گرفته می شود. 

در زمینه طراحی نرم افزار بیشتر به این می پردازیم که یک نرم افزار از پایه باید چگونه طراحی شود. این بحث را در فصل مربوط به طراحی نرم افزار در بخش های مختلفی با جزئیات و شرحیات ، توضیح میدهم.

طراحی نرم افزار به مثابه طراحی یک ساختمان است. یعنی همانطوری که مهندسان عمران و معماری یک ساختمان را طراحی می کنند. البته طراحی نرم افزار مقوله ای جدا از ساختمان و عمران است. 

بحث اصلی طراحی نرم افزار اینست که چگونه یک سیستم در دنیای خارج را شبیه سازی کامپیوتری کنیم. یعنی روال ها و روندهای آن را همانگونه که در دنیای واقعی به پیش می روند به دنیای کامپیوتر بیاوریم.ُ

در این زمینه به مشکلات زیادی برمی خوریم. وهله اول اینست  که کامپیوتر زبان ما را نمی فهمد و فقط و فقط کُدها را می فهمد. 

در مرحله دوم مشکل ما اینست چگونه با کمترین پیچیدگی بتوانیم این روال ها و روندهای را ، طراحی  کنیم. ( فعلا خیلی زوده برای پیاده سازی خنده

پس از این مراحل به نیازمندی ها و مستندات سیستم نیازمندیم. مستنداتی که مدام به روز می شوند.

خب حال به وجود این سه مشکل اساسی ، کار طراحی نرم افزار چیست؟

کار طراحی نرم افزار ، طراحی یک سیستم نرم افزاری مشابه سیستم واقعی دنیای بیرون، با در نظر گرفتن کمترین سربار است. 

یعنی چگونه می توانیم یک نرم افزار را توسعه دهیم که بتواند ویژگی های زیر را داشته باشد: 

خوانا ترین کد ، کمترین پیچیدگی ،بهینه ترین مصرف حافظه ، با ثبات بودن ، وابستگی کم ، جامع یا یکپارچه بودن و ... را داشته باشد. 

مقوله طراحی نرم افزار به این دسته مطالب نرم افزار در قبل و حین پیاده سازی نرم افزار می پردازد. بعضی از این ویژگی ها هم مربوط به مرحله Maintenance نرم افزار است.