Learn about designing and maintaining secure software. Acquire the approaches and skills required to create secure software.
Suggested by: Coursera (What is Coursera?)
No prior knowledge required
No unnecessary risks
Information security is a very important issue in our world today. As individuals, we strive to protect our personal information, while the companies we work for are required to protect suppliers, customers, and company assets. Creating secure software requires implementing security practices as early as possible during the software development life cycle (SDLC).
This specialization focuses on ensuring security as part of software design and is intended for anyone who has experience working in the field of software development and needs the background, perspective, and skills to identify important aspects of information security in software design.
Students will create a class diagram and a sequence diagram in Unified Modeling Language (UML) using IBM’s Rhapsody modeling tool for a set of classes and operations described in lectures. Downloading and running Rhapsody will also be covered.
Students will also download and install NetBeans and JUnit. 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 cases of successful design (Bitcoin) and unsuccessful design (Therac-25).
This course deals with software development life cycles, a description/recommendation of how to write software. Planning is a phase in this cycle, and the course examines the implications of this. Planning has a role in the life cycle; it always exists, regardless of the type of cycle in question. Why is this so? Why is planning considered a phase in this life cycle?
The design phase of software development has some unique features. First of all, it is the only phase where we are supposed to draw things. Why is that? What do images do that other representations cannot? Images have different levels of detail; images have context. Images… paint a picture. Why are these things important? In this course, too, we begin to explore other fields (building architecture is a particular favorite) to learn about design.
Since many software developers are compulsive coders, they have developed software over the years to help them in their work. There are tools that help make design and the tasks that come with it easier. The course introduces some basic tools and techniques that will help you in your design. Tools are not always tangible, however. The last two lessons of this course deal with ethical questions in software development. The goal here, as with the tools, is to equip you to fulfill your responsibilities as a designer. Students will be asked to have prior knowledge of writing and delivering software and knowledge of programming in the Java language.
The design phase of software development has some unique features. First of all, it is the only phase where we are supposed to draw things. Why is that? What do images do that other representations cannot? Images have different levels of detail; images have context. Images… paint a picture. Why are these things important? In this course, too, we begin to explore other fields (building architecture is a particular favorite) to learn about design.



