The Application of a New Secure Software Development Life Cycle (S-SDLC) with Agile Methodologies
Abstract
:1. Introduction
2. Background
2.1. Introduction
- Identification of requirements
- Architecture and design
- Codification
- Testing
- Production and maintenance of the application
2.2. Secure Software Development Life Cycle (S-SDLC)
- Security engineering activities
- Security assurance activities
- Security organizational and project management activities
- Security risk identification and management activities
- Representation No. 1: Main Concept
- Representation No. 2: Conceptual Model
- Representation No. 3: Architecture
- Representation No. 4: Algorithms (of the Source Code)
- Representation No. 4.1: Algorithms (of the Assembler Code)
- Representation No. 4.2: Algorithms (of the Assembler Code) - Modified
- Representation No. 5: Source Code (Original)
- Representation No. 5.1: Source Code (Pseudo)
- Representation No. 6: Assembler Code
- Representation No. 7: Machine Code
- Representation No. 8: Image File
- Software that is more robust and trustworthy
- Early detection of faults, coding errors, design weaknesses, security deficiencies, etc.
- Cost reduction derived from an early detection and resolution of the problems listed in the previous point
- Lower risk to the organization
2.3. Agile Methodologies
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
- Reduction in the time necessary for installation and maintenance
- Cost reduction
- Visibility from the beginning
- Improved software quality
- Better priority management
- Improved software maintenance
- Better alignment between IT (Information Technology) and the business
- Reduction in risks
- Improved team morale
- Increased productivity
- Simplified development process
- Improved engineering discipline
3. Relative Work
- Microsoft SDL: Microsoft’s model tries to include non-functional activities such as those related to security, creating a backlog of non-functional tasks or requirements. For them, it defines three phases in which the following activities are included [20]:
- ○
- Every-sprint requirements
- ○
- Bucket requirements
- ○
- One-time requirements
- BSIMM: since this S-SDLC arose from the collaboration of multiple organizations for the proposal of good practices, agile properties are addressed as part of a process of adaptation to the trend that marks the market and adaptation to the processes that are followed today in software development projects. It also introduces the concept of agile trainer to help teams adopt security practices in agile environments. Emphasis is also placed on the use of agile practices to identify metrics in early stages of development [19,24].
- Viewnext: the model proposed by [30] refers to an agile adaptation of the proposed S-SDLC. No specific details about its implementation are specified, but the AS-SDLC concept is referred to as Agile Secure Software Development Life Cycle.
4. Definition of New S-SDLC Based on Agile Methodologies
4.1. Introduction
- First of all, there are no principles, only recommendations.
- Choose a model considering the needs of the project.
- The backlog of activities identifies all the activities that will cover the requirements collected. It must be prioritized and updated according to the client’s needs and the key milestones identified by the team.
- The security requirements must be included in the backlog as an integral part of the functionalities to be covered with the development of the project.
- It is recommended to classify security activities according to their importance and the way in which they must be repeated considering at least the following three levels: activities essential for security that must be carried out for each release, activities that must be carried out at the end of each phase or for the most important releases, and activities that can be developed in any phase of the project and only need to be done once.
- Milestones have to be defined. They are used to make deliveries to customers on a regular basis and with incremental value. In these intervals of time or sprints the deliverables or releases are generated. The releases must provide an incremental value. Between each sprint it is recommended to hold an internal meeting in which the work done in the finished sprint is evaluated, reviewing the problems found, identifying improvements, planning the activities for the next one, and defining the scope of the next deliverable. These meetings are called sprint start meetings. It is recommended that the release generated at the end of each sprint be evaluated in three aspects: functionality, safety, and quality.
- Periodic communications with client. Similarly, the client must be informed of the scope and content of the releases that will be developed in each sprint. It is recommended to carry out extraordinary communications with the client in those cases in which important changes are identified in the requirements or events that seriously affect the planning of the project.
- At the end of each sprint a client meeting must be held to present the release developed in the sprint. These meetings are called release meetings.
- It is important to have an expert in security, known as the security master. It is also recommended that the development team includes one or more roles with relevant security knowledge, known as the security gurus.
- It is necessary to have a project manager, called the project master, who is responsible for ensuring compliance with the requirements and objectives of the project, plays the role of interlocutor with the client, manages internal and external problems that may affect the development of the project, and organize internal meetings and meetings with clients.
- Each member of the team is considered a leader. The project and security master advises and manages in his or her respective areas and is responsible for the final decision in case of conflict, but each and every one of the members must be considered as leaders or gurus in their areas of responsibility. Leadership should be used as a way of motivation and cohesion of team members.
- It is recommended to use the pair programming technique in order to improve the design and coding of the software by taking advantage of the evaluation from different points of view.
- It is recommended to continue training in security and development technologies. The promotion and sharing of knowledge among all team members is also important. It is proposed to implement a knowledge database or Wikibase that collects the technical, managerial or documentary knowledge that was generated during the project.
- The methodology must be applicable at any time and in any phase of the project.
- Get the most information possible before making any decision in the project. All members must provide their vision according to their role, as well as their particular vision according to their experience.
- It is recommended to deal with the uncertainty in an agile way and as early as possible regarding any aspect of the project from its detection and making it known to all team members and the client if necessary.
- It is recommended to apply the principle of code refactoring in order to facilitate the detection of errors and improve the quality of the software.
- It is recommended to follow the principle of non-reinvention. In the world of software development there are usually studies and/or technical solutions for most of the problems that need to be addressed. Therefore, a periodic review of technical guides and good practices, forums, publications, etc., is also recommended.
- Contextualize the development by identifying the most relevant attack scenarios and vulnerabilities that may affect the software.
- Measurement should be a tool for the improvement and feedback of a project. At this point it is necessary to adopt the Deming cycle guidelines corresponding to the “Check” and “Act” phases.
- Safety testing must be promoted. It is recommended to define and perform at least one safety test for each functional test that is defined.
- Documentation should be promoted. The development of a clear and detailed documentation facilitates the deployment and maintenance of the software.
- Finally, the project and participation in it must provide general and particular value to each member of the team, such as the acquisition of new technical or management skills, the accumulation of experience, the improvement of communication capabilities, etc.
4.2. Roles
- The project master is in charge of managing internal and external problems, controlling project deviations, organizing meetings, and playing the role of interlocutor with clients and final users.
- Software gurus make up the development team as specialists from different areas of development, analysis, design, testing, quality, and deployment.
- The security master is recommended to be an expert in logical security. He or she is the final one responsible talking about security-related decisions.
- Security gurus stand like software gurus but considering the security point of view. The areas of specialization in this case cover a wide range of alternatives depending on the specific requirements, but should encompass secure coding, authorization and authentication, network security, cryptography, deployment or DevOps (development operations) or SecDevOps and security in new and emerging scenarios.
- The client is the figure responsible for defining the scope, priorities, and project requirements.
- Users are the subjects for using the final software developed. Depending on the project, client and user roles can be the same.
4.3. Meetings
- The sprint start meeting aims to establish the planning of activities for the next sprint and to define the scope of the next release. In addition, the activities carried out, problems encountered, and lessons learned, are reviewed and the internal assessment of the generated release is done. Releases are typically inspected in release meetings.
- During release meetings the developed product is presented for client evaluation. This means that software is measured in terms of not only functionality, but also quality and security.
- The review meeting is an internal ceremony like the sprint start meeting, but in this case, it is an extraordinary session whose aim is to solve problems or possible deviations not foreseen in the development of a sprint.
- The feedback meeting is an extraordinary meeting requested by the client due to a change of special relevance in scope of the project, prioritization of requirements or any other situation in which the achievement of the project’s objectives may be affected. They are similar to review meetings, but in this case, they remain with the client.
- Kick-off meetings represent the launch meeting of the project in which the formal communication of the start is made. The meeting identifies the scope and context of the project; final users can provide detailed information on the requirements and any additional information that may affect it, such as time and/or quality requirements, client availability, etc.
- The closing meeting is the end-of-project meeting in which formal communication is carried out to finalize it for all those involved in the project. It includes a final assessment of the results obtained.
- The SRS (software requirement specification) meeting is the requirement’s identification meeting. The objective is this case is to obtain a first draft of the list of requirements from which the backlog of activities is made. It is recommended to keep it with the end users to carry out an in-depth analysis of the functionalities and security risks that the development can include. SRS meetings can be carried out as necessary until a solid list of requirements has been prepared and validated by the client.
4.4. Artifacts
4.5. Process
4.6. Security Activities
- Vulnerability analysis: in the phases of requirements identification, analysis, design, and implementation.
- Threat modeling: in the phases of requirements identification, analysis, design, and implementation.
- Pentesting: in the development, testing, and validation phases.
- Code analysis: during development and before deployment.
- White/black/gray testing: during the testing and validation phase.
4.7. Security Levels
- Non-existent (0)
- Very low (1)
- Low (2)
- Medium (3)
- Elevated (4)
- Very high (5)
4.8. Security Boxes
4.9. Information Gathering
- Among other aspects, the questionnaire includes questions such as:
- Session time
- Password strength
- Typology of users
- Typology of defined roles
- Connection with Internet, intranet or both
- Implementation of specific rules in the firewall
- Existence of logs in the systems in which they will be deployed
- Generation and exploitation of logs
- Criticality of the system
- Type of information stored
- Personal data
5. Testing and Validation of the New S-SDLC
5.1. Checklist
5.2. Application Scenario
- A batch process that sends planned trip data and scheduled delivery times for each day.
- A web interface used for monitoring.
- Scope and context (AC):
- ○
- Taking the scope of the application into consideration, it seems more or less clear to identify all the requirements. In that way, kick-off and SRS meetings could be held for a reasonable time and in an appropriate manner, lasting long enough to prepare the SRS.
- ○
- In regard to backlog, the activities could be prioritized according to project requirements. One of the possible difficulties could be keeping the backlog up-to-date.
- ○
- Finally, functional boxes should be clearly defined with the available information. Regarding security boxes, the following activities would be the most appropriate: risk analysis and identification of assets, vulnerability scanning, threat modeling, definition of security use cases, definition of abuse cases, use of secure coding guides, static code analysis, dynamic code analysis, code analysis, fuzz testing, security tests, white/black/gray testing, pentesting, iterative and final security review, and external analysis.
- Model selection (EM):
- ○
- Phases: The project should at least cover requirements engineering, analysis and design, coding, testing, verification and validation, deployment, and maintenance.
- ○
- Boxes assignment and prioritization: This is an important step in the development of the project. For this reason, functional- and security-related activities should be distributed among the different phases selected and guarantee the involvement of each member of the project.
- ○
- Roles: The minimum set of roles would include a project master, security master, security guru, and three software gurus.
- ○
- Training: No specific training would be required.
- ○
- Sprints and releases: Based on the project planning, the releases to be delivered could include requirements specification, use case diagrams, data model, design model, architecture, web application prototype, batch procedures, web application with information of positioning, web application with path information, web application with service information, web application and proven batch procedures, web application and validated batch procedures, and documentation. Regarding sprints, one-week sprints would be suitable to be planned during the requirements identification and analysis phases. From the design phase until the end of the development, the duration could be increased to two weeks.
- ○
- Security Level: At first, it is important to take the threats that can most likely affect the application into consideration. Those threats are unauthorized access to the application, unauthorized modification of information, information leaks, man in the middle (MitM) attacks, manipulation of activity records, lack of updating the standard software, dissemination of harmful software, denial of service (DoS), denial of distributed service (DDoS), and lack of awareness regarding information security.
- Development (DP):
- ○
- Meetings: During the development of the project, all team members are responsible for carrying out and participating in the different meetings established, such as sprint start meetings, release meetings, review meetings, feedback meetings, and closing meetings.
- ○
- Status and priorities update: As we previously said regarding backlog, one of the possible difficulties could be keeping the boxes and requirements up-to-date. The whole team is accountable.
- ○
- Releases: At this point, it is important to assure functionality, quality, and security in each release.
- ○
- Evaluation and communications: Focus on regular and continuous communication with client.
- ○
- Testing: For the project, it would be relevant to focus on the results of security tests, white/black/gray testing, pentesting activities, and static and dynamic code analysis. These can be useful to detect both functional and security problems and can help save time.
- Conclusions and lesson learned (CL):
- ○
- Wikibases: It mentions some guides of how to secure a batch process, the mechanisms used to protect and at the same time, allow real time positioning of different elements, in this case, messengers, or the methods for conducting functional and security tests in a web-based environment.
- ○
- Documentation: Finally, it is important to emphasize in the real need of generating appropriate documentation.
5.3. Expert Assessment
- This method is adequate to accomplish a secure development. It properly addresses security activities, roles, artifacts, security levels and boxes, meetings and communications, and activities such as reviewing testing reports or the process of vulnerabilities correlation inside the sprints of an agile development process.
- The set of security activities is very complete, and the method has taken the necessary flexibility to assess and take into consideration different security levels.
- SCRUM does not take security issues into account, so it is time to consider it as any other activity to be carried out. Therefore, it is a very good idea to present it as another step to take in agile methodologies.
- The proposed validation checklist is detailed and comprehensive and covers all the necessary activities to implement S-SDLC properly.
- The definition of this S-SDLC makes the formalization of the introduction of security in software development from the initial stage much easier. It is the key to obtain secure software, allowing vulnerabilities to be discovered before they make considerable damage in the amount of time spent in development or, sometimes, even at a project stage when they are almost impossible to solve.
- The idea of controlling the software to be developed and also the libraries, dependencies or frameworks that have been used to build the software is very interesting
- This study agrees with the creation of a Wikibase to preserve the knowledge and valuable experience obtained in the development of the project.
- This study agrees with the sentence: “It is not recommended to make independent lists of security requirements. If they separate, there is a risk of prioritizing functional requirements to the detriment of security.” Keeping independent security requirement lists leads to prioritizing the development of functional requirements.
- This study agrees with pair programming. At this point, on the one hand, a change of mentality is required so that this principle can be applied, and on the other, it should be implemented in a rotary basis, so those “pairs” can constantly be changing within as the team members are acquiring new experience.
- Regarding code refactoring, it seems to be essential, and at the same level as the unit tests, which are the basis of robust, quality, and secure software (quality and security are strongly connected). The software is not built linearly but iteratively and therefore continuous improvement requires continuous software changes. Therefore, software must be prepared to adapt to changes in an agile way.
- This study liked the orientation given to how the team should work, the importance of knowledge management, information sharing, and documentation, something which many methodologies have considered incompatible with agile development.
- The documentation generated could be improved in order to optimize future code maintenance. The generation of WikiBases should remain in a pending state until the end of the project so the know-how generated during development would be as complete as possible.
- Based on our latest projects (cloud-based projects), the importance of security in software development is highlighted. It is also important to continue evolving in different ways such as the development of a DevSecOps environment to implement automated functional and security tests.
- This study believes that the issue of security could be extended, at least with one more paragraph, giving examples of essential security activities that should be carried out at each release, activities that should have be performed at the end of each phase, and activities that should be carried out just once. It is important to make clear how crucial security is in software development.
- Another relevant point to emphasize would be the importance of the users in software development. For the success of the project, I think it is essential to have highly motivated users who will really add value to the software. The client’s role is also very important, but we strongly support the users’ side, especially if they are really committed to the project. Knowing the user also helps to know and reduce security vulnerabilities.
- During the development of the project, delivery times were not been scrupulously maintained due to lack of time since the criterion of finalizing the security revisions for each release was prioritized. We believe that the haste and stress generated by the start of the next project prevented us from carrying out the closing session (closing meeting). Otherwise, we had no problems applying the proposed methodology.
- An important part of agile methodologies is to manage changes in requirements and design, especially those that affect security. It is important to remember that these changes must be verified and validated.
- The use of tools for project management in software development projects which implement agile methodologies could be interesting. They could facilitate the transparency of activities and allow the measurement of the level of progress and the status of all the activities at all times.
- According to principle #22, there are people who believe that the best documentation is the code itself. Unit tests should be also taken into consideration. It is possible to say that the best documentation for a project is when unit tests link directly to the system’s own requirements.
5.4. Validation Conclusions and Suitability of the Proposed Methodology
6. Conclusions
Author Contributions
Funding
Conflicts of Interest
References
- Khan, M.U.N.; Zulkernine, M. On selecting appropriate development processes and requirements engineering methods for secure software. In Proceedings of the 2009 33rd Annual IEEE International Computer Software and Applications Conference, Seattle, WA, USA, 20–24 July 2009; pp. 353–358. [Google Scholar]
- Brian, C.; Jacob, W. Secure Programming with Static Analysis; Pearson Education: London, UK, 2007. [Google Scholar]
- Rea-Guaman, A.; Sánchez-García, I.; San Feliu, T.; Calvo-Manzano, J. Maturity models in cybersecurity: A systematic. In Proceedings of the 12th Iberian Conference on Information Systems and Technologies, Lisbon, Portugal, 21–24 June 2017. [Google Scholar]
- Lipner, S. The trustworthy computing security development lifecycle. In Proceedings of the 20th Annual Computer Security Applications Conference, Tucson, AZ, USA, 6–10 December 2004; pp. 2–13. [Google Scholar] [CrossRef]
- Secure Software Development Life Cycle. Available online: https://www.owasp.org/images/9/9d/OWASP-LATAMTour-Patagonia-2016-rvfigueroa.pdf (accessed on 11 September 2019).
- Beiter, M. Steps in a Secure Software Development Lifecycle Model. Available online: https://www.michael.beiter.org/2013/11/29/steps-in-a-securesoftware-development-lifecycle-model-1/ (accessed on 11 September 2019).
- Dadu, M.I. Secure software development model: A guide for secure software life cycle. In Proceedings of the International MultiConference of Engineers and Computer Scientists (IMECS), Hong Kong, China, 17–19 March 2010; Volume 1. [Google Scholar]
- Buinevich, M.; Izrailov, K.; Vladyko, A. The life cycle of vulnerabilities in the representations of software for telecommunication devices. In Proceedings of the 18th International Conference on Advanced Communication Technology (ICACT), Pyeongchang, Korea, 31 January–3 February 2016; pp. 430–435. [Google Scholar]
- Hudaib, A.; AlShraideh, M.; Surakhi, O.; Khanafseh, M. A survey on design methods for secure software development. Int. J. Comput. Technol. 2017, 16, 7047–7064. [Google Scholar]
- Characteristics of Agile Development Success. Available online: https://resources.collab.net/agile-101/agile-development-success (accessed on 11 September 2019).
- Martin, R. Clean Code: A Handbook of Agile Software Craftsmanship; Pearson Education: London, UK, 2008. [Google Scholar]
- Martin, R. Agile Software Development, Principles, Patterns, and Practices; Prentice Hall: Upper Saddle River, NJ, USA, 2002. [Google Scholar]
- Cohn, M. User Stories Applied: For Agile Software Development; Addison-Wesley Professional: Boston, MA, USA, 2004. [Google Scholar]
- What is Agile Project Management? Available online: https://www.apm.org.uk/resources/find-a-resource/agile-project-management/ (accessed on 11 September 2019).
- Agile Manifesto. Available online: http://agilemanifesto.org/iso/en/ manifesto.html (accessed on 11 September 2019).
- Agile Software Development. Available online: https://en.wikipedia.org/wiki/Agile_software_development#The_Agile_Manifesto (accessed on 11 September 2019).
- Noopur, D. Secure Software Development Life Cycle Processes: A Technology Scouting Report; Software Engineering Institute: Pittsburgh, PA, USA, 2005. [Google Scholar]
- Trujillo, D.; Chávez, A. Sistema de Control. de Versiones para el Desarrollo de Software Seguro; Fundación Universitaria los Libertadores: Bogotá, Colombia, 2016. [Google Scholar]
- Security Software Building Security in Seven Touchpoints for Software Security by Gary McGraw. Available online: http://www.swsec.com/resources/touchpoints/ (accessed on 11 September 2019).
- Microsoft SDL—Microsoft Talks about SDL and How it Changed the Security Landscape in the Software Industry. Available online: https://mspoweruser.com/microsoft-talks-about-sdl-and-how-it-changed-the-security-landscape-in-the-software-industry/ (accessed on 11 September 2019).
- CLASP Concepts. Available online: https://www.owasp.org/index.php/CLASP_Concepts (accessed on 11 September 2019).
- Humphrey, W. The Team Software Process (TSP); Software Engineering Institute: Pittsburgh, PA, USA, 2000. [Google Scholar]
- Shirazi, M.R.A.; Jaferian, P.; Elahi, G.; Baghi, H.; Sadeghian, B. RUPSec: An Extension on RUP for Developing Secure Systems—Requirements Discipline; Amirkabir University of Technology: Tehran, Iran, 2007; Volume 1, pp. 1–5. [Google Scholar]
- BSIMM. Available online: https://www.bsimm.com/ (accessed on 11 September 2019).
- Chandra, P. Software Assurance Maturity Model. 2011. Available online: https://opensamm.org/downloads/SAMM-1.0-en_US.pdf (accessed on 11 September 2019).
- Fléchais, I. Designing Secure and Usable Systems; University College of London: London, UK, 2005; pp. 57–59. [Google Scholar]
- Mahendran, F. Secure Software Development Model (SSDM); Singapore Computer Society: Singapore, Singapore, 2012. [Google Scholar]
- Howard, M.; LeBlanc, D. Writing Secure Code, 2nd ed.; Microsoft Press: Hoboken, NJ, USA, 2003. [Google Scholar]
- Bassil, Y. A simulation model for the waterfall software development life cycle. arXiv 2012, arXiv:12056904. [Google Scholar]
- Lindo, A.C. Modelos de Desarrollo Seguro del Software. Available online: http://web.fdi.ucm.es/posgrado/conferencias/AndresCaroLindo-slides.pdf (accessed on 11 September 2019).
- Futcher, L.; von Solms, R. SecSDM: A model for integrating security into the software development life cycle. In Fifth World Conference on Information Security Education; Springer: Berlin/Heidelberg, Germany, 2007; pp. 41–48. [Google Scholar]
- Essafi, M.; Jilani, L.; Ghezala, H.B. S2D-prom: A strategy oriented process model for secure software development. In Proceedings of the International Conference on Software Engineering Advances (ICSEA 2007), Cap Esterel, France, 25–31 August 2007; p. 24. [Google Scholar]
- Hall, A.; Chapman, R. Correctness by construction: Developing a commercial secure system. IEEE Softw. 2002, 19, 18–25. [Google Scholar] [CrossRef]
- Mead, N.; Stehney, T. Security Quality Requirements Engineering (SQUARE) Methodology; Software Engineering Institute; Carnegie Mellon University: Pittsburgh, PA, USA, 2006; pp. 1–7. [Google Scholar]
- Oracle Software Security Assurance. Available online: https://www.oracle.com/assets/software-security-assurance-2293569.pdf (accessed on 23 October 2019).
- SCRUM. Available online: http://www.scrum.org/ (accessed on 11 September 2019).
- What is Scrum? Available online: https://www.atlassian.com/agile/scrum (accessed on 11 September 2019).
- Fuentes, J.R.L. Desarrollo de Software Ágil: Extreme Programming y Scrum; IT Campus Academy: Vigo, España, 2014; ISBN 978-1502952226. [Google Scholar]
- Lasa Gómez, C.; Álvarez García, A.; de las Heras del Dedo, R. Métodos Ágiles. Scrum, Kanban, Lean; Anaya Multimedia: Madrid, Spain, 2017; ISBN 9788441538887. [Google Scholar]
- Extreme Programming: A Gentle Introduction. Available online: http://www.extremeprogramming.org/ (accessed on 11 September 2019).
- Kanban Encyclopedia: Concepts and Terms. Available online: https://kanbanize.com/kanban-resources/getting-started/kanban-encyclopedia/ (accessed on 11 September 2019).
- Lean Software Development. Available online: http://www.javiergarzas.com/2012/10/lean-software-development-2.html (accessed on 11 September 2019).
- Feature Driven Development (FDD) and Agile Modeling. Available online: http://agilemodeling.com/essays/fdd.htm (accessed on 23 October 2019).
- Firdaus, A.; Ghani, I.; Jeong, S.R. Secure feature driven development (SFDD) model for secure software development. Procedia-Soc. Behav. Sci. 2014, 129, 546–553. [Google Scholar] [CrossRef]
- Kosten, S. Cypress Data Defense. Available online: https://www.cypressdatadefense.com/technical/matching-sdlc-model-to-the-bestsecurity-processes/ (accessed on 8 September 2019).
- Sass, R. How to Balance between Security and Agile Development the Right Way. Available online: https://resources.whitesourcesoftware.com/blog-whitesource/how-to-balance-between-security-and-agile-development-the-right-way (accessed on 11 September 2019).
- Komlo, C.; Gómez, M. Incorporating Security Best Practices into Agile Teams. 2016. Available online: https://www.thoughtworks.com/insights/blog/incorporating-security-best-practices-agile-teams (accessed on 11 September 2019).
- Ghani, I.; Azham, Z.; Jeong, S.R. Security backlog in Scrum security practices. In Proceedings of the Malaysian Conference in Software Engineering (MySEC), Johor Bahru, Malaysia, 13–14 December 2011. [Google Scholar] [CrossRef]
- SDL-Agile Requirements. Available online: https://msdn.microsoft.com/es-es/library/windows/desktop/ee790620.aspx (accessed on 11 September 2019).
Model | Engineering Requirements | Design | Implementation | Verification |
---|---|---|---|---|
McGraw [19] | Identification of security requirements; specification of abuse cases | Risk analysis | Code review | Penetration and risk-based testing |
Microsoft SDL [20] | Identification of objectives, interfaces, and security requirements; definition of output criteria | Identification of critical security components, attack surface, secure design techniques or guides, threat modeling, risk analysis, and definition of secure architectures | Follow-up of coding standards, code review, use of testing tools, and static code analysis | Code reviews and security testing |
CLASP [21] | Risk analysis, threat modeling, identification of attackers and attack surface, specification of abuse cases, and mitigation measures | Follow-up of design guides, use of class annotation diagrams, threat modeling, and risk analysis | Tracking secure codification policies | Code review, use of static code analysis, and testing tools |
TSP [22] | Threat modeling, abuse case specification, and risk analysis | Pattern design, status machine design, and verification | Follow-up of guidelines and standards of safe development | Fuzz testing, penetration testing, static code analysis tools, and code review |
RUPSec [23] | Unambiguous definition of requirements | Abuse cases, threat definition, use cases, event flow, and threat modeling | Portability and precision in implementation | Evaluation of security aspects |
BSIMM [24] | Training, policies, and metrics | Attack models, definition of secure design properties, and standards | Code review, security testing, and architectural analysis | Penetration testing, vulnerability and configuration management, and software environment |
OPEN SAMM [25] | Policy, strategy and metrics, education, and guidance | Security requirements, threat assessment, and security architecture | Vulnerability management and operational assessment | Design review, security testing, and code review |
AEGIS [26] | Identification of assets, risk analysis, abuse cases, and establishment of security requirements | Design activities based on identified requirements | - | - |
SSDM [27] | Threat modeling and security policy specification | Follow-up of security policies | - | Penetration testing |
Writing Secure Code [28] | Security questions and previous security training | Threat modeling | Security equipment review, security documentation, tool preparation, best practice and security programming guides, fault analysis, external review, fuzzing tests, minimum privileges testing, and revision flaws | Compliance and maintenance of the security level |
Waterfall [29] | Definition of security controls | Solutions relating to algorithms, architecture, conceptual and design model, logic diagrams, and interfaces | Secure code, static analysis, and TDD (test driven development) | Penetration testing, dynamic analysis, error correction, monitoring, and security testing |
Viewnext [30] | Definition of objectives, training, knowledge of risks | Threat modeling, secure design | Configuration analysis, secure testing | Continuous assessment, validation of compliance, and continuous learning |
SecSDM [31] | Risk analysis, identification of security requirements, identification of assets, threats, degree of vulnerability, and comprehensive risk management (impact, probability, assessment, priority, and security level) | Security services and mechanisms; consolidation of security mechanisms | Security mechanisms and components, specification of security methods, functions, and testing | Validation of security mechanisms, review, and correction of errors, training, and document verification |
S2D-ProM [32] | Following security standards, risk analysis, error identification, and specification of security functionalities | Definition of security patterns using modeling languages, risk analysis, design review, and model verification | Monitoring of secure coding standards; use of secure programming languages | Risk analysis, code reviews, and use of static code analysis tools |
CbyC [33] | Identification of security requirements due to a formal and clearly defined specification | Incremental development | SPARK (Spade Ada Kernel) | Debugging and formal verification methods |
SQUARE [34] | Security requirements prioritization | Use of static and dynamic code analysis tools | ||
Oracle SSA (Software Security Assurance) [35] | Identification of objectives and principles | Vulnerability management | Vulnerability management | Vulnerability management |
Model | Resources | Artifacts | Agile | Use in Industry |
---|---|---|---|---|
McGraw [19] | Secure design guides | Abuse cases for obtaining test cases | No | Reported |
Microsoft SDL [20] | Secure design guides | - | Yes 1 | Reported |
CLASP [21] | Security design and implementation guides, vulnerability lists, and their possible mitigations | Testing based on the requirements | No | Reported |
TSP [22] | - | - | No | Not reported |
RUPSec [23] | Security expert | - | No | Not reported |
BSIMM [24] | Security models, standards, and repeatable processes | Security domains | Yes | Reported |
OPEN SAMM [25] | Security coding and measuring tools | - | No | Reported |
AEGIS [26] | - | Abuse cases for obtaining test cases | No | Not reported |
SSDM [27] | - | - | No | Not reported |
Writing Secure Code [28] | Best practice guides and secure programming | Key elements | No | Not Reported |
Waterfall [29] | Best practices | - | No | Reported |
Viewnext [30] | Policies | Security levels | Yes 2 | Not reported |
SecSDM [31] | ISO (International Organization for Standardization) standards, NIST (National Institute of Standards and Technology) guidelines | - | No | Not reported |
S2D-ProM [32] | - | - | No | Not reported |
CbyC [33] | Formal methods | - | No | Not reported |
SQUARE [34] | - | - | No | Not reported |
Oracle SSA [35] | Secure coding best practices | Policies | No | Reported |
Principle | Resolution | Justification |
---|---|---|
Customer satisfaction through early and continuous software delivery | Obstructive | Security tests are usually ignored, or organizations do not allocate enough resources for them |
Accommodate changing requirements throughout the development process | Obstructive | This could not be obstructive if the customer is willing to spend time to evaluate the security impact for each new requirement |
Frequent delivery of working software | Obstructive | This could not be obstructive if the customer gives more priority to security than to delivery |
Collaboration between business stakeholders and developers throughout the project | Neutral | It could be contributory if the development team had security experts and the client team included security as one of their priorities |
Support, trust, and motivate the people involved | Neutral | It could be obstructive if the team ignores security priorities. |
Enable face-to-face interactions | Neutral | It is important to keep in mind that there must be experts outside the team who evaluate security |
Working software is the primary measure of progress | Obstructive | If the focus is only on functionality, security will never be considered |
Agile processes to support a consistent development pace | Neutral | The consistent development pace must be applied both functionally and at the security level |
Attention to technical detail and design enhances agility | Contributory | It is contributory, especially when “technical excellence and good design” reflect a strong experience in the commitment to ensure software development |
Simplicity | Contributory | If simplicity is a feature it will be easier to take security into consideration |
Self-organizing teams encourage great architectures, requirements, and designs | Neutral | The work team must have at least the figure of a security expert that oversees security in the software development process |
Regular reflections on how to become more effective | Contributory | If security is not taken into account, the exploitation of vulnerabilities will affect the progress |
Model | Principles | Artifacts | Security |
---|---|---|---|
SCRUM [36,37,38,39] | Early achievements, accommodate changing requirements, reaction to change, continuous communication, small and incremental deliveries, and maximizing customer value | Sprints, meetings (sprint planning, daily planning, SCRUM review, backlog grooming, release planning); product and sprint backlog, roles (product owner, SCRUM master, development team), cards, and boards | Not covered |
XP (eXtreme Programming) [38,40] | Simplicity, communication, feedback, respect, and courage | Small deliveries, continuous integration, use of standards, pair programming, test driven development (TDD), sustainable pace, full team participation and ownership, customer tests, refactoring, and simple design | Focus on testing |
Kanban [39,41] | Start applying at any time, encourage incremental changes, preserve current roles and responsibilities, and leadership by the whole team | Workflow visualization, limit work in progress, policies, use of models, use of cards and boards, early problem detection, and collaboration | Security factor |
Lean [39,42] | Eliminate unnecessary elements, continuous learning, as much information as possible, fast deliveries, training and motivation, integrity, and general overview | - | Focus on integrity |
FDD (Feature Driven Development) [43] | Iterative, incremental, and customer-oriented development | Features, global model, list of functionalities, plan, design, and build by function | Model SFDD (secure feature driven development) |
SFDD (Secure Feature Driven Development) [44] | Security in all phases, planning, risk analysis, testing, validate software security, and security role | - | Security oriented |
Microsoft SDL [20] | Identification of security requirements, performance of security activities in all phases, and according to scope, culture, and security related training of team members, related vulnerabilities, use of tools for security activities, threat modeling, exception handling, and final security review (FSR) | Every-sprint requirements, bucket requirements, and one-time requirements | Security oriented |
SECDEVOPS (Secure Development Operations) [45] | A dynamic and flexible model. Allows users to get involved during software development and get customers’ input in a strategic way to define security requirements. Improves the security of the software considering the necessary effort | This life cycle allows the integration of developers, operators, and security managers from the beginning, thus avoiding security that falls behind at the end of the process. Recommends maintaining frequent and short development cycles, integrating security measures with minimal impact on operations. Proposes the automation of security checks | Security oriented |
Activity | Low Relevance (*) | General Interest (**) | High Relevance (***) |
---|---|---|---|
Risk analysis and identification of assets | X | ||
Vulnerability scanning | X | ||
Threat modeling | X | ||
Defining security metrics | X | ||
Security training and awareness | X | ||
Security requirements | X | ||
Cost-benefit analysis of security mechanisms | X | ||
Security architecture and configuration analysis | X | ||
Establishment of security design principles | X | ||
Definition of security use cases | X | ||
Definition of abuse cases | X | ||
Use of secure coding guides | X | ||
Analysis of attacks | X | ||
Static code analysis | X | ||
Dynamic code analysis | X | ||
Code analysis | X | ||
Fuzz testing | X | ||
Security tests | X | ||
White/black/gray testing | X | ||
Pentesting | X | ||
Iterative and final security review Vulnerability correlation | X | ||
Execution of a response plan | X | ||
Communication of security failures | X | ||
Strengthening | X | ||
External analysis | X | ||
Monitoring of policies, regulations, procedures, and safety guidelines | X |
FASS | Validation Checklist FASS | FASS-CHK-19/000 Rev. 000 |
---|---|---|
Scope and Context (AC) | ||
SRS | ||
Id. | Item | |
AC01 | Has the kick-off meeting been held? | |
AC02 | Has the SRS meeting been held? | |
AC03 | If affirmative AC02, did it have enough time and did the required personnel participate? | |
AC04 | If affirmative AC02, have all the requirements been identified and is there enough information to prepare the SRS? | |
AC05 | Has the SRS been made? | |
Backlog | ||
AC06 | Is there enough information to elaborate the backlog of activities? | |
AC07 | Has the backlog of activities been made? | |
AC08 | Is the backlog of activities reviewed periodically, especially after possible changes that take place during the development of the project? | |
AC09 | Is the backlog of activities kept up-to-date and prioritized according to the client and project requirements? | |
Boxes | ||
AC10 | Is there enough information available to define the functional boxes? | |
AC11 | Have the functional boxes been defined? | |
AC12 | Is the definition of the functional boxes revised periodically, especially after possible changes that take place during the development of the project? | |
AC13 | Is there enough information available to define the security boxes? | |
AC14 | Have the security boxes been defined? | |
AC15 | Is the definition of the security boxes revised periodically, especially after possible changes that take place during the development of the project? | |
Model Selection (EM) | ||
Phases | ||
EM01 | Have the phases of the project been identified and defined? | |
EM02 | Are the defined phases appropriate according to the scope, objective, and nature of the project? | |
Boxes Assignment and Prioritization | ||
EM03 | Have the boxes been prioritized according to the client and project requirements? | |
EM04 | Have the boxes been assigned among the different members of the work team? | |
EM05 | Is the scope of each box adequate? | |
Roles | ||
EM06 | Has the project team been defined? | |
EM07 | Is the project sizing adequate, based on its scope, objective, and nature? | |
EM08 | Does the project master possess the knowledge and skills necessary to perform his/her functions? | |
EM09 | Does the project master know his/her tasks and responsibilities? | |
EM10 | Does the security master possess the knowledge and skills necessary to perform his/her functions? | |
EM11 | Does the security master know his/her tasks and responsibilities? | |
EM12 | Do the security gurus have the knowledge and skills necessary to perform their functions? | |
EM13 | Do the security gurus know their tasks and responsibilities? | |
EM14 | Do the software surus possess the knowledge and skills necessary to perform their functions? | |
EM15 | Are the software gurus aware of their tasks and responsibilities? | |
Training | ||
EM16 | Is general or specific training required for the execution of the project? | |
EM17 | If affirmative EM16, has the training covered the necessary knowledge to be able to execute the project? | |
Sprints and Releases | ||
EM18 | Have the delivery milestones of each release been defined? | |
EM19 | Is there an estimate of the scope and content of each release? | |
EM20 | Has the duration of the sprints been defined? | |
EM21 | Is the duration of the sprints adequate for the scope, objectives, and nature of the project? | |
Security Levels | ||
EM22 | Has the security level been identified and defined? | |
EM23 | Is the security level appropriate for the scope, objective, and nature of the project? | |
EM24 | Have the security boxes been identified and defined? | |
EM25 | Are the security boxes adequate for the scope, objective, and nature of the project? | |
EM26 | Have potential threats that can affect the software been identified? | |
Development (DP) | ||
Meetings | ||
DP01 | Has the sprint start meeting been held? | |
DP02 | Did all the required personnel participate in the sprint start meeting? | |
DP03 | Did the sprint start meeting last long enough to cover the required topics? | |
DP04 | Are the purpose and scope of the sprint start meeting defined in a clear and understandable way for all participants? | |
DP05 | Is the information covered in the sprint start meeting coherent and defined according to the object and scope defined for it? | |
DP06 | Has the release meeting been held? | |
DP07 | Did all the required personnel participate in the release meeting? | |
DP08 | Did the release meeting last long enough to cover the required topics? | |
DP09 | Are the purpose and scope of the release meeting defined in a clear and understandable way for all participants? | |
DP10 | Is the information covered in the release meeting coherent and defined according to the object and scope defined for it? | |
DP11 | Was it necessary to carry out the review meeting? | |
DP12 | Did all the required personnel participate in the review meeting? | |
DP13 | Did the review meeting last long enough to cover the required topics? | |
DP14 | Are the purpose and scope of the review meeting defined in a clear and understandable way for all participants? | |
DP15 | Is the information covered in the review meeting coherent and has it been defined according to the object and scope defined for it? | |
DP16 | Was it necessary to carry out the feedback meeting? | |
DP17 | Did all the required personnel participate in the feedback meeting? | |
DP18 | Did the sprint Feedback Meeting last long enough to cover the required topics? | |
DP19 | Have the purpose and scope of the feedback meeting been defined in a clear and understandable way for all participants? | |
DP20 | Has the information covered in the feedback meeting been coherent and defined according to the object and scope defined for it? | |
DP21 | Has the closing meeting been held? | |
DP22 | Did all the required personnel participate in the closing meeting? | |
DP23 | Did the closing meeting last long enough to cover the required topics? | |
DP24 | Has the object and scope of the closing meeting been defined in a clear and understandable manner for all participants? | |
DP25 | Is the information covered in the closing meeting consistent and has it been defined according to the object and scope defined for it? | |
Status and Priorities Update | ||
DP26 | Is the backlog of activities kept updated and prioritized during the development of the project? | |
DP27 | Have client and project requirements been considered in each update of the backlog of activities? | |
DP28 | Are boxes updated and prioritized during the development of the project? | |
DP29 | Have client and project requirements been considered for the update of the boxes? | |
Releases | ||
DP30 | Are the releases performed in accordance with the planification? | |
DP31 | Are the releases developed with the agreed functional, quality, and security requirements? | |
DP32 | Are the releases delivered and presented to the client within the agreed deadlines? | |
Evaluation and Communications | ||
DP33 | Are regular and continuous communications with the client maintained? | |
DP34 | Are the content, frequency, and scope of the communications adequate for the client and for the project? | |
DP35 | In case of extraordinary communications, have these been adequate according to their content and scope for the client and for the project? | |
Testing | ||
DP36 | Have functional tests been performed? | |
DP37 | Have security tests been performed? | |
DP38 | Are the results of the different types of tests carried out reviewed? | |
DP39 | Are problems/errors/vulnerabilities identified communicated to those responsible for their correction? | |
DP40 | Are problems/errors/vulnerabilities identified during the tests solved? | |
DP41 | Are the tests repeated once the bugs have been fixed? | |
Conclusions and Lessons Learned (CL) | ||
Wikibases | ||
CL01 | Has at least one Wikibase been generated with the information and lessons learned from the project? | |
CL02 | Have generated Wikibases been made known to other projects? | |
Documentation | ||
CL03 | Are activities related to project documentation planned? | |
CL04 | Is software documentation generated? | |
CL05 | Is project documentation generated? | |
CL06 | Is the generated documentation updated after each functional modification? | |
CL07 | Is the generated documentation accessible? | |
CL08 | Is the generated documentation adequate according to the scope, objective, and nature of the project? |
© 2019 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).
Share and Cite
de Vicente Mohino, J.; Bermejo Higuera, J.; Bermejo Higuera, J.R.; Sicilia Montalvo, J.A. The Application of a New Secure Software Development Life Cycle (S-SDLC) with Agile Methodologies. Electronics 2019, 8, 1218. https://doi.org/10.3390/electronics8111218
de Vicente Mohino J, Bermejo Higuera J, Bermejo Higuera JR, Sicilia Montalvo JA. The Application of a New Secure Software Development Life Cycle (S-SDLC) with Agile Methodologies. Electronics. 2019; 8(11):1218. https://doi.org/10.3390/electronics8111218
Chicago/Turabian Stylede Vicente Mohino, Juan, Javier Bermejo Higuera, Juan Ramón Bermejo Higuera, and Juan Antonio Sicilia Montalvo. 2019. "The Application of a New Secure Software Development Life Cycle (S-SDLC) with Agile Methodologies" Electronics 8, no. 11: 1218. https://doi.org/10.3390/electronics8111218
APA Stylede Vicente Mohino, J., Bermejo Higuera, J., Bermejo Higuera, J. R., & Sicilia Montalvo, J. A. (2019). The Application of a New Secure Software Development Life Cycle (S-SDLC) with Agile Methodologies. Electronics, 8(11), 1218. https://doi.org/10.3390/electronics8111218