你将学到什么
Secure design
UML, unit testing, and ethics
Effective user interfaces
Database design
课程概况
Information security is an extremely important topic in our world today. As individuals, we seek to protect our personal information while the corporations we work for have to protect suppliers, customers, and company assets. Creating secure software requires implementing secure practices as early in the software development lifecycle (SDLC) as possible.
This Specialization focuses on ensuring security as part of software design and is for anyone with some workplace experience in software development who needs the background, perspective, and skills to recognize important security aspects of software design.
You’ll consider secure design for multiple SDLC models, software architecture considerations, and design patterns. You’ll understand how to identify and implement secure design when considering databases, UML, unit testing, and ethics. Mindsets and attitudes of successful designers—and hackers—are presented as well as project successes and failures.
Always at the core of front-end design will be user experience and you will have the opportunity to ensure clean and effective user interfaces that also serve to provide the best security. Back-end development topics such as database design are also covered.
包含课程
课程1
Software Design as an Element of the Software Development Lifecycle
This course talks about software development lifecycles a description/prescription for how we write software. Design is a step in this life cycle, and the course explores the implications of this. Design has a role in the life cycle; it is always there, regardless of the kind of life cycle we’re talking about. Why is that? Why was design considered as a step in this life cycle?
课程2
Software Design as an Abstraction
The design step in developing software has some unique characteristics. First of all, it’s the only step where drawing pictures of things is the norm. Why is that? What do pictures do that other representations cannot do? Pictures have varying levels of detail; pictures have context. Pictures…paint a picture. Why are these things important? In this course, too, we begin looking at other disciplines (building architecture is a favorite one) for lessons on design.
课程3
Software Design Methods and Tools
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.
课程4
Software Design Threats and Mitigations
The design step in developing software has some unique characteristics. First of all, it’s the only step where drawing pictures of things is the norm. Why is that? What do pictures do that other representations cannot do? Pictures have varying levels of detail; pictures have context. Pictures…paint a picture. Why are these things important? In this course, too, we begin looking at other disciplines (building architecture is a favorite one) for lessons on design.
课程项目
Students will create a Unified Modeling
Language (UML) Class diagram and a UML Sequence diagram using IBM’s Rhapsody
modeling tool for a set of classes and actions described in the lectures.
Downloading and activating Rhapsody is also covered. Students will also
download and install NetBeans for Java and JUnit, a unit testing tool.
Students will configure NetBeans to use JUnit and test code written for the
classes and methods described in the UML project. Finally, students will
explore case studies of a successful (Bitcoin) and unsuccessful (Therac-25)
designs.
预备知识
You must know how to code (in some language) and since this is a graduate course, it is helpful if you have some workplace experience in software development.