Since many software developers are compulsive coders, they have created software over the years to help them do their job. There are tools which make design and its associated tasks easier. The course introduces some basic tools and techniques to help you with design. Tools aren’t always tangible, however. The last two lessons of this course discuss questions of Ethics in software development. The purpose here is, as with tools, to equip you to better carry our your responsibilities as a designer. Students will be required to have a prior knowledge of writing and delivering software and some programming knowledge in java.

Ministrado por

Albert Glock

Transcrição

Hi, welcome to module three in the Secure Software Design specialization. In modules one and two, we covered design as an element in the software development lifecycle. How it was an interface between requirements on the one hand and implementation on the other. In module two, we focused on design as an abstraction: how it provided a high level perspective of the project, how the design drawings aided understanding, and how changes could be made easily to the project in the design phase rather than in the implementation phase. In this third module, we'll look at some different design methods, explore the UML modeling tools, talk about the broad design of Bitcoin as a secure system, and also address matters of ethics in software design. As in the first two modules of the specialization, it's important to know that we'll be discussing both standard design as it's been talked about for decades and the newer security perspective. To recall a point I made earlier though, it's often the case that secure design is simply good design. By compromising design steps taking shortcuts in the name of profitability, we've created and released inferior software. In this module, we'll explore a hierarchical form of design called Jackson Structured Design. We'll take a look at rigorous implementations and a design language called Z pronounced Zed. We'll discuss two important testing tools, J-Unit and N-Unit. We'll discuss how the large US businesses use Test-driven design. We'll talk about why you have to be familiar with the hardware, although by now I'm sure you know that I'm a fan of designers knowing their hardware. We'll look at the original paper that described Bitcoin and go over elements of its design. Finally, we'll talk about the role of ethics in design. At this point, I should mention one very important principle and, that is, that the design itself can be an abstract notion of what the software should look like. Mostly we'll be talking about representations or views of the design. We can look at the same design through static or dynamic eyes. Through static perspectives we'll see the structure of the design, what's built on what and what's connected to what? If we look at design, design from a dynamic perspective, we'll see how the data flows and how it interacts with the user. Is very difficult to get at the exact nature of the design because as Alistair Cockburn points out, "It's only in the minds of the developers." The representations are on paper, but each representation is only a transformation from the intellectual realm to the visual. So keep in mind that we'd be presenting a lot of different kinds of design representations, not a lot of different kinds of designs. Thanks for your brief attention. Now, let's get going.