Software Design
Software Design
  • 142
  • 8 770
Design Viewpoints
A design viewpoint is a tool used to express software design ideas. Though the UML class diagram is perhaps the most commonly used viewpoint, there are many others: flowchart, structure chart, data flow diagram, and others. How does one use these viewpoints to design a large and complex software system? This video answer that question.
he.kendallhunt.com/product/software-design
0:00 Introduction
0:26 So Many Viewpoints!
0:48 4+1 View Model
1:22 Step 1 - Development
2:13 Step 2 - Data Flow
5:00 Step 3 - Data Storage
7:01 Step 4 - Algorithms
7:46 Conclusion
Переглядів: 36

Відео

Data Protection - Best Practices
Переглядів 1728 днів тому
One of the great advantages of a class (over structures and similar data structures) is the assurance that the contained data is always in a valid state. This video enumerates several best practices to get the most out of these assurances. he.kendallhunt.com/product/software-design 0:00 Introduction 0:18 Overview of Data Protection 0:49 Trust Boundaries 1:16 Components of Data Protection 2:22 D...
Integration Tests and Unit Tests
Переглядів 105Місяць тому
What is the difference between an integration test and a unit test? This video will compare and contrast each. he.kendallhunt.com/product/software-design 0:00 Introduction 0:29 Definitions 2:38 Example - Chess 6:22 Example - Newtonian Physics 8:52 Conclusion
Source Management - Pseudocode
Переглядів 7Місяць тому
Source management pseudocode is a technology-independent way to describe how to work with a source management system such as Git. he.kendallhunt.com/product/software-design 0:00 Introduction 0:30 Keywords 1:31 Pseudocode and Commit Graphs 2:38 Pseudocode and Git 3:27 Conclusion
Integration Test - The Four Parts
Переглядів 14Місяць тому
Integration tests, like unit tests, have four parts: setup, exercise, verify, teardown. The way these for parts are utilized, however, are different than those of unit tests. This video will explain these differences. he.kendallhunt.com/product/software-design 0:00 Introduction 0:22 Parts of an Integration Test 2:53 Setup 3:38 Exercise 4:29 Verify 5:29 Teardown 5:57 Conclusion
Source Management - Commit Graph
Переглядів 13Місяць тому
A commit graph is a visualization tool enabling developers to better understand complex relations between multiple branches and versions. This video will explain the parts of a commit graph. he.kendallhunt.com/product/software-design 0:00 Introduction 0:20 Commit Graph Symbols 2:07 Commit Graph and Source Management Pseudocode 3:50 Example 1.5.1 5:47 Conclusion
Integration Test - Three Examples
Переглядів 23Місяць тому
Three examples of integration tests, with an emphasis of how they are different than unit tests. he.kendallhunt.com/product/software-design 0:00 Introduction 0:18 Example - Credit Card 2:39 Example - List Application 4:22 Example - Projectile Motion 5:50 Conclusion
Source Management - The Four Levels
Переглядів 21Місяць тому
There are four levels of source management: Atomic (only ever one copy of an asset), Archive (periodic backups are made), Single Root (many contributors but only one master copy), and Multi-Root. This video will explain each level and list several best practices for each. he.kendallhunt.com/product/software-design 0:00 Introduction 0:30 4 Levels 1:32 Level 0 - Atomic 2:27 Level 1 - Archive 4:19...
Integration Tests - Four Types of Software Tests
Переглядів 65Місяць тому
This video will explain the four types of software tests (unit tests, integration tests, system tests, and acceptance tests). It will focus on what makes the integration test unique and how we can build them effectively. he.kendallhunt.com/product/software-design 0:00 Introduction 0:21 Overview of Integration Tests 2:38 Four Different Types of Tests 4:02 Unit Tests and Integration Tests 5:48 Co...
Algorithm Abstraction - Strategy, Template Method, and Decorator
Переглядів 4712 місяці тому
There are three algorithm abstraction design patterns: the Strategy, the Template Method, and the Decorator. This video compares and contrasts them through integration into a single program: an orbit simulator. he.kendallhunt.com/product/software-design 0:00 Introduction 0:18 Problem Definition 2:36 Strategy 6:03 Template Method 9:04 Decorator 12:18 Conclusion
FICC 2024 : Measurements of Inheritance Design Quality
Переглядів 393 місяці тому
A video of my presentation at FICC 2024 in Berlin, Germany on the 3rd of April, 2024. 0:00 Introduction 0:31 Importance of Metrics 1:10 Problem Domain 1:47 Literature Review Part I 2:20 Literature Review Part II 4:53 Literature Review Part III 5:41Three Metrics 6:12 Metric: Adaptability 6:52 Metric: Alignment 7:24 Metric: Redundancy 8:01 Rubric 8:33 Conclusion
Metaphor - Demonstration of building a class representing collections
Переглядів 133 місяці тому
A demonstration of the process of thoughtfully designing and building the public interfaces for a class that represents a collection. This demonstration is performed in C . he.kendallhunt.com/product/software-design 0:00 Introduction 0:23 Operations for Collections 0:55 Demo - Interfaces 1:02 Demo - Size 1:18 Demo - Insert 1:38 Demo - Remove 1:54 Demo - Iterator 3:41 Demo - Begin and End 4:07 D...
Interface - The Adapter Design Pattern
Переглядів 833 місяці тому
An adapter, also known as a wrapper, is a class exhibiting the interface that the client expects while also containing a class that the client needs. The provider interface cannot be changed by the client; it is provided as-is. This video will explain the adapter design pattern. he.kendallhunt.com/product/software-design 0:00 Introduction 0:14 Overview of the Adapter Design Pattern 1:22 Example...
Top-Down - How it relates to Agile
Переглядів 324 місяці тому
Many associate top-down design with the Waterfall software development methodology. This video will define both Waterfall and Agile, as well as show how the top-down design process is equally applicable to both. he.kendallhunt.com/product/software-design 0:00 Introduction 0:18 Waterfall and Agile 0:38 Winston Royce 1:34 Agile 2:21 SCRUM Sprint 2:50 Waterfall in a Sprint 3:15 Identifying Program...
Metaphor - How to design public interfaces for classes containing collections
Переглядів 424 місяці тому
When working with collections, there are a set of operations that most developers have come to expect. This video describes those interfaces. he.kendallhunt.com/product/software-design 0:00 Introduction 0:17 Operations for Collections 1:00 Add 1:32 Remove 1:43 Get 2:11 Update and Find 2:30 Size 2:41 Iterate 3:29 Conclusion
V-Model - The Role of the Test Plan
Переглядів 1164 місяці тому
V-Model - The Role of the Test Plan
V-Model - The 9 steps of the V-Model process
Переглядів 1024 місяці тому
V-Model - The 9 steps of the V-Model process
Noun Identification - An example of how to identify program entities
Переглядів 254 місяці тому
Noun Identification - An example of how to identify program entities
Noun Identification - The Process
Переглядів 224 місяці тому
Noun Identification - The Process
Noun Identification - What is the noun identification process
Переглядів 524 місяці тому
Noun Identification - What is the noun identification process
Test Driven Development - The Process
Переглядів 364 місяці тому
Test Driven Development - The Process
Test Driven Development - Definition
Переглядів 254 місяці тому
Test Driven Development - Definition
Robustness - Examples
Переглядів 334 місяці тому
Robustness - Examples
Unit Test - a Test Runner
Переглядів 294 місяці тому
Unit Test - a Test Runner
Unit Test - What is a Unit Test?
Переглядів 364 місяці тому
Unit Test - What is a Unit Test?
Robustness - Levels
Переглядів 385 місяців тому
Robustness - Levels
Robustness - Definition
Переглядів 495 місяців тому
Robustness - Definition
Layered System Design - The Client Server Architecture
Переглядів 525 місяців тому
Layered System Design - The Client Server Architecture
Abstraction - Examples of how to classify design quality
Переглядів 195 місяців тому
Abstraction - Examples of how to classify design quality
Abstraction - The Four Levels of Abstraction
Переглядів 575 місяців тому
Abstraction - The Four Levels of Abstraction

КОМЕНТАРІ

  • @sanstac
    @sanstac 4 дні тому

    Hi! Thank you for this video! Super useful and very well detailed, easy to follow, and explained! Keep up the great work. This helped me while I'm a student on an internship this summer and got assigned a task to create an SDD (which I had never heard of before). I feel I have a pretty good idea now! Deserves more views! Thanks! Have a great day! You got a new subscriber here haha

  • @opethforlife
    @opethforlife Місяць тому

    Your videos are so good.

  • @joymundia1703
    @joymundia1703 2 місяці тому

    I really love how the video started by first building a case on the importance of robustness using real life examples. Overall the video was amazing 😊

  • @rtothec1234
    @rtothec1234 2 місяці тому

    I totally want to get this book but when I look at the purchasing options it says something like 730 days. So is it like renting the book for 2 years? I don’t get a PDF to keep?

  • @wellingtonmusicas3144
    @wellingtonmusicas3144 3 місяці тому

    Excellent content and very didactic lecture.

  • @riccarrasquilla379
    @riccarrasquilla379 3 місяці тому

    thanks for the video

  • @chukwudiebite7775
    @chukwudiebite7775 4 місяці тому

    Thank you for you brilliant videos.

  • @carllhy
    @carllhy 4 місяці тому

    Do you have references for those definitions?

  • @NathanBird
    @NathanBird 4 місяці тому

    What is the benefit of using pointers instead of instantiating the object directly?

  • @magnusneal4898
    @magnusneal4898 4 місяці тому

    *Promo sm* 😉

  • @AbdullahAlRomman
    @AbdullahAlRomman 5 місяців тому

    Hello I researched your UA-cam channel and I see that, Your UA-cam content is amazing & very informative but Your thumbnails are low quality and are not SEO properly and there are some issues in your channel due to which your channel and videos are not ranking well and you are not getting many views, subscribers, likes. If these issues can be resolved, hopefully the videos will rank well.I am a professional UA-cam thumbnail designer & SEO expert. If you want I can solve your problems and help you rank your videos better. I am waiting for your reply.

  • @NathanBird
    @NathanBird 5 місяців тому

    Really interesting topic, thanks for the video!

  • @mockingloris
    @mockingloris 8 місяців тому

    Thanks for that refresher. I'm guilty of not being so thorough while writing loops in my code. This has given me an idea on a 'snippet framework' to integrate into my code editor for easy reuse. Cheers!

  • @br3nto
    @br3nto 8 місяців тому

    3:19 if the counters are using static vars wouldn’t that mean a race condition could be encountered if/when tests using that spy class run in parallel?

  • @TheCtrudo
    @TheCtrudo 8 місяців тому

    James Helfrich is a master instructor. I could listen to him speak on almost any topic.

    • @SoftwareDesign.Textbook
      @SoftwareDesign.Textbook 8 місяців тому

      That means a lot to me. I fear that a conference talk can be a bit dry!

  • @theintjengineer
    @theintjengineer 8 місяців тому

    Bachelors in CS and a PhD in Public Speaking😮

  • @1019jatin
    @1019jatin 9 місяців тому

    Idk how yt knew this(without me explicitly searching about chess) but, just now I am also designing a chess engine. I used the same Board and Piece classes and inheritance. I was thinking about my implementing constructors for pieces and just then this popped up. I had a similar idea, but this video sort of concretely defined the design pattern and the Factory term.

  • @theintjengineer
    @theintjengineer 9 місяців тому

    Loved that🎉

  • @papayaw2920
    @papayaw2920 9 місяців тому

    We would love more Q and A examples in the videos

  • @theintjengineer
    @theintjengineer 9 місяців тому

    Good stuff. I'll have to play with it a bit to fully grasp the interfaces and communication haha Thanks, Dr. James. Greetings from Germany.

  • @dclxviclan
    @dclxviclan 10 місяців тому

    Cool, why so little subscribers, u create powerfull work with tutorials

    • @SoftwareDesign.Textbook
      @SoftwareDesign.Textbook 6 місяців тому

      Thank you for the comment. The channel is relatively new. If you have any requests for content, please let me know.

    • @dclxviclan
      @dclxviclan 6 місяців тому

      @@SoftwareDesign.Textbook alas, unfortunately, I am also the owner of a small channel, if I had the resources, I would help, I’m just surprised that on the Internet with useless, degrading content, there are more subscribers than intelligent channels 😒🤐

  • @brianscott3079
    @brianscott3079 11 місяців тому

    *Promo SM* 💪

  • @theintjengineer
    @theintjengineer Рік тому

    I just would like to say that much of that formatting can be now done with std::format [C++20; it will simplify that a lot] and now we even have std::print (that's C++23) and regarding the operation, we can use, for instance, views::transform, views::filter, views::take, etc. [from the C++20 Ranges Library]😅 When I get the book (and given I have enough time), I'll try to update the examples to C++20++. This should be fun😊 As always, great video, Dr. James. Thank you.

    • @SoftwareDesign.Textbook
      @SoftwareDesign.Textbook 10 місяців тому

      I love format strings. I was first introduced to the concept in Python and was glad to see that C++ has adopted it as well. Of course, as an old-time C programmer who spent much time with printf(), it is nice to see old ideas get refreshed.

  • @theintjengineer
    @theintjengineer Рік тому

    I really want this book. Please, make it available on the online shop! Thanks!

    • @SoftwareDesign.Textbook
      @SoftwareDesign.Textbook 10 місяців тому

      It is available now at: he.kendallhunt.com/Helfrich_software. Thank you for your interest. Note that we cannot offer a print version right now because the 1,200 pages is greater than the print capacity of Kendall Hunt.

  • @theintjengineer
    @theintjengineer Рік тому

    Thanks, James! Also, I basically like, buy and interact with your content because you use C++. Everything else out there is either Python or ugly JS already and that sucks. So, please, keep the C++ Spirit. [I bought the _C++ Data Structures_ Book, which I loved, and am waiting for _Software Design_ to become available🙌] Cheers.

  • @manhoosnick
    @manhoosnick Рік тому

    Well explained, thanks a lot.

    • @SoftwareDesign.Textbook
      @SoftwareDesign.Textbook 6 місяців тому

      If you have any requests for videos in the Software Design space, please do not hesitate to let me know.