EaseSAF: A TOOL FOR MODELING SOFTWARE ASSURANCE Nancy Talamantes B.S, California State University, Sacramento, 1985 PROJECT Submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in SOFTWARE ENGINEERING at CALIFORNIA STATE UNIVERSITY, SACRAMENTO SPRING 2014 EaseSAF: A TOOL FOR MODELING SOFTWARE ASSURANCE A Project by NANCY TALAMANTES Approved by: __________________________________, Committee Chair Dr. Ahmed Salem ____________________________ Date __________________________________, Second Reader Dr. Cui Zhang ____________________________ Date ii Student: Nancy Talamantes I certify that this student has met the requirements for format contained in the University format manual, and that this project is suitable for shelving in the Library and credit is to be awarded for the Project. __________________________, Graduate Coordinator Dr. Nikrouz Faroughi Department of Computer Science iii ________________ Date Abstract of EaseSAF: A TOOL FOR MODELING SOFTWARE ASSURANCE by Nancy Talamantes Operational environments for today’s information technology solutions are complex and varied. The majority are constructed with systems and systems-of-systems, often including cloud computing and the internet. With the increase of web-centric applications, it is important to understand how systems relate to each other both internally and externally. People’s behavior in an organization is also for consideration in the adoption and operation of assurance solutions. While a great deal of work has been done to identify and catalog software assurance solutions, little information is available about what is needed for an organization to successfully adopt and use them in operational settings. The Software Engineering Institute (SEI) at Carnegie Melon, in tandem with the United States Department of Defense (DOD) has developed a framework that models an organization’s software assurance profile. In their paper, A Framework for Modeling the Software Assurance Ecosystem: Insights from the Software Assurance Landscape Project [1], the team from SEI describes their piloting of this framework to prove its value and gain insights in the application of the model in an organizational setting. This report presents the Assurance Modeling Framework methodology and the development of the EaseSAF tool that semi-automates the nine steps of the methodology. EaseSAF is a desktop tool that integrates the specification of assurance modeling requirements using the formal methods based on SEI’s Assurance Modeling Framework. It is an effort to develop an application that allows users to input and manage the enormous amount of data and artifacts necessary to support this framework. iv _____________________________, Committee Chair Dr. Ahmed Salem, Ph.D. _______________________ Date v DEDICATION This project is dedicated to my children, Daniel and Stephanie, who were my inspiration and support through this seven and a half year journey. You were always there to listen when I needed it most. vi ACKNOWLEDGMENTS I would like to thank Dr. Salem for his support and guidance as my project advisor. His assistance throughout the course of this project was invaluable. I would also like to thank Dr. Cui Zhang for her time and understanding in agreeing to be the second reader for this project. Her guidance and support have helped me enormously over the years in my pursuit of this degree. I would like to express my sincere thanks to the Computer Science faculty and staff that went above-and-beyond more than once with their ready assistance, especially in the last six months. It was not always a smooth ride. Lastly, the instructors, fellow students and mentors from the Sacramento State Computer Science department have inspired me throughout my graduate and undergraduate years. Their skills and knowledge have guided me throughout my life and career. I am deeply indebted to all of you. vii TABLE OF CONTENTS Page Dedication .......................................................................................................................... vi Acknowledgments............................................................................................................. vii List of Figures .................................................................................................................... ix Chapter 1. INTRODUCTION ...........................................................................................................1 2. BACKGROUND AND RELATED WORK ...................................................................3 2.1 The Need for Software Assurance…………………………………………….3 2.2 The Assurance Modeling Framework and Pilot Project………………………7 2.3 The EaseSAF Assurance Modeling Framework Steps……………………….8 2.4 The EaseSAF Project………………………………………………………..10 3. EASESAF ANALYSIS, ARCHITECTURE AND DESIGN ........................................11 3.1 Functional and Non-functional Requirements……………………………….12 3.2 EaseSAF Architecture and Design…………………………………………...14 3.3 EaseSAF User Interface Design……………………………………………..18 3.4 EaseSAF Database Design…………………………………………………..38 4. EASESAF IMPLEMENTATION AND EXAMPLE ....................................................40 5. CONCLUSION AND FUTURE WORK ......................................................................55 References ..........................................................................................................................57 viii LIST OF FIGURES Page Figure 1 EaseSAF Architecture .........................................................................................15 Figure 2 NetBeans IDE with EaseSAF Application ..........................................................19 Figure 3 EaseSAF Screen Flow Diagram ..........................................................................20 Figure 4 EaseSAF Welcome Form ....................................................................................21 Figure 5 Create New Profile Form.....................................................................................22 Figure 6 Open Existing Profile Form.................................................................................23 Figure 7 EaseSAF Nine Step Form ....................................................................................24 Figure 8 EaseSAF Profile Summary Form ........................................................................25 Figure 9 Principle Perspectives and Influences Form.......................................................26 Figure 10 Principle Perspectives and Influences Form – Organization Tab ....................27 Figure 11 Principle Perspectives and Influences Form – Supply Side Tab .......................27 Figure 12 Principle Perspectives and Influences Form – Demand Side Tab .....................28 Figure 13 Value Exchange Form .......................................................................................29 Figure 14 Potential Assurance Results Form .....................................................................30 Figure 15 Motivations Form ..............................................................................................31 Figure 16 Critical Behaviors Form ....................................................................................32 Figure 17 Adoption of Products Form ...............................................................................33 Figure 18 Future Drivers Form ..........................................................................................34 Figure 19 Inefficiencies Form ............................................................................................35 ix Figure 20 Prioritized Improvements Form ........................................................................36 Figure 21 Upload Artifacts Form.......................................................................................37 Figure 22 EaseSAF Entity Relationship Diagram .............................................................39 Figure 23 Create a New Profile .........................................................................................41 Figure 24 Vulnerability Management Profile Description ................................................42 Figure 25 Vulnerability Management and CVE ................................................................43 Figure 26 Organization Tab for CVE ................................................................................44 Figure 27 Supply Side Tab for CVE ..................................................................................45 Figure 28 Demand Side Tab for CVE................................................................................46 Figure 29 Value Exchange Information for CVE ..............................................................47 Figure 30 Potential Assurance Results for CVE ................................................................48 Figure 31 Key Drivers of Risk for CVE ............................................................................49 Figure 32 Critical Usage Scenarios for CVE .....................................................................50 Figure 33 Operational Adoption and Usage of CVE ........................................................51 Figure 34 Future Impacts for CVE ....................................................................................52 Figure 35 List of Inefficiencies for CVE ...........................................................................53 Figure 36 List of Prioritized Improvements for CVE ........................................................54 x 1 Chapter 1 INTRODUCTION The United States Department of Defense defines system assurance as the justified confidence that a system functions as intended and is free of exploitable vulnerabilities, either intentionally or unintentionally designed or inserted as part of the system at any time during the life cycle [1]. In their technical paper, A Framework for Modeling the Software Assurance Ecosystem: Insights from the Software Assurance Landscape Project, the authors from the Software Engineering Institute (SEI) at Carnegie Mellon University define an assurance solution as a policy, practice, or technology that contributes to system assurance (i.e., to provide justified confidence that a system will function as intended and is free of exploitable vulnerabilities) [1]. This paper presents the EaseSAF tool, a desktop application that provides semiautomated assistance to assurance analysts with managing the mounds of artifacts and paperwork necessary to support this framework. Eliciting the information required for assurance modeling involves a great deal of interviewing, analyzing and diagraming. The artifacts such as the Value Maps and System Dynamic Diagrams are uploaded and managed by EaseSAF. The analyst enters the framework question information into the EaseSAF form for each of the nine steps in the modeling framework. The supporting artifacts are uploaded to pre-designated windows folders for organized archiving. The EaseSAF Profile Summary form summarizes the framework profile and framework question information for the analyst in a concise report. The assurance analyst can dig 2 deeper into framework details by opening the archived supporting artifacts uploaded during the modeling process. The completed profile entered into EaseSAF by the analyst is a living collection of artifacts that the organization can update as assurance solutions improve and assurance needs change. The following paper describes the development of the EaseSAF desktop tool. Chapter 2 discusses the background and related work of this project. It will describe the Assurance Modeling Framework developed by SEI and their pilot project to implement it in an operational setting. Chapter 3 includes the description of the requirements, system architecture and design of EaseSAF as a desktop tool. Chapter 4 documents the implementation details used in building EaseSAF. Chapter 5 presents an example that shows the benefits of using EaseSAF compared to the manual approach. The conclusion of the report includes a summary and future work for EaseSAF. 3 Chapter 2 BACKGROUND AND RELATED WORK 2.1 The Need for Software Assurance Many of today’s organizations rely on a complex set of systems, often involving cloud, web and mobile connectivity. These systems can be supported by many platforms including mainframe, web and desktop with elaborate middleware components. Systems are built with custom source code often interfacing with Customized-Off-The-Shelf (COTS) products that may contain proprietary, un-viewable and potentially insecure internal code. Data is shared data through Service Oriented Architecture (SOA) services, traditional file transfer, JDBC connections, the Cloud, web connectivity and mobile devices. Data cleansing, data transformation and data transmission are accomplished through busses, queues and other means often involving elaborate encryption and decoding. Data stores are large and complex with new technologies such as “Big Data” that allow the processing of huge amounts of data to appear seamless. Elaborate Infrastructure to support this processing must be put in place. Extensive monitoring, load-balancing and failover subsystems must be installed and faithfully maintained to ensure that all system components and services are available 24/7. Capacity Planning and system monitoring are an on-going challenge. Disaster recovery and infrastructure also cannot be ignored. This complexity and flexibility comes at a cost. Systems are constantly challenged to maintain security, performance and reliability in these everchanging environments. 4 For consideration as well are the soft factors of human involvement. Systems are built, used, monitored, maintained, governed and financially supported by a diverse and everchanging group of participants that are a critical factor in the assurance ecosystem. In their technical paper, Spotlight On: Programmers as Malicious Insiders–Updated and Revised [5], the authors from SEI discovered that the majority, (over 25 percent), of cyber security attacks are instigated by company insiders bent on revenge, mischief or sabotage. The financial impact to an organization for these attacks can cost over a million dollars. In their technical paper, Common Sense Guide to Mitigating Insider Threats, 4th Edition [6], SEI’s Computer Emergency Response Team (CERT) analyzed the characteristics of employees who are more susceptible to malicious behavior. Many of the incidents identified by the CERT study were the result of an employee that had recently been notified of termination or a change in status. System administrators, network administrators, security administrators and developers have been documented as the instigators of cyber-related revenge. The chief motivation is to create harm for the responsible organization by causing a computer system disturbance that will either cost the organization money, gain access to private customer information and/or damage company reputation. Many of these individuals have previous criminal history and ties to organizations intent on cyber sabotage. Software is a key component of today’s systems and system-of-systems assurance landscape. If application software is well written, thoroughly tested, well documented, follows best practices and secure coding standards it will support and enhance an organization’s operational setting. Poorly written source code, however, can sabotage a 5 functioning system with surprising speed. Security vulnerabilities built into the code either intentionally or unintentionally, leave a system open to attack [3]. Under the direction of Robert Seacord and the CERT team, The Secure Coding Initiative (2010)[3] has developed secure coding standards for C, C++ and Java. According to the CERT website, Seacord’s team has evaluated thousands of vulnerability reports and has determined that most vulnerabilities stem from a relatively small number of common programming errors. The CERT Oracle Secure Coding Standard for Java [3] states that based on CERT’s research, 64 percent of the nearly 2,500 vulnerabilities in the National Vulnerability Database in 2004 were caused by programming errors. Adopting secure coding practices is one of many proactive approaches to improving software assurance. As mentioned previously, the current trend among corporations and government agencies to introduce commercial off-the-shelf (COTS) software products into systems in an attempt to save development time and expense can be an assurance risk. The source code in these COTS products are often proprietary and can leave an enterprise vulnerable to malicious attack, unreliability and poor performance. The SAFECode project states in their white paper, Software Assurance: An Overview of Current Industry Best Practices [8] that software assurance is especially important for organizations critical to public safety and economic and national security. These users require a high level of confidence that commercial software is as secure as possible. Coders must follow best practices for secure software development. 6 The newscasts have been full of reports involving large Information Technology projects that have been released but are not functionally successfully. These systems are unreliable, insecure and slow. The user experience for these systems is less than ideal. While these failures are financially costly to an organization and damaging to its reputation, mission-critical systems cannot afford such errors. In his article, Detecting Architecture Traps and Pitfalls in Safety-critical Software [11] Julien Delange states that safety-critical avionics, aerospace, medical, and automotive systems are becoming increasingly reliant on software. Malfunctions in these systems can have significant consequences including mission failure and loss of life. These mission critical systems must be designed, verified, and validated carefully to ensure that they comply with system specifications and requirements. The must also be error-free. Brownsword, Woody, Alberts and Moore developed the Assurance Modeling Framework with the hopes of solving these problems by methodically evaluating an organization’s operational assurance. Their term assurance ecosystem [1] is used to describe the broad range of interrelated elements that influence operational assurance, including organizations, decision makers, policies, practices, technologies, and people . The framework identifies and evaluates assurance properties such as security, reliability and performance, which can often be competing forces. The framework also identifies all stakeholders and organizations, including those from external sources, involved with these assurance solutions, mapping the dependencies and interrelationships between them. This is what the project team calls the assurance ecosystem. Each assurance 7 property consists of a set of assurance capability areas. For example, vulnerability management is a capability area for the security assurance property. To prove the framework’s validity, the team applied to the framework to two assurance solutions related to vulnerability management: Common Vulnerabilities and Exposures (CVE®) and Common Weakness Enumeration (CWE™). In the pilot project, the team performed the analysis of each view by applying the prescribed methods to CVE and CWE and recording their observations of each step . The technical paper, A Framework for Modeling the Software Assurance Ecosystem: Insights from the Software Assurance Landscape Project [1] is the compilation of the teams work with this pilot. 2.2 The Assurance Modeling Framework and Pilot Project The purpose of the SEI Software Assurance Framework is to elicit, analyze and organize organizational assurance information and determine the interrelationships among participating individuals and assurance solutions. The framework provides a way to look across the assurance ecosystem and examine the gaps, barriers, and incentives that affect the formation, adoption, and usage of assurance solutions. The technical paper, A Framework for Modeling the Software Assurance Ecosystem: Insights from the Software Assurance Landscape Project [1] describes the current version of the Assurance Modeling Framework and the results of its pilot application to the assurance capability area; vulnerability management. The team’s previous paper, Value Mapping and Modeling SoS Assurance Technologies and Supply Chain [9] describes their initial work with the Assurance Modeling Framework. A second paper, The Landscape of Software 8 Assurance—Participating Organizations and Technologies [10] describes their approach in developing the framework and the reasoning behind their choices in developing the framework’s structure. During their work on the pilot, it became clear to the project team that most organizations are true ecosystems and designing an assurance modeling framework for their evaluation would be challenging. An organization’s assurance ecosystem includes stakeholders, decision makers, policies, practices and technologies that can be large and complex. All of these can be competing forces and analyzing their interrelationships can be a daunting task. The pilot team implemented the modeling activities by managing the artifacts manually. The framework begins by identifying an organization’s mission and the assurance properties that support this mission. It then uses an incremental approach to evaluate one assurance capability area at a time, eventually creating a profile for an assurance property such as Security. The profile is a set of views that collectively describe an assurance ecosystem for the selected capability area. From the analysis of the profile, inefficiencies and improvements for an organization’s operational assurance can be identified. 2.3 The EaseSAF Assurance Modeling Framework Steps The Assurance Modeling Framework can be broken down into ten discrete steps based upon the nine framework views and a profile summary [1]. The following is a brief description of each step: 9 1. Define Principal Perspectives and Influences - provides the “big picture” and scope of the assurance capability area under evaluation . It also characterizes the organization including critical stakeholders and primary relationships. 2. Define Value Exchanges - identifies organizational relationships and assurance solutions and the high-level value exchanged among them. 3. Evaluate Potential Assurance Results - defines the ways that assurance solutions align with what operational users do to achieve operational assurance results. Identifies gaps and inefficiencies. 4. Define Motivations - evaluates drivers that are critical to achieving operational assurance objectives. 5. Identify Critical Behaviors - evaluates the relationships between organizations and assurance solutions to identify influences that drive critical behaviors. 6. Evaluate Maturity in Adoption of Products - evaluates the maturation and adoption mechanisms used for collections of related assurance solutions. Provides an understanding of the current state of the formation and implementation of an assurance solution. 7. Determine Future Drivers - evaluates future trends, influences, and uncertainties that may affect new operational demands and assurance solutions. Investigates future factors such as business and mission needs, technologies, economics and environments. 8. Identify Inefficiencies - evaluates patterns of possible inefficiencies or gaps in assurance solutions and in their adoption and usage. 10 9. Prioritize Improvements - after evaluating the inefficiencies, a list of potential improvements can be created for the organizations adoption and use of the assurance solution being evaluated. 10. Profile Summary – summarizes all previous step information for review and reference. The steps are interrelated. Information, models and analysis associated with one step is used in conjunction with other steps. It is important for assurance analysts to remember that creating a profile of a selected assurance capability area is only based on current observation. To remain useful, it must be kept current. 2.4 The EaseSAF Project The purpose of this project is to build a semi-automated tool to assist the assurance analyst with the substantial amount of artifacts needed to record and analyze software assurance information elicited through interviews and investigation required by the Assurance Modeling Framework. This tool will support all aspects of the modeling framework including the views, methods and activity categories. It will build the assurance profile from this gathered information and summarize it in the Assurance Profile Summary. It will assist the assurance analyst with archiving and organizing the artifacts and diagrams needed for each method and view. With the effective compilation of assurance information, an organization can successfully develop and adopt an assurance solution into an operational setting. The EaseSAF artifacts are uploaded and 11 archived in the application folders so the analyst can easily maintain and review the assurance profile information as a living artifact for future assurance needs. EaseSAF was developed as a desktop application using Java Swing with NetBeans Matisse technology for the presentation and application layers. The persistence layer was built using a Derby database that binds seamlessly with Java Swing and Java 7/JSF. Standard Microsoft windows directory folders are used for uploading, printing and archiving the supporting assurance framework artifacts. EaseSAF users are required to have a full understanding of the Assurance Modeling Framework as the tool was not built to educate or guide the user through the framework steps. There is no online help at this time. EaseSAF is designed to be flexible and provide a good user experience so that analysts can perform the steps in the order they prefer without restrictions. Steps may be performed simultaneously as interviews and investigations often reveal information related to several of the methods and views. The analyst can update, edit and save documents as needed throughout the modeling process. This flexibility is useful given the complexity of the Assurance Modeling Framework. 12 Chapter 3 EASESAF ANALYSIS, ARCHITECTURE AND DESIGN 3.1 Functional and Non-functional Requirements Applying SEI’s Assurance Modeling Framework can involve a large quantity of artifacts especially for complex organizations with many stakeholders. The greater the number of systems and individuals involved, the more information the framework must take into account. Each assurance capability area is evaluated for the assurance solution and the interrelationships with stakeholders and other assurance solutions must be taken into account. The full framework may require hundreds of interviews, artifacts and diagrams. For this reason, the semi-automation of the Assurance Modeling Framework will make the process easier and more manageable. The following are a list of the functional and nonfunctional requirements for EaseSAF. Functional requirements for the EaseSAF tool: EaseSAF provides support for all ten steps of the Assurance Modeling Framework. EaseSAF provides flexibility in the order for implementing each step of the modeling process. The EaseSAF allows the user to open, edit and save any step information at any time. Several steps require supporting artifacts. EaseSAF automates the uploading and archiving of these diagrams, as they are needed. This allows the user to 13 create the diagrams with the best tool available, (Visio, etc.) and upload it to be archived with the other modeling artifacts on one package. EaseSAF automates the uploading, archiving and printing of all interviewing and investigation documents. EaseSAF provides a Profile Summary of Framework results as a living artifact. The EaseSAF tool can reduce the manual processes and assist with the artifact organization needed to apply this framework. EaseSAF will record interview notes, modeling artifacts and manage all supporting documentation in one complete package. Supporting documentation can be archived edited and printed with the standard Microsoft Windows functionality. Non-functional requirements for the EaseSAF tool: Usability – EaseSAF provides user interface that is easy to use and has consistent forms. Re-usability – Java Object-Oriented classes can be used in other projects. Modifiability – EaseSAF supports modification by abstracting and separating layers. Portability – EaseSAF can be deployed to any desktop supporting JDK 7 technology. Extensibility –EaseSAF is built to support rapid additions and changes to the application. 14 EaseSAF is built with nonfunctional requirements in mind. Extensibility, modifiability portability and usability were the primary focus as modifications and improvements to the Assurance Modeling Framework and the original EaseSAF tool are always possible. With the JAVA Swing/Model-View-Controller architecture, portability and modifiability are supported. EaseSAF is very UI-centric and was developed with the user experience in mind. The SEI researchers are still making changes to several methods in the Assurance Modeling Framework. For this reason, EaseSAF was built to allow extensibility and re-use. 3.2 EaseSAF Architecture and Design Originally, the EaseSAF tool was to be developed as a web-based product. However the deeper I got into the functional requirements, the more I realized that this tool was very UI-centric and many changes were going to be occurring with the tool and with SEI’s Assurance Modeling Framework. The need to redesign the User Interface (UI) quickly and easily was a high priority. I also considered usability as an important nonfunctional requirement for this tool. Java Swing with its elaborate component library and drag-anddrop technology quickly and easily met my needs during analysis and development of this product. NetBeans Matisse IDE technology supports Java Swing and allows quick and easy form composition. Each Swing component has properties that control look-andfeel as well as content. Swing components also have event handlers to control listeners and subsequent actions such as when a button is pushed. Swing also has the ability to bind each component to the data layer. All these features can be handled directly through 15 the source code or by easily manipulating properties in the component properties window of the IDE. Optimally, the tool should be written as a web-based, thin client running on an application server with mobile technology support. I would recommend using JDK 7/JSF with an open source component library such as PrimeFaces to enhance the user experience, add Ajax capability and include a mobile UI kit to allow the tool to be used as a mobile web application for handheld devices. PrimeFaces components support responsive design to re-render for any device size. I will leave this for future developers. Like most software systems either desktop or web-based, EaseSAF is a collection of components that have relationships that interact with each other to accomplish a specific functionality. In order to organize these components and effectively model their behavior, a software system architecture is necessary. A multi-tier architecture with the ModelView-Controller design pattern proved optimal for EaseSAF. Figure 1. EaseSAF Architecture 16 As shown in Figure 1 there are three basic components for the system: View: This layer includes the Swing components and frames that compose the forms displayed for users who enter input and/or send and receive commands through this layer. Controller: This layer contains the event logic of the application that controls the view based on specified user actions such as click-events. Model: This layer includes the data source, usually the database itself and the database management system. Swing components bind with the data layer using the built in binding properties. In EaseSAF, the database is Derby, which seamlessly interfaces with the components in Java. One of the advantages in a multi-tiered application is that users are able to work on the application data without knowing at build time where the data is stored. To allow this level of abstraction, the Swing components interact with the database and move data to and from all EaseSAF forms. Another advantage is the modularity of the application’s components with loose coupling and high cohesion characteristics, allowing this architecture better modifiability and extensibility for the application in the future. Swing is easy to understand, read and re-use. The multi-layer architecture also supports a robust application. Changes made in one layer, do not affect other layers and can remain independent. 17 Several technologies could have been selected for this application. Java Swing was selected because it is very UI-centric and allowed easy manipulation of component properties for data binding and event handling. The Java Swing framework is based upon the Model-View-Contoller (MVC) design pattern that consists of the following: The model, which stores the content The view, which presents the content The controller, which handles events and binding The MVC pattern has the advantage of separating the presentation layer (view), application layer (control) and data layer (model) so that changes to each layer can occur independently without necessarily changing the other layers. A new presentation layer can be written with a new UI application such as JSF, without affecting the application layer or the data layer. This encourages extensibility and reuse. Swing developers can reuse the code for their models and can even switch the look-and-feel in a running program. MVC can have multiple views so that when one view is updated through the controller, the other views automatically refresh themselves [17]. The MVC pattern is attractive to Swing developers because it allows them to implement pluggable, look and feel, applications. The Swing framework is composed of UI components and their properties. Each UI component consists of a wrapper class, such as JButton or JTextField, that stores the model and the view. Each component has three characteristics: 18 Its content or state, such as whether a button has been pressed or text is in a textbox. Its visual appearance, color or size, etc. Its behavior, such as reactions to events. The NetBeans IDE with Matisse technology enables the developer to construct a Java Swing application quickly and easily. The IDE allows the developer to drag and drop the components for the view from the palette shown on the upper right panel of Figure 2 and set the controller events using the properties shown in the lower right panel of the IDE. Binding to the data layer (model) occurs in the properties panel as well. The Swing developer can switch to coding custom source directly by changing the view from Design to Source in the middle pane. Business logic and additional event handling can be added to the application layer by entering custom code in the source view. The middle pane also has a History view that acts as a version control manager displaying each iteration of the form. A developer can enter a brief description of the current version or recover a previous version of an application by deleting the current version. The data layer contains the information that the user enters in the view or presentation layer. EaseSAF uses a derby database to support the data layer. Derby is a simple, elegant database that seamlessly integrates with the Swing framework and the NetBeans IDE. Once the database is built and connected to the application through the JDBC, the data components in the Swing application can be bound to the database through the properties window in the lower panel of the NetBeans IDE as shown in Figure 2. 19 Figure 2. NetBeans IDE with EaseSAF Application 3.3 EaseSAF User Interface Design In this section the User Interface (UI) is described for the EaseSAF tool. Screen shots, user instructions and a description of each form are provided. EaseSAF is composed of a series of forms that guide the user through the Assurance Modeling Framework steps. The forms consists of components that the user can enter information for the selected step. The EaseSAF Screen Flow is shown in Figure 3 and the EaseSAF forms are shown in Figures 4 – 19. 20 Save Principle Perspectives and Influences Form Nine Step/Cancel Save Nine Step/Cancel Value Exchange Form Cancel Open Existing Profile Form Cancel Nine Step Cancel Open Save Save Nine Step/Cancel Nine Step Form Save Welcome Form Create Potential Assurance Results Form Nine Step Cancel Create New Profile Form Save Cancel Summary Cancel Motivations Form Nine Step/ Cancel Save Cancel Profile Summary Form Nine Step/Cancel Critical Behaviors Form Return Open/Cancel Nine Step/Cancel Save Upload Nine Step/Cancel Adoption of Products Form Save Future Drivers Form Save Inefficiencies Form Save Prioritized Improvements Form Figure 3. EaseSAF Screen Flow Diagram File Upload 21 3.3.1 EaseSAF Welcome Form Figure 4. EaseSAF Welcome Form Figure 4 shows the EaseSAF Welcome Form is the landing form for the user as they bring up the application. It welcomes the user and displays the options to proceed with the Assurance Modeling Framework. The user either creates a new profile or opens an existing profile by clicking on the appropriate radio button and pressing Select. Pressing Cancel exits the EaseSAF application. According to the framework, a profile is based upon a selected assurance capability area that is to be evaluated. 22 3.3.2 EaseSAF Create New Profile Form Figure 5. EaseSAF Create New Profile Form Figure 5 shows the Create New Profile Form. The user enters the profile name and a brief description of the profile. All subsequent work on this profile is consolidated with the profile, similar to a project in other applications. To save the profile information the user presses save and proceeds to the Nine Step Form. If the user presses cancel, the profile information will not be saved and the user returns to the EaseSAF Welcome screen. 23 3.3.3 EaseSAF Open Existing Profile Form Figure 6. EaseSAF Open Existing Profile Form Figure 6 shows the EaseSAF Open Existing Profile Form. The drop-down choices are the existing profiles that are in the system, (in our example, there are no existing profiles). The user selects the profile to open and edit and proceed to the Nine Step Form . There is also an option to remove the profile. If a profile is removed and save is pressed, there is not a way to recover the profile in the future. If the user presses cancel, the profile selected is neither opened, nor removed and the user will return to the EaseSAF Welcome Form. 24 3.3.4 EaseSAF Nine Step Form Figure 7. EaseSAF Nine Step Form The Nine Step Form is shown in Figure 7 and is the main driver of the Assurance Modeling Framework Process. The user returns here after each step in the modeling process and uses this form to select the next step. The user updates Stakeholder, Assurance Property and Assurance Capability Area information at any time. The Profile Name is static and comes from the Create/Open Profile form. Pressing the Save key saves the entered information. Selecting the Framework Step takes the user to the next step in the modeling process that was selected. Clicking the Profile Summary button takes the user to the Profile Summary, even if all the steps do not have Framework information entered. 25 3.3.5 Profile Summary Form Figure 8. EaseSAF Profile Summary Form Figure 8 shows an example of the Profile Summary Form that is a viewable report about the Assurance Solution Profile. The report reflects the information entered on each of the forms of the EaseSAF modeling framework. 26 3.3.6 Principle Perspectives and Influences Form Figure 9. Principle Perspectives and Influences Form Figure 9 shows the Principle Perspectives and Influences Form which is the first of the nine steps in the Assurance Modeling process. The activity category Determine Context and Scope, is associated with the Principal Perspectives and Influences view which provides the big picture and general scope of the organization. The user arrives on this form by selecting it on the Nine Step Form. The Principle Perspectives and Influences Form is composed of three tabs; one for organizational information, one for supply-side information and one for demand-side information. 27 Organization tab: Figure 10. Principle Perspectives and Influences Form – Organization Tab Figure 10 shows the Organizational tab. Answers to the view questions are entered and clicking Save will save all information entered on each of the three tabs and keep the user on the Principle Perspectives and Influences form. The user remains on this form or presses the Return to Nine Step Form and returns to select the next step. Cancel will not save any information on any of the three tabs and will return the user to the Nine Step Form. The Upload Artifacts button brings up the upload artifacts form to upload any supporting documentation to a windows folder pre-designated by the user. Supply Side tab: Figure 11. Principle Perspectives and Influences Form – Supply Side Tab 28 Figure 11 shows the Supply side tab where information that relates to individuals or organizations that supply the assurance solution being evaluated and their motivations for providing the assurance solution is entered. To save, cancel or upload artifacts, the user must return to the Organization tab. The user enters supply-side information on this tab. Demand Side tab: Figure 12. Principle Perspectives and Influences Form – Demand Side Tab Figure 12 shows the Demand Side Tab. The user enters demand-side information on this tab. Demand side information relates to those individuals or organizations that depend on suppliers for the assurance solution being evaluated and their motivation for wanting the assurance solution. To save, cancel or upload artifacts, the user must return to the Organization tab. 29 3.3.7 Value Exchange Form Figure 13. Value Exchange Form After the domain and stakeholders are identified in the Principle Perspectives and Influences View, the next step is the Value Exchanged View. Figure 13 shows the Value Exchanged view that provides a detailed understanding of participating organizations, assurance solutions, and relationships. The user arrives at this form by selecting it on the Nine Step Form. The Value Exchange diagrams are uploaded by clicking the Upload Artifacts button. Additional View information is entered in the text fields shown on this form. Clicking Save saves the information and keeps the user on this form. The user may then press the Return to Nine Step Form button to return to the Nine Step Form and 30 select the next step. Pressing the Cancel button clears entered information and does not save it. 3.3.8 Potential Assurance Results Form Figure 14. Potential Assurance Results Form Figure 14 shows the Potential Assurance Results Form. This view provides a detailed understanding of the current state of participating organizations, assurance solutions, and the relationships within the assurance ecosystem. The user arrives at this form by selecting it on the Nine Step Form. The Summary of Roles and Responsibilities Alignment Model and the the Sos Focus Analysis Alignment Model are uploaded by clicking the Upload Artifacts button. Additional view information is entered in the text fields shown on this form. Clicking Save saves the information and keeps the user on 31 this form. The user may then press the Return to Nine Step Form button to select the next step. Pressing the Cancel button clears entered information and does not save it. 3.3.9 Motivations Form Figure 15. Motivations Form An essential step in evaluating operational assurance is to identify the motivations that influence whether participants will support an assurance capability area. This view will reveal what is currently working well, identify gaps and inefficiencies and improvements by identifying drivers of success for a given assurance capability area. Figure 15 shows the Motivations Form. The user arrives at this form by selecting it on the Nine Step Form. The Driver Identification and Analysis Method artifacts are uploaded by clicking the Upload Artifacts button. The user will also enter the additional view information in 32 the text fields shown on this form. Clicking Save saves the information and keeps the user on this form. The user may then press the Return to Nine Step Form button to select the next step. Pressing the Cancel button clears entered information and does not save it. 3.3.10 Critical Behaviors Form Figure 16. Critical Behaviors Form Figure 16 shows the Critical Behaviors form which provides a more detailed understanding of an organization’s current state by understanding the critical behaviors of participating groups that work together to ensure that assurance solutions are implemented and used successfully. Once the critical behaviors are understood, patterns of inefficiency can be identified. The user arrives at this form by selecting it on the Nine Step Form. The System Dynamics models can be created using third party system dynamics modelers such as Anylogic, Goldsim, Berkely Madonna, Sysdea, iThink® 33 ,STELLA® and SimGua. These artifacts are uploaded by clicking the Upload Artifacts button. Additional view information is entered in the text fields shown on this form. Clicking Save saves the entered information. Cancel and Return to Nine Steps Form buttons behave as described on previous forms. 3.3.11 Adoption of Products Form Figure 17. Adoption of Products Form Figure 17 shows the Adoption of Products Form that evaluates the current maturation of the solution and the participants involved by identifying the maturation mechanisms used. The user arrives at this form by selecting it on the Nine Step Form. The majority of information in this step comes from Jolly Model artifacts. These artifacts are uploaded by clicking the Upload Artifacts button. The user will enter the additional view 34 information in the text fields shown on this form. Clicking Save saves the information and keeps the user on this form. The user may then press the Return to Nine Step Form button to select the next step. Pressing the Cancel button clears entered information and does not save it. 3.3.12 Future Drivers Form Figure 18. Future Drivers Form Figure 18 shows the Future Drivers form which provides an understanding of potential future factors and their impact on assurance solutions and participating organizations by identifying future trends and influences that impact technologies and assurance solutions. 35 The user arrives at this form by selecting it on the Nine Step Form. The majority of information in this step comes from Strategic Alternatives Analysis artifacts. These artifacts are uploaded by clicking the Upload Artifacts button. Additional view information is entered in the text fields shown on this form. Clicking Save saves the information. Pressing the Return to Nine Step Form button returns the user to the Nine Step Form. Pressing the Cancel button clears entered information and does not save it. 3.3.13 Inefficiencies Form Figure 19. Inefficiencies Form Figure 19 shows the Inefficiencies Form. The final steps of the modeling framework involve evaluating inefficiencies and potential improvements for the assurance solution being evaluated. The form is used to enter inefficiencies that have been identified by the 36 analysts. The user arrives at this form by selecting it on the Nine Step Form. There are no artifacts related to this method. The user will enter the view information in the text fields shown on this form. Clicking Save saves the information and keeps the user on this form. Pressing the Return to Nine Step Form button returns the user to the Nine Step Form. Pressing the Cancel button clears entered information and does not save it. 3.3.14 Prioritized Improvements Form Figure 20. Prioritized Improvements Form Figure 20 shows the Prioritized Improvements Form. After evaluating the inefficiencies, potential improvements can be identified for the organizations adoption and use of the assurance solution being evaluated. It is important for assurance analysts to remember that creating a profile of a selected assurance capability area is only based on current 37 observation. To remain useful, it must be kept current. The EaseSAF profile is a living artifact that analysts can reevaluate and update over time. The user arrives at this form by selecting it on the Nine Step Form. There are no artifacts related to this method. The user will enter the view information in the text fields shown on this form. Clicking Save saves the information. Pressing the Return to Nine Step Form button returns the user to the Nine Step Form. Pressing the Cancel button clears entered information and does not save it. 3.3.15 EaseSAF Upload Artifacts Form Figure 21. Upload Artifacts Form Figure 21 shows the Upload Artifacts Form. This form uploads artifacts from each of the steps to be archived with the profile all in one package. The user arrives at this form by pressing the Upload Artifacts button on any of the other forms. The user will browse and 38 select the windows file that contains the artifacts, and click Open. Clicking Cancel unselects the file and keeps the user on this form. The user may press the Return to button to return to the previous step. The file is placed in the selected Windows directory folder that the user has set up for this purpose. Pressing Return then returns the user to the previous form. Artifacts can be edited, copied, printed and resaved with normal Microsoft Windows technology. 3.4 EaseSAF Database Design The database layer is the layer that holds the data entered by the users. For EaseSAF, Derby was selected as the database as it is easy to build and binds seamlessly with both Java Swing components and JSF. EaseSAF has many tables that support the functionality of the tool. The Swing components are bound to the data tables and support the exchange of data between the presentation and data layer. Binding of the Swing to the data elements is done through the binding properties in the IDE. The only form requiring a customized SQL query is the Profile Summary Form that joins information from several tables to be displayed in the Profile Summary Form. Table and column names in the database were selected to identify functionality. The primary keys are represented with the PK symbol. There are no foreign keys at this time. Relational cardinality is represented at the ends of the connecting lines. The database tables and relations are represented in the EaseSAF Entity Relationship diagram shown in Figure 22. 39 1 profile PK pID pName pDesc pStakeholder pProperty 1 * capability_area PK cID pp_and_i cChange 1 PK value_exchange PK ppiDef ppiParticipants ppiProvide ppiInvolve ppiConstraints ppiGoverns ppiNeeds ppiInvolved ppiGroups ppiDrive vID vOrgs vElements pa_results PK ppiID paID paCooperate critical_behaviors PK motivations PK cbID cbScenarios mID mMotivations mNotAchieve future_drivers PK adoption_of_products PK fID fImpact fEvolve fList aopID aopMechanisms aopContext prioritized_improvements inefficiencies PK PK piID iID iPatterns Figure 22. EaseSAF Entity Relationship Diagram piCandidates piImpact 40 Chapter 4 EASESAF IMPLEMENTATION AND EXAMPLE EaseSAF was implemented using an iterative life cycle. Each iteration consisted of a new set of requirements and was selected based upon its importance to the project and/or its contribution to discovery. Having never used this application before, the more I learned about Java Swing, the more functionality I was able to attempt. This approach was successful as it helped with managing and planning smaller project goals. With each iteration, I became more adept with Java Swing and I could focus on the actual functionality that I was trying to achieve. In 2010, Lisa Brownsword, Carol C. Woody, Ph.D, Christopher J. Alberts, Andrew P. Moore piloted the Assurance Modeling Framework and documented their results in their technical paper, A Framework for Modeling the Software Assurance Ecosystem: Insights from the Software Assurance Landscape Project. They executed their pilot using the Assurance Capability area, Vulnerability Management as an example for modeling. Three assurance solutions related to vulnerability management: Common Vulnerabilities and Exposures (CVE®) and Common Weakness Enumeration (CWE™) were also included as examples along with CERT Secure Coding Standards. In this chapter, the EaseSAF desktop tool is used to prove its efficiency in automating the Assurance Modeling framework. All the data is taken from the case study mentioned above and entered into EaseSAF to demonstrate the tools ability to manage the nine step process and save the data in the database. The following pages will 41 describe using EaseSAF for the assurance modeling process with a detailed description of how each step satisfied SEI’s framework requirements. When EaseSAF is launched, the Welcome form in Figure 23 is displayed. For our example, the radio button for Create New Profile is selected. Figure 23. Create a New Profile 42 The next step is to enter the new profile information as seen in Figure 24. For our example, Common Vulnerabilities and Exposures (CVE) profile information is entered. The save button is then clicked and the profile information is perisisted in the data layer. Figure 24. Vulnerability Management Profile Description 43 The Profile Name is populated from the Create New Profile Form shown in Figure 25. The Stakeholders and the Assurance Property for CVE is entered and the Save button is pressed. The user selects the Principle Perspectives and Influences View, which is the first step in the Assurance Modeling Framework and presses Go to display the Principle Perspectives and Influences form. Figure 25. Vulnerability Management and CVE 44 The Principle Perspectives and Influences form is where Organization, Supply Side and Demand Side information for CVE is entered by clicking on each tab and pressing Save on the Organization tab. The user elicits this information using the Critical Context Method and the interview template developed by SEI. This method describes the scope and “big picture” of the organization and identifies key stakeholders that supply CVE solutions and consume or use CVE solutions. The Upload Artifacts button is used to upload and save these artifacts in pre-designated windows folders. When entering the information for CVE is completed and saved on all three tabs, the Return to Nine Step Form is clicked. Figure 26 shows the information entered on the Organization Tab for CVE. Figure 26. Organization Tab for CVE 45 Figure 27 shows how CVE supplier information is entered on the Supply Side tab. Figure 27. Supply Side Tab for CVE 46 CVE consumer information is entered on the Demand Side tab as shown in Figure 28. Figure 28. Demand Side Tab for CVE 47 The next step in the Assurance Modeling Framework is the Value Exchange View as shown in Figure 29. This form is displayed when it is selected on the Nine Step Form. The participants and items of value identified in the Value Map are listed here. This information is elicited through the Value Mapping method developed by SEI. Value Mapping provides a visual representation of the interactions between participating organizations and CVE. The Value Maps and any other supporting documentation are uploaded by clicking the Upload Artifacts button and saving to a pre-designated windows folder. Figure 29. Value Exchange information for CVE 48 The next step in the Assurance Modeling Framework is the Potential Assurance Results View as shown in Figure 30. This form is displayed when it is selected on the Nine Step Form. The information for this form is elicited through the SoS Focus Analysis method developed by SEI. The resulting list of ways that participants and assurance solutions work together to build, install and support CVE is entered on this form and saved. The Summary of Roles and Responsibilities Alignment Model and the the Sos Focus Analysis Alignment Model artifacts and any other supporting documentation are uploaded by clicking the Upload Artifacts button and saving to a pre-designated windows folder. Figure 30. Potential Assurance Results information for CVE 49 Figure 31 shows the next step in the Assurance Modeling Framework, the Motivations View. This form is displayed when it is selected on the Nine Step Form. This step allows stakeholders to see what is currently working well, identify gaps, inefficiencies and improvements for CVE. This information is elicited through the Driver Identification and Analysis method developed by SEI. More detailed information about this method can be found in A Framework for Categorizing Key Drivers of Risk[12]. The resulting information about key drivers for CVE are entered on this form and saved. The list of Driver Attributes and Candidate Drivers of Vulnerability Management list and any other supporting documentation are uploaded by clicking the Upload Artifacts button and saving to a pre-designated windows folder. Figure 31. Key Drivers of Risk for CVE 50 The next step in the Assurance Modeling Framework is the Critical Behaviors View shown in Figure 32. This form is displayed when it is selected on the Nine Step Form. This step assists the analyst in understanding the critical behaviors of participating group in their use of CVE. This information is elicited through the System Dynamics method. The System Dynamics method helps analysts model and analyze critical behaviors towards CVE as they evolve over time. More information about this method can be found in Business Dynamics: Systems Thinking and Modeling for a Complex World [13] and Thinking in Systems – A Primer [14]. The resulting information about the critical usage scenarios for CVE are entered on this form and saved. The System Dynamics diagrams and any other supporting documentation are uploaded by clicking the Upload Artifacts button and saving to a pre-designated windows folder. Figure 32. Critical Usage Scenarios for CVE 51 The next step in the Assurance Modeling Framework is the Adoption of Products View shown in Figure 33. This form is displayed when it is selected on the Nine Step Form. This step assists the analyst in understanding the current state of maturation and use of collections of related assurance solutions within the organization. This information is elicited through the Technology Development and Transition method still under development by SEI. In the interim, SEI has selected the Jolly model for singletechnology maturation evaluation. The resulting information about the adoption and usage of CVE are entered on this form and saved. The Jolly model diagrams and any other supporting documentation are uploaded by clicking the Upload Artifacts button and saving to a pre-designated windows folder. Figure 33. Operational Adoption and Usage of CVE 52 The next step in the Assurance Modeling Framework is the Future Drivers View shown in Figure 34. This form is displayed when it is selected on the Nine Step Form. This step assists the analyst in understanding the potential future factors and their impact on assurance solutions and participating organizations. This information is elicited through the Strategic Alternatives Analysis method developed by SEI. More information about this method can be found in Scenarios: The Art of Strategic Conversation [15] and Powerful Times: Rising to the Challenge of Our Uncertain World [16]. The resulting information about future impacts to CVE is entered on this form and saved. The Axes of Uncertainty and any other supporting documentation are uploaded by clicking the Upload Artifacts button and saving to a pre-designated windows folder. Figure 34. Future Impacts for CVE 53 The next step in the Assurance Modeling Framework is the Inefficiencies View shown in Figure 35. This form is displayed when it is selected on the Nine Step Form. This step involves no formalized method. The information is elicited from review the preceding steps in the framework and brainstorming inefficiencies in the organization’s adoption and use of CVE. The resulting list of inefficiencies is entered on this form and saved. There is no supporting documentation. Figure 35. List of Inefficiencies for CVE 54 Once the inefficiencies for CVE have been identified, prioritized improvements can be listed on the form shown in Figure 36. The Prioritized Improvements form is displayed when it is selected on the Nine Step Form. This step involves no formalized method. The information is elicited from review the preceding steps in the framework and brainstorming improvements to the organization’s adoption and use of CVE. The resulting list of improvements are prioritized and listed on this form and saved. There is no supporting documentation. The resulting Profile Summary report for CVE can be viewed in figure 7. Figure 36. List of Prioritized Improvements for CVE 55 Chapter 5 CONCLUSION AND FUTURE WORK Assurance solution analysts must have a firm understanding about an organization’s assurance ecosystem to assist and guide those who fund assurance solutions. Analyzing an organization’s ability to adopt assurance solutions is critical to this process. Determining where resources should be applied and identifying critical gaps in assurance solutions are key objectives for organizations. The EaseSAF project was a semiautomation of SEI’s Assurance Solution Framework built to assist assurance analysts with the lengthy process of completing the framework requirements and managing the many artifacts involved. Many improvements can be made to this tool. EaseSAF should be web-based with a responsive design set of components that can render for both mobile and desktop The Adoption of Products step’s use of the Jolly Model method will need to be changed when SEI has finished developing the Technology Development and Transition Analysis method EaseSAF should guide the analyst through the framework step, constraining steps to be executed in the correct order. The Profile Summary will need print functionality Assurance Modeling Framework and EaseSAF Page level Help functionality should be included for user assistance. 56 I encourage future developers to improve upon this tool to help achieve organizational software and system assurance. 57 REFERENCES [1] Lisa Brownsword, Carol C. Woody, Ph.D, Christopher J. Alberts, Andrew P. Moore. A Framework for Modeling the Software Assurance Ecosystem: Insights from the Software Assurance Landscape Project, Software Engineering Institute, Technical Report CMU/SEI-2010-TR-028 (2010, August). [Online]. Available: http://www.sei.cmu.edu/reports/10tr028.pdf [2] J. Heffley and P. Meunier, Can Source Code Auditing Software Identify Common Vulnerabilities and Be Used to Evaluate Software Security? Proceedings of the 37th Annual Hawaii International Conference on System Sciences (HICSS–04), Track 9, Volume 9, IEEE Computer Society, January 2004. [3] The CERT Secure Coding Analysis Laboratory, SCALe (2014). SCALe home form. Retrieved April 4, 2014, from CERT website: https://www.cert.org/secure-coding/products-services/scale.cfm [4] The Web Application Security Project, OWASP (2014). Category:OWASP Top Ten Application Security Risks - 2013. Retrieved April 4, 2014, from OWASP Web site: https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project#tab=OWASP_T op_10_for_2013 58 [5] Matthew Collins, Dawn M. Cappelli, Tom Caron, Randall F. Trzeciak, Andrew P. Moore. Spotlight On: Programmers as Malicious Insiders–Updated and Revised, Software Engineering Institute, White Paper (2013, December). [Online]. Available: http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=72825 [6] Lisa George Silowash, Dawn Cappelli, Andrew Moore, Randall Trzeciak, Timothy J. Shimeall, Lori Flynn. Common Sense Guide to Mitigating Insider Threats 4th Edition, Software Engineering Institute, Technical Report CMU/SEI-2012-TR-012 (2012, December). [Online]. Available: http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=34017 [7] The Web Application Security Consortium, WASC (2010, January 10). Web Application Security Statistics . Retrieved April 8, 2011, from The Web Application Security Consortium: http://projects.webappsec.org/w/page-revisions/13246989/WebApplication-Security-Statistics [8] Software Assurance: An Overview of Current Industry Best Practices, SAFECode Software Assurance Forum for Excellence in Code, Technical Paper, Executive Summary (2008, February). [Online]. Available: http://www.safecode.org/publications/SAFECode_BestPractices0208.pdf [9] Siviy J.M., Alberts C., Moore A.P. , Carol C. Woody, Ph.D, Value Mapping and Modeling SoS Assurance Technologies and Supply Chain, Systems Conference, 2009 59 3rd Annual IEEE , Technical Report 978-1-4244-3463-3 (March 2009). [Online]. Available: http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=34017 [10] Carol C. Woody, PhD, Lisa Brownsword, Christopher J. Alberts, Andrew P. Moore. The Landscape of Software Assurance—Participating Organizations and Technologies, , Software Engineering Institute, Technical Report. (2009, April). [Online]. Available: http://enu.kz/repository/2009/AIAA-2009-1919.pdf [11] Julien Delange, Detecting Architecture Traps and Pitfalls in Safety-Critical Software, SEI Blog (December 2013). [Online]. Available: http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=34017 [12] Christopher J. Alberts, Audrey J. Dorofee, A Framework for Categorizing Key Drivers of Risk, Software Engineering Institute, Technical Report. (2009, April). [Online]. Available: http://resources.sei.cmu.edu/library/asset-view.cfm?assetid=9093 [13] John D. Sternman, Business Dynamics: Systems Thinking and Modeling for a Complex World , McGraw-Hill/Irwin (February 23, 2000) 60 [14] Donella H. Meadows, Thinking in Systems - A Primer EarthScan (2008) [Online]. Available: http://www.ess.inpe.br/courses/lib/exe/fetch.php?media=wiki:user:andre.zopelari:thinkin g_in_systems_a_primer.pdf [15] Van der Heijden, Kees. Scenarios: The Art of Strategic Conversation, 2nd edition. Wiley, 2005. [16] Kelly, E. Powerful Times: Rising to the Challenge of Our Uncertain World. Wharton School, 2005. [17] Cay X. Horstmann, Gary Cornell , Core Java Volume I – Fundamentals, Ninth Edition, Prentise Hall, 2013.