Requirements Gathering for Secure Software Development

Start Date: 07/05/2020

Course Type: Common Course

Course Link: https://www.coursera.org/learn/requirements-gathering-secure

About Course

In Software Requirements Elicitation for Secure Software Development, we're going to discuss the overall software requirements process as it applies in waterfall, spiral, and agile models. You'll learn about each of these processes and your goals as a software requirements analyst. This is not an easy task! Who do you talk to, when, and what kind of knowledge are you trying to obtain, in any software life cycle? How do you handle obstacles as you go? These are the questions we will focus on answering in this specialization.

Course Syllabus

Software Requirements are a vital part of the Software Development Lifecycle. While there are many ways to go about collecting and recording requirements, the cost of bad requirements is high. Here we discuss what Software Requirements Specifications are and some challenges in writing them well.

Coursera Plus banner featuring three learners and university partner logos

Course Introduction

Requirements Gathering for Secure Software Development In this course we will learn foundational requirements gathering knowledge and how to use that knowledge for developing secure software. We will cover topics such as: • Types of requirements gathering • Information theory on requirements gathering • Computer program analysis • Confidentiality and integrity requirements • Security and authentication requirements We will get you up to date on the state of the art in requirements gathering and how to use that knowledge for requirements writing. We will also introduce the "go-to-guidance" for writing requirements that are easy to understand and easy to read. This is the third course in the Secure Software Engineering specialization that explores the many requirements of modern software development. This specialization focuses on the topics that apply to a wide number of subjects, including application development, embedded systems, network access, reliability, and performance, and management.Welcome & Familiarity with the Pre-WG Discussion Introduction to Requirements Writing Cryptography & Authentication Hardware & Network Security Pre-Calculus: Functions Pre-Calculus introduces new math concepts and vocabulary that will expand your thinking skills during college-level math. This course builds upon calculus fundamentals, showing you how to solve problems involving functions and their applications. You will develop deeper understanding of functions and their applications. You will master calculus's rich grammar and syntax, improve your cross-disciplinary calculus

Course Tag

Requirements Elicitation Requirements Analysis Software Requirements Requirements Engineering

Related Wiki Topic

Article Example
Certified Software Development Professional The Certified Software Development Associate certification was available to graduating software engineers and early-career software professionals who did not meet the eligibility requirements for the CSDP.
Software requirements specification The software requirements specification document enlists enough and necessary requirements that are required for the project development. To derive the requirements we need to have clear and thorough understanding of the products to be developed or being developed. This is achieved and refined with detailed and continuous communications with the project team and customer till the completion of the software.
Software development In the book ""Great Software Debates"", Alan M. Davis states in the chapter ""Requirements"", subchapter ""The Missing Piece of Software Development""
Software requirements specification Software requirements specification establishes the basis for an agreement between customers and contractors or suppliers (in market-driven projects, these roles may be played by the marketing and development divisions) on what the software product is to do as well as what it is not expected to do. Software requirements specification permits a rigorous assessment of requirements before design can begin and reduces later redesign. It should also provide a realistic basis for estimating product costs, risks, and schedules. Used appropriately, software requirements specifications can help prevent software project failure.
Software development folder A software development folder or file is a physical or virtual container for software project artifacts, including: requirements, plans, designs, source code, test plans and results, problem reports, reviews, notes, and other artifacts of the development process.
Software requirements Elicitation is the gathering and discovery of requirements from stakeholders and other sources. A variety of techniques can be used such as joint application design (JAD) sessions, interviews, document analysis, focus groups, etc. Elicitation is the first step of requirements development.
Agile software development Agile software development describes a set of principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. These principles support the definition and continuing evolution of many software development methods.
Scrum (software development) The hybridization of Scrum with other software development methodologies is common as Scrum does not cover the whole product development lifecycle; therefore, organizations find the need to add in additional processes to create a more comprehensive implementation. For example, at the start of product development, organizations commonly add process guidance on business case, requirements gathering and prioritization, initial high-level design, and budget and schedule forecasting.
Software requirements Requirements change during projects and there are often many of them. Management of this change becomes paramount to ensuring that the correct software is built for the stakeholders.
Requirements analysis Steve McConnell, in his book "Rapid Development", details a number of ways users can inhibit requirements gathering:
Software requirements Software Requirements is a field within software engineering that deals with establishing the needs of stakeholders that are to be solved by software. The IEEE Standard Glossary of Software Engineering Terminology defines a requirement as:
Software development process Rapid application development (RAD) is a software development methodology, which favors iterative development and the rapid construction of prototypes instead of large amounts of up-front planning. The "planning" of software developed using RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements.
Software development Computer-aided software engineering (CASE), in the field software engineering, is the scientific application of a set of software tools and methods to the development of software which results in high-quality, defect-free, and maintainable software products. It also refers to methods for the development of information systems together with automated tools that can be used in the software development process. The term "computer-aided software engineering" (CASE) can refer to the software used for the automated development of systems software, i.e., computer code. The CASE functions include analysis, design, and programming. CASE tools automate methods for designing, documenting, and producing structured computer code in the desired programming language.
Software development Maintaining and enhancing software to cope with newly discovered faults or requirements can take substantial time and effort, as missed requirements may force redesign of the software.
Requirements management Requirements management involves communication between the project team members and stakeholders, and adjustment to requirements changes throughout the course of the project. To prevent one class of requirements from overriding another, constant communication among members of the development team is critical. For example, in software development for internal applications, the business has such strong needs that it may ignore user requirements, or believe that in creating use cases, the user requirements are being taken care of.
Software requirements The activities related to working with software requirements can broadly be broken up into Elicitation, Analysis, Specification, and Management.
Software development Software can be developed for a variety of purposes, the three most common being to meet specific needs of a specific client/business (the case with custom software), to meet a perceived need of some set of potential users (the case with commercial and open source software), or for personal use (e.g. a scientist may write software to automate a mundane task). Embedded software development, that is, the development of embedded software such as used for controlling consumer products, requires the development process to be integrated with the development of the controlled physical product. System software underlies applications and the programming process itself, and is often developed separately.
Software Development Security Applications are typically developed using high-level programming languages which in themselves can have security implications. The core activities essential to the software development process to produce secure applications and systems include: conceptual definition, functional requirements, control specification, design review, code review and walk-through, system test review, and maintenance and change management.
Software development The need for better quality control of the software development process has given rise to the discipline of software engineering, which aims to apply the systematic approach exemplified in the engineering paradigm to the process of software development.
Software Development Security Security is part of software development process, is an ongoing process involving people and practices, and ensures application confidentiality, integrity, and availability. Secure software is the result of security aware software development processes where security is built in and thus software is developed with security in mind.