Software Design Introduction

preview_player
Показать описание
Great software design makes a big difference in how easy that software is to use, develop, test etc. Yet, software design is hard to do well. One of the challenges is, that I don't believe we always think constructively about software design. We may sometimes just follow a recipe someone else made, rather than do our own design thinking.

In this introduction to software design I lay out some of the fundamentals of how to think about software design. Later videos will dive deeper into many of the concepts mentioned in this video.

Chapters:
0:00 Software Design Introduction
0:45 What is Software Design?
1:05 Functional and Structural Design
1:32 Functional vs. Structural Design
3:10 Functional Specification is Abstract - Structural Design is Concrete
3:54 Software Design vs. Software Architecture
4:54 Design Choices are Trade-offs
5:26 Design Trade-offs can be Temporal
6:47 How do We Design Software Then?
7:02 Software Design Philosophies
7:22 Conscious Design
7:53 Beware of Design Doctrines
8:45 Software Design Summary

Social Media:

Twitter: @jjenkov

Software Design Introduction - text:

Software Design - playlist:

#softwaredesign #softwaredevelopment #software
Рекомендации по теме
Комментарии
Автор

After reading all your multithreading posts in your website (best Java multithreading explanation hands down) I know that everything you post is gold, so here I am again :)

kzelmer
Автор

You are awesome Jakob! Your videos are extremely helpful. Is it possible if in the future you can do one about SOLID principles

lrzero
Автор

Dude i am 100% agree whit you. As always great job TY

personalaccount
Автор

Does it mean we have software architecture only for distributed systems?Something like a text editor wont have it?

cccc
Автор

Hi Jakob, I would like to start by saying that I really enjoyed watching your content on multithreading. I wanted to give some feedback for this video though.

I think you are trying to come up with software engineering definitions and processes from your own experience. Almost all of the ideas you shared were formalized in software engineering books many years ago. I don’t think the information you shared is incorrect but people can find better structured information on other resources.

For example, you are comparing software design with software architecture but it is widely accepted that software design is a meta terminology which includes both high-level(architectural) and low-level design. Therefore, comparing high and low level design would be more appropriate.

Also, I felt like you are mixing up software requirements analysis and software design stages. The result of the former is a software requirements specification document which ideally should not contain implementation details.

I can give you more and more examples but in short, I think the information you shared could be better structured and they were already formalized in the past.

Thank you for the video.

rifatsl