This chapter covers SDLC, SSDLC, life cycle models, Microsoft's practices in accordance to SSDLC, and security requirements in software development, also covers Threat modeling.
Table Of Content
- Table Of Content
- Introduction to Software Application Development
- Types of Application Software
- Software Development Life Cycle
- Life Cycle Models
- SDLC Best practices
- Introduction to Application Security
- Microsoft Secure SDLC Practice and Security controls covered in each stage at a higher level
- Pratices and security controls covered in each stage -
- 1. Provide Training
- 2. Define Security Requirements
- 3. Define Metrics and Compliance:
- 4. Perform Threat Modeling
- 5. Establish Design Requirements
- 6. Define and use Crytography Standards
- 7. Manage the Security Risk of Using Third-Party Components:
- 8. Use approved tools
- 9. Perform Static Analysis security Testing (SAST)
- 10. Perform Dynamic Analysis security Testing (DAST)
- 11. Perform Penetration testing
- 12. Establish a standard Incident Response Process
- A. Requirements (Determine Application Risk Profile based on Security Requirements, Determine Control Requirements, Establish Quality Gates)
- B. Design (Architecture Design Review and Threat Modeling)
- C. Implementation (Static Analysis, Software Composition Analysis, Secret Detection, Deprecate unsafe functions, use of plugins in IDE, Safe Commit and Change Management in Repositories)
- D. Verification (Dynamic Analysis, Interactive Application Security Testing, Fuzz Testing, Abuse use case Testing, Architecture Verification).
- E. Release (Run Time Application Self Protection, Web Application Firewall, and SOP for
- Pratices and security controls covered in each stage -
- Application Security Requirements - (practice hai)
- Threat Modeling and its methodologies - IMP Qn
Introduction to Software Application Development
How was it created ??
Software development refers to the series of computer science activities which are carried our in order to create, design, test and deploy the software. Software itself is a set of instructions which are given to the system to carry out.
There are three basic types of software -
- System software
- These softwares provide core functionality to the system such as OS, disk management, utilities, hardware management and other operational necessities
- Programming software
- These software are created as tools for programmers to use such as text editors, compilers, debuggers, linters etc in order to create applications or software efficiently
- Application software
- To help users perform tasks. These software are created for certain tasks to be carried out where the application can perform operations as instructed by the user.
- Applications also refer to web and mobile applications like amazon.com
Why is it important ??
-
Software development can greatly improve the financial growth of the company in field of marketing, as clients can access your company's resources from almost anywhere.
-
It improves sales and services. Software provides a way to display and sell your services as the way your customers experience your business is very important
-
If any new product or service has been launched in your business, using software you can easily promote your products at any place and at any time without additional expenses and extra time needed. Plus this activity of promoting your products is better because it does not matter where your customers are
-
Customers engagement
-
Direct communication, as with any other strategy, direct communication cannot be achieved with proper efficieny as this one. Direct communication is very important in marketing business assets
Types of Application Software
Thick Client
These applications are installed locally on the users desktop and they are full featured. Thick client applications run independently without internet connection unlike web application which require internet connection all the time
Web Applications
A web application is a computer program that utilizes web browsers and web technology to perform tasks over the Internet. The web application requires a web server to manage requests from the client, an application server to perform the tasks requested, and, sometimes, a database to store the information
Web services
Web services is basically a software system or application that enables communication and interaction between different devices and software applications over the internet.
So web services provide a standarized way for applications to communicate with each other on the internet
RESTful services
REpresentational State Transfer (REST) is a software architectural style that developers apply to web APIs. REST APIs provide simple, uniform interfaces because they can be used to make data, content, algorithms, media, and other digital resources available through web URLs. Essentially, REST APIs are the most common APIs used across the web today.
Middleware
Middleware is software that provides common services and capabilities to applications outside of what’s offered by the operating system. Data management, application services, messaging, authentication, and API management are all commonly handled by middleware. Middleware helps developers build applications more efficiently. It acts like the connective tissue between applications, data, and users
Mobile Applications
A mobile application (also called a mobile app) is a type of application designed to run on a mobile device, which can be a smartphone or tablet computer. Even if apps are usually small software units with limited function, they still manage to provide users with quality services and experience
Software Development Life Cycle
Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop and test high quality software’s. The SDLC aims to produce a high-quality software that meets or exceeds customer expectations, reaches completion within time and cost estimated.
So there are phases within this life cycle which make up the SDLC
Requirement and Analysis
SDLC begins with requirement analysis phase, where the stakeholders discuss the requirements of the software that needs to be developed to achieve the business goal
What is a stakeholder ??
- Anyone who has an interest in the project's outcome or are impacted by the software being developed are stakeholders
- They cna be client, managers, developers etc
- The client provides the high level insight into what needs to be developed - like, he wants a watermellon app showing watermellons
- Now the developers might take that into consideration and analyze the requirements - they translate the high level specifications into technical details and see what are the constraints i.e what things can be developed and what cannot be developed…. imagine the client saying he wants a app that finds him a wife that is ready to marry him… Habibi, even AI can't do that.
Design
During the design phase, the developers and the technical architects start the high-level design of the software and system so that the designs meet the expectations of the client and fulfill the requirements as well
Coding
In this phase, developers start programming according to the requirements and design discussed in the previous phases. Database administrators create the necessary database, frontend engineers create the UI based on the design and back end developers create the overall structure of the application's data flow and how the server is going to respond to the requests. They decide which architectural style to use for API etc.
Testing
In this phase, the testers start to test the application and system. They have two things to handle -
-
Find defects or errors within the application that was programmed in the previous phase against the requirements, so that the application does work as per the requirements
-
Verify the behavior of the application against the requirements. The question should arise - "Is the application's functionality as per the requirements that was discussed in the requirement analysis phase ?". so they should verify that the application's behavior is as expected according to what was documented in the first phase
Deployment
Once the software has been fully tested and no issues remain, it meets the requirements of the client and works efficiently without any bugs. Now it is time to deploy the application to a production environment where the software can be used by users. Once a version of the software has been deployed to the production environment, there is a maintenance team that looks after any post-deployment issues.
Life Cycle Models
Waterfall Model
Waterfall model is the simplest model of SDLC or sofware development paradigm. This model states that all the phases of the SDLC function one after the other in a linear fashion. that is - when a phase is finished, then only the second phase will start and so on
In this model, each phase assumes that everything is perfectly carried out in the previous phase and nothing is left out.
Waterfall model is best suited for development when the developers have already developed a similar software in the past and are well aware of the domains