1 CHAPTER 1 INTRODUCTION As the businesses across the world become more and more complex, the needs for sophisticated software, which can handle complex scenarios, are increasing rapidly. This has led to an ever-increasing demand for better software development approaches, which are robust enough to handle the complex and dynamic requirements [1]. Consequently, the software must be developed and integrated faster than ever by bringing together diverse and distributed components, which are owned and built by multiple teams. The challenges lie in creating those components or services in such a manner that they can interact seamlessly and are scalable in nature. Poorly managed software leads to an increasingly bloated project timelines and blown IT budgets that in turn lead to exploding manual costs, high failure probability among others. The success of the software hinges primarily on how well the software addresses the needs of the marketplace. Software requirements must drive the design and development decisions throughout the product development lifecycle and a thorough product testing must be done against the specified requirements to make sure we are not just delivering software that works, but also the software that we set out to build. This calls for a well-defined requirement engineering process that enables to manage the requirements throughout the entire product lifecycle. Requirements engineering is a systems and software engineering process, which covers all of the activities involved in discovering, documenting and maintaining a set of requirements for a computer-based system [2]. While there are differing definitions of the term, common factors are that requirements engineering is a sub discipline of 2 system and software engineering and is concerned with establishing the goals, functions and constraints of hardware and software system [2]. Software requirements, both functional and non-functional, contain assumptions, which if not managed successfully, intrude and impose themselves between design and deployment of a system and can lead to serious software failures in the later part of development life cycle. An assumption in literal terms is defined as, “the act of taking for granted, or supposing a thing without proof; supposition; unwarrantable claim” [3]. There can be many reasons for having assumptions; lack of knowledge domain , poor communication , ambiguous requirements , lack of domain expertise and too much expertise are only a few of them. Assumptions can lead to inconsistencies and incompatibilities, which can cause failure and other post deployment problems. Furthermore, individual assumptions may become invalid because of changes in the environment in which the system is to be deployed. To address this problem, the following elements are necessary: 1. A method to identify assumptions, even those that are “hidden”. 2. An approach to record identified assumptions in a “real-time” manner that is not disruptive to the developer. 3. A mechanism to validate the identified assumptions by the people that possess the knowledge to declare each assumption valid or invalid. 4. A tool to search for recorded assumptions by other developers and people involved in the development effort. 3 Assumption management system presents an approach that helps the user to detect the hidden assumptions inside the software requirements in very early stages of Software development life cycle [3]. The system uses a series of approaches to drill down hidden assumptions inside the software requirements. It includes the Cause and effect approach or more famously called as the fishbone technology, Risk mitigation strategy along with tag detection methodology to drill down deep into the requirement and reveal the hidden assumptions [4]. 4 CHAPTER 2 BACKGROUND Every software requirement, be it be in form of project plan, task list or user story always contains certain hidden assumptions inside them. As stated previously also, an assumption usually occurs when the software teams presume something for granted that it is true. Some assumptions are obvious but some are obscure. An assumption differs from the risk in a way that risk may be considered the adverse effect of the assumption, which we usually believe, is unlikely to occur. The hidden assumptions inside the software requirements and their impact is something that is been a well-known problem in the software domains for years. We all make a variety of assumptions when making plans and commitments. Usually, those assumptions prove to be correct but not always [5]. In addition, the more assumptions the team makes, the greater the likelihood that something will not go as planned. (A risk event will be realized).One reason why so many development projects take longer than planned is simply because one or more assumptions proves wrong and the team has to scramble to address the issues they were not aware of. For that reason, it is a good idea to take a moment to think through the development team’s assumptions. To understand it more clearly let us take some examples of the hidden assumptions inside the software system [3]. 1. The team will remain intact for the duration of the project. 2. Computer systems and data will be available to the team when needed. 5 3. Development tools and technology infrastructure will be adequate to support the project. 4. People outside the core team will be available when needed. 5. Outside parties (e.g. vendors, suppliers, business partners, etc.) will deliver as promised. 6. User stories have been properly scoped and estimated. 7. Task lists are thorough. 8. The definition-of-done covers the needs of every story. 9. Any team member will be able to select any story and complete it. 10. Team members have adequate knowledge and training to complete the project. The stated assumptions though obvious can be really risky and dangerous for the project. For instance, the assumption that the team will remain intact for the duration of the project. The reason we make that assumption is that they have over the period been intact for most of the time. However, any aberration from the stated normal behavior can lead to fatal consequences, which can become a risk to the project. If some people in team are displaced or leave the project, this can lead to problems like resource shortage and re-estimation, which can delay the project considerably. The impact of hidden assumptions can be quite severe in the field of testing too. Linda Hayes analyzes the very structure in which most of the automated batch testing techniques works and how dangerous it can be if there are any hidden assumptions in the process [6] [3]. The way batch testing works is it simply automates the captured production data and uses it as baseline to compare the results against it. It may be easy for describing a lot of functionality in the shorthand but unfortunately, it also means 6 that an error introduced in the baseline can actually go undetected for a long period and can cause a lot of damage. This can be a common scenario presuming if the system is working in production for a long period then any documentation for the system becomes long out of date and it is hard to tell if anything is going wrong in the system until someone really digs deep into it. A real time classical example of the impact of the hidden assumption can be taken from a firm called Home Side Lending; a New Jersey mortgage broker company acquired by the Australia bank was under pricing mortgages for long period due to a computer error in which the wrong interest rate was used [3] [6]. The eventual outcome was a loss of $4 billion to the bank and the bank almost went bankrupted because of that. Aside from the damage in cost, it is amazing how long the error went undetected. Mortgage pricing is essential to Home Side’s core business and alleged to be their special competency. How it happened is a mystery but obviously someone, somewhere, and at some time decided the software was correctly pricing mortgages when it was not. No one questioned it until the Australian banking authority audited the software and found it to be working incorrectly for many years. As more and more sober stories of impact of hidden assumption keep coming up there is more than ever need to come up with techniques to find the hidden assumptions in the early phase of the project. Assumption management system tries to make a shot at that by suggesting a consolidated approach for finding the hidden assumptions inside the software requirements. Hidden assumptions uncover further foreseen problems inside the project. Once detected the discovered assumptions must be dealt with otherwise they can derail the functioning of the project. 7 As per many studies, it has been found that no matter what approach we use it is almost impossible to find all the hidden assumptions inside the software requirement. To mitigate it some says the best thing to do is to do a proof of concept approach to project. While even this does not guarantee all round elimination but it will help ferret out a sizable fraction. The repercussions of a system going into production with hidden assumptions can be immense. They may not be exposed for years but the potential is always there. By definition, we will not be aware of it until the problem occurs. The best effective way is to find the hidden assumptions during the requirements/design phase of the software development. At each interaction, understand why and how the data will be used. How the data will get from point A to Point B. As data moves from tier to tier (database to middleware to web server to presentation) what assumptions are carried out at each tier From the Project Management software side, the system is always viewed in through three different levels. i.e.: Technology, Business and Behavior. Unfortunately, software assumptions are found in all the three areas. In terms of behavioral side, the assumptions creep up because all the stakeholders think they are all thinking the same thing. They all think they know the best and they know the customer’s intentions well. Which is not true in most of the cases? As per technology the reason why our assumptions are more prevalent in software is lack of engineered “blue print” type design or details. Poor communications in a communication centric world or if the customer requirements are intangible, difficult to define and verbalize. In addition, fast-paced business does not allow for design freeze. Some typical assumptions here 8 are technology can solve our key problems, People are interchangeable and its technology that is important. Also assuming that the estimates are accurate enough. From business point of view some typical assumptions are there is always a funding available from somewhere, we know what’s/who is driving our project. The ‘paying’ customer is happy among others. Assumptions affect all aspects of project planning and are part of progressive elaboration of the project. Many experts of software engineering have tried to study this problem and have come up with many theories, which aim at suggesting the negative impact of the hidden assumptions and how critical it is to detect them at the earliest. Though most of the work done in this area aims mainly at highlighting the impact of the hidden assumptions inside the project but not much research has been done in defining some definite set of techniques that aim to find the hidden assumptions inside the project . Andy Steingruebl and Gunnar Peterson for instance take a shot at creating a methodology for revealing hidden assumptions by coming up with better approach for discovering and documenting them. They classify the hidden assumptions into three categories of design time, run time and implementation time and come up with techniques for how to apply different techniques for different types of the assumptions and what can be done to eliminate the same [7]. GA Lewis comes up with Assumption management software that stores the assumptions in a repository and integrates it with the project management and system administration modules to reveal the hidden assumptions [8]. 9 Our approach aims to present an approach for finding out hidden assumptions inside the project during the early life cycle of the project. All the technical and business stakeholders to uncover “hidden assumptions” in early phase of the project should use the underlying approach / methodology easily. . This will help avoid the problems that are discovered later in the development life cycle when they become more expensive. This new methodology will need to provide a vehicle to encourage stakeholders to think about and vocalize assumptions, even obvious ones, early in the analysis phase of product development. Close Initiate Plan Execute Control Many Possible Assumptions Figure 1 - Simple Framework for a Single Project [5]. 10 2.1 Proposed Solution Assumptions The proposed approach has the following underlying assumptions: 1. All the stakeholders are involved in the requirement gathering process. 2. All concerned parties have in-depth expertise of domain and their respective vertical. 3. Abidance to the solution especially in the early stages of the process. 4. Improving the quality involves taking action on the root causes of the problem. 5. There always are hidden assumptions. 11 CHAPTER 3 METHODOLOGY The project solves the problem of the hidden assumption with the help of three main techniques i.e. Cause and effect or fishbone technology, risk management technique and the tag detection method. The description of three is as follows: 3.1 Cause and Effect Method Cause and effect analysis methodology is a method, which was developed by Japanese professor Kaoru Ishikawa, a pioneer of quality management. The process includes creating a cause and effect diagram, which is also called as the fishbone diagram. Originally developed as a quality control tool this technique however can be applied to a range of other areas. As an example, it can be used to discover the root cause of the problem, uncover bottlenecks in the processes and identify where and why a process is not working properly [9]. Cause and effect analysis provides a structured way to think through all possible causes of a problem. This helps carry out a thorough analysis of a situation and uses an idea-generating technique to identify the factors within each category that may be affecting the problem / issue and/or effect being studied. For those items identified as the “Most likely causes”, the team should be able to reach a consensus on listing those items in priority order with the first item being the most probable cause. Application of cause and effect method in the detection of the hidden assumptions inside the software requirement can be effective. The root cause of assumptions is the way in which the requirements are drafted. A short and ambiguous statement of 12 software requirement may contain many assumptions, which can be costly especially in the later stages of the software development life cycle. Cause and effect helps decipher those assumptions at a very early stage by revealing all possible risks that may be involved with that requirement. To illustrate it let us consider an example of how we will create a fishbone diagram for a problem-hidden assumption for instance. Step 1: The Developer starts with the effect to be investigated (hidden assumption) and draws a backbone arrow to it. Hidden Assumptions Figure 2 - Creating the Cause and Effect Diagram Step 2: We identify all the broad areas of inquiry in which the cause and effect being investigated may lie. For hidden assumptions, the diagram may then become (see Fig. 2). Step 3: In this step, we dig down deep into each area of inquiry and see what can cause that to happen. The result will be representation of all factors related to the effect being explored and the relationships between them. 13 Faulty functional requirements Arrogance of experts Lack of domain competence Lack of knowledge Ambiguou s Requirem ents Assumptions Communication Gap Faulty NFRs Trying new Methodology Time Shortage Figure 3 - Creating the Cause and Effect Diagram for Assumptions. 3.2 Risk Management methodology Risk analysis is often viewed as a black art. Successful risk analysis is however nothing more than a business level decision support tool. It is a way of gathering the requisite data to make a good judgment call based on knowledge about vulnerabilities, threats, impacts and probability. Risk management approach helps to assess risk, manage cost and control quality of software and data from vendor; measure effectiveness of people, processes and supporting frameworks in the software supply chain; and helps to find and govern the risk to us, our business and our organization [4]. 14 Now for the question how this risk management strategy does helps in finding out the hidden assumptions. When we talk about the assumptions, finding them alone does not add value to the process unless we attach risk to them and rank them accordingly. Risk management framework gives us the power to do that. The Risk management framework consists of five fundamental activity stages as shown in Figure 4 [4]. Figure 4 - The BSI Risk Management Framework [4] 3.2.1. Understand the Business Context Software risk management occurs in a business context. Risks are often unavoidable and are integral part of the software development process. This stage of the process focuses on handling the business situation. Commonly, business goals are neither obvious nor explicitly stated. In some cases, we may even have difficulty expressing these goals clearly and consistently. During this stage the analyst must extract the business goals, priorities and circumstances in order to understand what kind of risks 15 to care about and which business goals are paramount. Business goals include increasing revenue, meeting service level agreements. Reducing development costs and generating high return on investment. 3.2.2 Identify Business and Technical Risks Business risks are a danger to the business goals. The identification of such risks helps to clarify and measure the impact those will have on the business goals. Business risks may have impacts that include direct financial loss, damage to brand or reputation, violation of customer or regulatory constraints, exposure to liability and increase of the development costs. The severity of a business risk should be expressed in terms of financial or project management metrics. These include but are not limited to market share, direct cost, and level of productivity and cost of rework. Business risk identification helps to define and steer use of particular technical methods for extracting, measuring, and mitigating software risk given various software artefacts. The identification of business risks provides a necessary foundation that allows software risk (especially impact) to be quantified and described in business terms. The key to making risk management work for business lies in tying technical risks to business context in a meaningful way. The ability to identify and deeply understand risks is thus essential. Uncovering and recognizing technical risks is a high-expertise undertaking that usually requires years of experience. Central to this stage of the Risk Management Framework lays the ability to discover and describe technical risks and map them (through business risks) to business goals. A technical risk is a situation that runs counter to the planned design or 16 implementation of the system under consideration. For example, a technical risk may give rise to the system behaving in an unexpected way, violating its own design strictures, or failing to perform as required. Technical risks can also be related to the process of building software. The process an organization follows may offer too many opportunities for mistakes in design or implementation. Technical risks involve impacts such as unexpected system crashes, avoidance of controls (audit or otherwise), unauthorized data modification or disclosure, and needless rework of artefacts during development. 3.2.3 Synthesize and Prioritize the Risks This stage involves synthesizing all the risks identified in the stage 2 and prioritizing them as to which of them can really affect the business goals the most. Clearly, the prioritization process should take into effect which of the goals of firm is the most important ones. According to the priority, all the risks identified should be ranked in order of the most critical to the least ones. 3.2.4 Define Risk Mitigation Strategy Stage 3 gives the information of all the risks that are associated in order of their criticality. This stage aims to mitigate those risks by clearly defining the strategies to weep out the risks. Typical metrics includes likelihood, risk impact, risk severity and number of risks emerging and mitigated over the period. 17 3.2.5 Execute Process and Validate the Results. Once a plan is set, it is the time to execute them. This stage does that. Risk mitigation should be carried out in accordance to the plan that has been set in the earlier stage. This stage also involves application of those validation techniques previously identified. The validation stage provides some confidence that risks have been properly mitigated through artifact improvement and that the risk mitigation strategy is working. Testing can be used to demonstrate and measure the effectiveness of risk mitigation activities. The central concern at this stage is to validate those software artifacts and processes no longer bear unacceptable risks. This stage should define and leave in place a repeatable, measurable, verifiable validation process that can be run from time to time to continually verify artifact quality. Typical metrics employed during this stage include artifact quality metrics as well as levels of risk mitigation effectiveness. 3.3 Assumption Management by Tag Detection. It has been found that the set of non-functional requirements that contains a certain set of words or tags are more susceptible to have hidden assumptions inside them as compared to the ones that do not have them. The tag detection technique aims at parsing the software requirements and aiming to find those words or tags inside them. A quick parse can tell which parts of the requirements can be faulty and needs further assessment. 18 Table 1 displays the different set of NFRs and the commonly used tags attached to it. Table 2 displays the keyword and its conjugate both of which can be source of hidden assumptions. Table 1 - Representation of the Set of NFRs and the Words. Functionality system external resource Usability system software data Reliability system resource data data allow software available resources configuration provide gracefully behave consumers user application restarted processing procedures valid affecting users profile application failure event error time Efficiency system scaling software Maintainability system resource software Portability installation system installed Log software Error change patch upgrade extended configuration likelihood time application tier distribution procedures processes Data information mismatches between configurations patches unnecessary limits workload Table 2 - Action Words with the Conjugate. Keyword Conjugate Can Can not Must Must not Shall Shall not Should Should Not Will Will not 19 CHAPTER 4 PROPOSED SOLUTION The proposed solution to solve the problem of hidden assumption makes use of the three methodologies discussed in the chapter four. How they are combined together and how the combination helps in solving the hidden assumption problem is something we will discuss in this chapter. The combined approach takes a shot at finding the hidden assumptions that too at the early phases of the SDLC [2]. This is how it works. First we apply the RMF framework process that we discussed in chapter 3 and amalgamate the 2 other methodologies in the risk identification and mitigation stage of the process [4]. Assuming the stakeholders understand the Business Context well. The solution involves 4 steps: - STAGE 1 Identify the Technical / Business risks involved with the requirements. STAGE 2 Prioritize the risks involved. STAGE 3 Define the risk mitigation strategy. STAGE 4 Problem solving and requirement validation. Figure 5 - Four Stages of Solution. 20 Functionality system external resource data available resources consumers Usability system software data allow configuration provide user 1. Tag Detection Method 2.Fishbone Diagram Figure 6 – Solution Diagram: The diagram explains the approach the system uses for the hidden assumption removal. It is an extension to the traditional RMF discussed in chapter four. Here the processes of risk identification and risk mitigation are extended with the tag detection and fishbone diagram approach respectively. The tag detection method helps in revealing more risks inside the requirements and the fishbone methodology helps in enhancing the mitigation process of the requirements [4]. 21 In order to understand how our approach works let us apply this on real time requirements and see how this works. The following is the example of the real time project used as a test sample to be applied to our solution. 4.1 Solution Details To see how our solution works let us consider a sample project and try to apply our solution to it. Sample Project Statement: Our organization relies heavily on the support of our community through volunteer work. We have many volunteers who teach our classes, mentor our clients, and assist with fundraising and events. Our volunteer base is about 300 volunteers, who work weekly, monthly, or annually. We need a system to be able to input volunteer’s contact information/employer information and track hours that volunteers work. The system should provide a way to calendar the volunteers into a staff/office calendar system. Our staff should be able to view and make changes to a certain extent, but the Volunteer Coordinator would have ultimate editing/changing abilities. The system should allow users to export the data into an excel file so it can be imputed into another database we use for donors. Sample Project Organization Computer Environment: The organization has a server/shared drive that each staff member can access. The staff is not all that computer savvy so the program/database would have to be very user friendly, at least for those just accessing the information. 22 Sample Project Aim: Develop a system to manage and track office volunteer information and transactions. Functional and nonfunctional requirements: The system should/Shall allow: 1. Ability to export data to MS Excel. 2. Allocate volunteer interest (volunteer is interested in special events, teaching a class, childcare, sorting clothes, etc.). 3. Allocate volunteer “area of service” (example: teacher, mentor, special events, childcare certified, etc.) 4. Notify staff of volunteer birthday. 5. Email volunteers a reminder they will be teaching (date and time as imputed in the database). 6. Email volunteers of upcoming volunteer opportunities specified by staff. 7. Interact with a client database (not yet created) so we can assign volunteer mentors to clients). 8. Calculate volunteer hours. 9. Needs to run on website for universal access. 10. Can run on any operating system. 11. Software must be reliable and not crash. Applying Our Approach to the Sample Problem Described Above: Applying STAGE 1 of our approach to the set of requirements 23 To start with, let us analyze the requirements and try to find out which requirements can have technical and business risks involved. Requirement 1: Ability to export the data in MS excel. 1. Analysis: The requirement is not very clear as it does not point out what all fields of the data are to be captured in the Excel –Sheet. 2. Tag Found: Looking at table 7 we found that the requirement has a tag data associated with it. Data is a generic word and unless specified very clearly can lead to possible hidden assumption. 3. Risks involved: A major risk involved here could be the quantum of data that goes into the excel sheet. Requirement 2: Notify staff of volunteer birthday. 1. Analysis: The requirement is not very concise, what kind of notification is to be send (email, sms, pop up). 2. Tag Found: Looking at table 7 we found that the requirement has a tag notify associated with it. If the word ‘notify’ is not used in the conjunction with the notification type than it can lead to hidden assumptions. 3. Risks involved: What If the volunteer declines to mention his/her birthday. In addition, different notifications can have different technical and business repercussions. 24 Requirement 3 : Allocate volunteers on a special date of service. 1. Analysis : The line special date of service needs to be more elaborative and explicit 2. Tag found : None 3. Risks involved: Although no tags found in this requirement but it still may have a risk associated with it. What if volunteer is not available on that day or the mail server goes down and application is not able to notify the Volunteer. Requirement 4: Interact with a client database (not yet created) so we can assign volunteer mentors to clients. 1. Analysis: No clear mention of how the volunteers will be assigned to the clients. 2. Tag Found : None 3. Risk involved: How will we manage the volunteer sharing in case multiple clients require the same volunteer. Applying STAGE 2 of our approach to the set of risks identified in stage 1 In this stage we prioritize, the risks identify in stage 1. Considering the business goals of the system, we rank them according to the most severe ones to the minor ones. 25 After analyzing the business goals, we come up with the following list of risks according to priority. 1. Allocation of the resources 2. Quantum of data in the excel sheets. 3. Notification type to the volunteers. 4. Mail server down. Applying STAGE 3 on the risk identified Now after we identify the risks involved we go to the risk mitigation stage of the RMF where we try to find out the mitigation strategies to solve the risks. Here we would be applying the cause and effect fish bone methodology to dig more on what can cause these risks to happen. Requirement 1: Ability to export the data in MS Excel. 1. Risk identified: Quantum of data in excels. 2. Cause and Effect analysis : Poor data normalization in the database User selected all data with no filters Quantum of data in excels. Redundant data was not taken care. Figure 7 - Cause and Effect Analysis of the Quantum of Data in Excel. 26 Possible Assumptions: The possible hidden assumptions for the risk after applying the cause and effect analysis are: 1. While generating the report the user will use one of the filters for the report. 2. There will be unique data inserted in the database. 3. Database is robust enough to handle huge chunks of data. 4. Client has MS office installed on its machine. The possible effect of the above causes can be quite serious. 1. It can lead to a buffer overflow error in case the number of records is more than 65,000. This is because the Microsoft excel does not support more than 65,000 rows of data. 2. There could be some fields in the report that are not supported by the Microsoft API; this can lead to introduction of corrupt data. 3. The reports will cease to work if the system does not find the Microsoft APIs on the client. Conclusion: Using our risk mitigation strategy we have successfully revealed that if not catered properly the bulk of data in the excel sheet can lead to some serious problems. Similarly, we can apply the cause and effect approach to other set of requirements to dig into the real causes of the risks. Here are the cause and effect analysis for other requirements. 27 Popup Email Notification Type SMS Natural Calamity. Power outage. Mail Server down Hardware Failure Resource for required technology not available Resource Allocation. Resource is already allocated Figure 8 - Cause and Effect Analysis of the Requirements 2, 3 and 4. 28 Applying STAGE 4 to the risk mitigation strategy identified in stage 3 Let us take the first requirement and apply stage 4 on that. We redraft our requirement into set of 4 requirements so that it does not have any hidden assumptions. 1. The system should have the ability to export the data generated in the volunteer Work hours screen into the MS excel sheet 2007. 2. If the number of records exported is more than 65000 records the first 65000 records should be inserted into the first sheet of the sheet and any other records should be put into the other worksheet of the excel file. 3. Proper type checking should be done so that there is no data mismatch or corrupted data in the sheet. 4. The client should have MS office 2007 installed on its system. 4.2 Solution Strengths and Benefits 1. Risk analysis is good general-purpose yardstick by which we can judge our security design’s effectiveness. Because roughly 50% of our problems are the result of requirement flaws, we perform our technique at the requirement phase identify hidden assumptions as early possible. 2. By considering the resulting ranked risks, business stakeholders can determine how to manage particular risks and what could be the most cost effective controls. 29 3. The major factor that makes fishbone strategy successful is the increased knowledge of the process, helping everyone to learn more about the factors at work and how they relate to each other. It easily identifies areas for further study where there is lack of sufficient information. 4.3 Solution Constraints Thus we see through the examples that applying the 3 methodologies does yield hidden assumptions which otherwise would have been hidden and could have caused damage in the later stages of the SDLC. However, the solution also has some constraints, which may restrict it to find all the hidden assumptions. Some of them are: 1. The scope of the solution is limited to the three methodologies; Risk management, Fish bone cause and effect and the tag detection methodology [4] [9]. 2. Risk analysis output is difficult to apply directly to modern software design structures. 3. Solution does not provide an easy guide of all potential vulnerabilities and threat to consider at a component/environment level. This is why a large knowledge base and lots of experience is required. 4. The major constraint with the fishbone technique is it is inefficiency for extremely complex problems, where many causes and many problems are interrelated. 5. Fish bone diagrams does not clarify the sequence of the causes. 30 CHAPTER 5 TAG DETECTOR SYSTEM Tag detector is a web-based tool made in ASP.net, which helps in detecting the hidden assumptions inside the non-functional software requirement by using the tag detection approach discussed in Chapter 4. The system scans all the requirements line by line and tries to find the tags inside the requirements, which can cause the system to fail. This section talks about the requirements of the system in detail, its design, its constraints followed by the detailed description of the screens and the database structure. 5.1 Tag Detector Requirements The Tag Detector requirements are classified into three parts. User Management Requirements, Tag Management Requirements and NFR Management Requirements. This is followed by the requirements for the main 5.1.1 User Management Requirements The following are the functional requirements of the Tag Detector, which a registered user for the Tag Detector should be able to perform. 1. The system should allow the new user to register to the Tag Detector system in case he/she has not been registered. 2. The system shall check the database for any existing entry in the database for the same user. 31 3. The system should notify the user if the username already exists and should ask them to opt for a different user name. 4. The system should make sure that the user enters all the required fields while adding the user to the system. 5. The system should notify the user when the user is successfully registered into the system. 6. The user should be able to login into the system with the registered user name and password. 7. The system shall provide the forget password functionality to the user in case the user forgets the password. 8. The system shall email the user the password on the basis of the username entered. 9. The system shall provide the user the change password functionality to change the password whenever they want. 10. The system should have the User Management screen for the admin users where they can view all the usernames and their email ids for system maintenance purpose. 11. The system shall allow the admin user to add, edit or delete the user from the Tag Detector System. 32 5.1.2 Tag Management Requirements The following are the functional requirements for the Tag Management module for the Tag Detector tool. 1. The system shall allow the user to add more tags into the database based on the non-functional requirement parameter selected. 2. The system shall check if the tag already exists in the database. 3. The system should notify the user in case the tag already exists in the database. 4. The system shall allow the user to edit the existing tags in the database. 5. The system shall allow the user to delete the tags from the database. 5.1.3 NFR Management Requirements The following are the functional requirements for the NFR Management module for the Tag Detector tool. 1. The system shall allow the user to add more NFR into the database. 2. The system should notify the user in case the NFR already exists in the database. 3. The system shall allow the user to edit the existing NFR in the database. 4. The system shall allow the user to delete the NFR from the database. 5.1.4 Assumption Management Requirements 1. The system shall allow the user to upload the requirements using the upload document functionality. 33 2. The system shall display the requirements uploaded in the screen in the following format : 1. Req ID. 2. Requirement. 3. The system shall perform the tag detection for one requirement per time. 4. The system shall allow the user to clear the requirements. 5. The system shall provide the dropdown for all the NFR in the system. 6. The system shall scan all the lines of the requirements and search for the tag based on the NFR criterion selected in the dropdown. 7. The system shall summarize the findings on the screen in the following format: 1. Req ID. 2. Requirement. 3. Faulty Word. 4. NFR Type. 5.1.5 Tag Detector Assumptions 1. The requirements for the analysis should be in the .xls template format. 2. Client has MS office installed on its system. 5.1.6 Other Information Tag detector is built in ASP.net 4.0 with SQL Server 2008 as the database. The system uses Telerik ASP.net AJAX suite for displaying the information in the grid and is compatible in all the browsers. 34 5.2 Use Cases 5.2.1 User Management Use Case Figure below shows the use case for the User Management module. There are 2 main actors in the User management module i.e. Tag Detector user and Admin. The Admin user has the access to all the users and can add/edit/delete any user from the system. Individual Tag Detector user can register itself, login and can use the modules like forget password and change password. Figure 9 - Use Case Diagram for the User Management Module 35 5.2.2 Tag Management Use Case The use case diagram for the Tag Management module consists of one actor and three components. Actor comprises of the Tag Detector user and it has the ability to add a tag to the system, edit the existing tag in the system and delete the tag from the system. Preconditions The following pre-conditions must be true to initiate this Use Case. 1. User has logged into the System. Figure 10 - Use Case Diagram for the Tag Management Module 36 5.2.3 NFR Management Use Case. The use case diagram for NFR Management module consists of one actor and three components. Actor comprises of the NFR Management user and it has the ability to add, edit and delete the NFRs inside the system. Preconditions The following pre-conditions must be true to initiate this Use Case. 1. User has logged into the System. Figure 11 - Use Case Diagram for the NFR Management Module 37 5.3 Data Flow Diagram Figure 12 displays the data flow diagram between the different components of the Tag Detector system and its attributes. NFR Type Description NFR NfrDescription Users Req Mapping Name nfrTypeID eMail ID Password NfrWord Desc Figure 12 - Data Flow Diagram for the Tag Detector. RiskID 38 5.4 Database Structure The Database is composed of three main tables namely NFRDescription table, Users table and Reqmapping table. NFRDescription is the lookup table that consists of the record of all the NFRs that is being used in the mapping. The Requirement mapping table consists of the mapping of all the NFR types and the words associated with it. Users table consists of the record of the users in the system along with their email IDs and password. Figure 13 - Database Structure for Tag Detector. 39 5.5 Architecture of the Tag Detector. The Tag Detector systems architecture consists of two basic layer, the web pages and the user controls composes the Presentation layer , the code behind page forms the business logic layer which consists of all the logic which in turn interacts with the SQL server database. ADO.net is used for the communication between the web pages and the database. Presentation Layer ASP.net Webpages, User Controls and Telerik Grids. Business Logic Layer ASP.net Code behind SQL Server Figure 14 - Architecture of Tag Detector. 40 5.6 Tag Detector Screen 5.6.1 User Management Screens 1. Register User Screen. The Add user screen allows the user to register into the Tag Detector system. The go back button takes the user back to the login page. Figure 15 - Register User Screen. 2. Forget Password Screen. The Forget Password screen allows the user to retrieve the lost password based on the correct username entered. The password is send to the user in the email entered during the registration. Figure 16 - Forget Password Screen. 41 3. Change Password Screen. The change password screen allows the user to change his/her password. The system prompts the user to re-enter the old password twice and notifies the user in case the old password is incorrect. Figure 17 - Change Password Screen. 4. Login Screen The login screen allows the user to log in to the system if the credentials entered are correct. Figure 18 - Login Screen. 42 5. User Management Screen The user management screen is used by the admin for adding, editing and deleting any user from the Tag Detector system. (This is additional to the register user discussed in 1) Figure 19 - User Management Screen. Figure 20 - Edit user Screen. 43 5.6.2 Tag Management Screen 1. Tag Management Grid (View) The Tag Management Screen has all the tags displayed on the screen along with the NFR type. We can view the different tags for the different NFR type by selecting the different NFR type from the dropdown. Figure 21 - Tag Management Screen. 2. Tag Management Grid (Add View) On clicking the add Tag link in the grid the system opens the add view and allows the user to add the new Tag. 44 Figure 22 - Add Tag Screen. 3. Tag Management Grid (Edit View) On clicking the edit tag button from the grid, the grid opens in the edit mode. On clicking the update tag button the tag description in the database is updated. Cancel button cancels the operation and takes user back to the view grid mode. (See figure below). Figure 23 - Edit Tag Screen. 45 4. Tag Management Grid (Delete) On clicking the red delete icon in the tag management grid, the system prompts the user with the message that “Are you sure you want to delete this tag”. Figure 24 - Delete Tag Screen. 5.6.3 NFR Management Screen 1. NFR Management Grid (View) The NFR Management Screen has all the NFR displayed on the screen along with the NFR type ID. 46 Figure 25 - NFR Management Screen. 2. NFR Management Grid (Add View) On clicking the add NFR link in the grid the system prompts the add view and allows the user to add the new NFR. On clicking Add NFR, the new NFR is added into the database. Figure 26 - Add NFR Screen. 47 3. NFR Management Grid (Edit View) On clicking the edit tag button from the grid, the grid opens in the edit mode. On clicking the update tag button the NFR description in the database is updated. Cancel button cancels the operation and takes user back to the view grid mode. The system notifies the user that the NFR has been updated successfully. Figure 27 - Edit NFR Screen. 4. NFR Management Grid (Delete) On clicking the red delete icon in the tag management grid, the system prompts the user with the message that “Are you sure you want to delete this tag”. On affirmation, the system deletes the tag from the database and cancels it otherwise (See figure below). 48 Figure 28 - Delete NFR Screen. 5.6.4 Assumption Management Screen. When no requirement is selected by the user than the system displays a “No Requirement “found message. This screen is also displayed when the requirements are cleared by clicking the clear requirement button. Figure 29 - No Requirement Uploaded Screen. 49 When the user selects the requirement and clicks the upload requirement button. The requirements are displayed in the grid with the Req ID and Requirement description columns respectively. Figure 30 - Requirement Uploaded Screen. When user selects the NFR type from the NFR type dropdown. After selecting and uploading the requirements when the user selects the NFR type from the dropdown than the user scans the requirement word by word and tries to find a match for the tag in the requirement for the NFR type selected in the dropdown. At any point of time, the user believes that the tag for that NFR 50 type needs to be updated / added or deleted then he can go to the NFR management module and can do the same. Figure 31 - Assumption Management Screen. 5.7 Tag Detector Strengths and Weaknesses Strength 1. Tag Detector system provides an intuitive way of risk and assumption detection inside the requirements. 2. With configurable tag functionality, we can add / edit or delete any number of tags inside the requirements. 3. By detecting the Tags at very early stages of the requirement we prevent the project from risks which otherwise could have been detected at very later stages of the project. 51 Weaknesses 1. The system uses the tags, which are stored and maintained based on the NFR type, there is no intuitive way to apply this approach on the functional requirements. 2. The tag detection if not followed by risk mitigation and risk validation can still lead to assumptions inside the requirements. 52 CHAPTER 6 CONCLUSION 6.1 Conclusion This project solution provides all together a new way of detecting the hidden assumptions inside the software requirements by applying the fishbone methodology and tag detection approach to the Risk Management Framework. If applied properly the solution can be a great tool to detect some of the hidden assumptions inside the requirements. The approach is complemented by the Tag Detector software, which helps in detecting the faulty words inside the requirements with ease. 6.2 Future Work There can be a lot of work that can be done further on this topic. Elaborative analysis of the impact of tag detection on finding the assumptions in the requirements, a software tool implementing the suggested new model for the risk management system, Analysis of the impact of the new framework on the software failures are some of the areas where we can do further research. A lot of future work can also been done on the Tag detector tool , associating risks , integrating the whole RMF and reporting are some of the areas where the application can be further extended. 53 APPENDIX A CODE SNIPPET: ASSUMPTIONMANAGEMENT.ASPX <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AssumptionManagement.aspx.cs" MasterPageFile="~/Site.master" Inherits="Webpages_AssumptionManagement" %> <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server" /> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" /> <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="All" /> <table> <asp:Label ID="HeaderLbl" runat="server" Text="Assumption Management" Style="color: #666666; font-size: x-large; font-weight: bold; font-family: Calibri;"></asp:Label> <asp:Panel ID="Panel1" runat="server" BorderColor="Gray" BorderStyle="Solid" BorderWidth="1"> </asp:Panel> <tr> <td style="padding-top:20px";> <telerik:RadUpload ID="uploadRequirement" runat="server" ControlObjectsVisibility="None" width="150px" TargetFolder="~/Requirements" AllowedFileExtensions=".xls,.xlsx"> </telerik:RadUpload> </td> </tr> <tr> <td> <asp:Button ID="cmdUpload" runat="server" Text="Upload Requirement" OnClick="cmdUpload_Click"/> <asp:Button ID="cmdClear" runat="server" Text="Clear Requirements" onclick="cmdClear_Click" /> </tr> </table> <br /> <table> <tr> <td> <asp:Label ID="Label1" runat="server" Text="Requirements." Style="color: #666666; font-size: small; font-weight: bold; font-family: Calibri;"></asp:Label> <br /> <telerik:RadGrid Width="97%" ID="gridRequirements" runat="server" AllowMultiRowSelection="True" AllowSorting="True" SortingSettings-SortedAscToolTip="true" AllowPaging="True" Skin="Windows7" CellSpacing="0" GridLines="None" OnNeedDataSource="GridDataSource"> <PagerStyle Mode="NextPrevAndNumeric" /> <SortingSettings SortedAscToolTip="true"></SortingSettings> <MasterTableView AutoGenerateColumns="false" Width="100%" DataKeyNames="ID" > <CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings> <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"> </RowIndicatorColumn> <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"> </ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn UniqueName="ReqID" HeaderText="ID" DataField="ID" Visible="true" FilterControlAltText="Requirement ID" SortExpression="ID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="Requirement" HeaderText="Requirement" DataField="Requirement" Visible="true" FilterControlAltText="Requirement" SortExpression="Requirement"> </telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid> 54 <asp:Label ID="lblmessage" runat="server" Style="color: Red; font-size: large; font-weight: bold; font-family: Calibri;"></asp:Label> </td> </tr> </table> <br /> <br /> <table> <tr> <td> <asp:Label ID="Label2" runat="server" Text="Select NFR Type to detect Assumptions." Style="color: #666666; font-size: small; font-weight: bold; font-family: Calibri;"></asp:Label> <telerik:RadComboBox ID="cboNFRTypes" runat="server" AutoPostBack="true" OnSelectedIndexChanged="IndexChanged"> </telerik:RadComboBox> </td> </tr> </table> <asp:Panel ID="AssumptionPanel" runat="server"> <table> <tr> <td> <asp:Label ID="Label3" runat="server" Text="Assumptions." Style="color: #666666; font-size: small; font-weight: bold; font-family: Calibri;"></asp:Label> <telerik:RadGrid Width="97%" ID="GridAssumptions" runat="server" AllowMultiRowSelection="True" AllowSorting="True" SortingSettings-SortedAscToolTip="true" AllowPaging="True" Skin="Windows7" CellSpacing="0" GridLines="None" OnNeedDataSource="GridAssumptionDataSource"> <PagerStyle Mode="NextPrevAndNumeric" /> <SortingSettings SortedAscToolTip="true"></SortingSettings> <MasterTableView AutoGenerateColumns="false" Width="100%" DataKeyNames="RequirementID"> <Columns> <telerik:GridBoundColumn UniqueName="RequirementID" HeaderText="RequirementID" DataField="RequirementID" Visible="true" FilterControlAltText="Requirement ID" SortExpression="RequirementID"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="Requirement" HeaderText="Requirement " DataField="Requirement" Visible="true" FilterControlAltText="Requirement " SortExpression="Requirement "> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="FaultyWord" HeaderText="FaultyWord " DataField="FaultyWord" Visible="true" FilterControlAltText="FaultyWord " SortExpression="FaultyWord "> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="nfrType" HeaderText="Requirement Type" DataField="nfrType" Visible="true" FilterControlAltText="nfrType " SortExpression="nfrType"> </telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid> <asp:Label ID="Label4" runat="server" Style="color: Red; font-size: large; font-weight: bold; font-family: Calibri;"></asp:Label> </td> </tr> </table> </asp:Panel> </asp:Content> 55 APPENDIX B CODE SNIPPET: ASSUMPTIONMANAGEMENT.CS using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.OleDb; using System.Data; using System.Configuration; using System.Reflection; using Excel = Microsoft.Office.Interop.Excel; using System.Data.SqlClient; using Telerik.Web.UI; using System.IO; public partial class Webpages_AssumptionManagement : System.Web.UI.Page { public class myTags { public string RequirementID { get; set; } public string Requirement { get; set; } public string FaultyWord { get; set; } public string nfrType { get; set; } } public bool isRequirements { get; set; } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { populateNFRTypes(); } } protected void GridDataSource(object source, GridNeedDataSourceEventArgs e) { PopulateRequirements(); } private void populateNFRTypes() { SqlConnection conn = new SqlConnection(@"Data Source=AYUSH-PC\SQLEXPRESS;Initial Catalog=AssumptionManagement;Integrated Security=True"); SqlDataAdapter da = new SqlDataAdapter(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "Select nfrtypeID,nfrtypedescription from nfrDescription"; da.SelectCommand = cmd; DataSet ds = new DataSet(); conn.Open(); da.Fill(ds); conn.Close(); cboNFRTypes.Items.Clear(); cboNFRTypes.DataTextField = "nfrTypeDescription"; cboNFRTypes.DataValueField = "nfrTypeID"; cboNFRTypes.DataSource = ds.Tables[0]; cboNFRTypes.DataBind(); cboNFRTypes.Items.Insert(0, new RadComboBoxItem("- Select NFR Type -", string.Empty)); 56 } private void PopulateRequirements() { lblmessage.Text = ""; var file = Directory.GetFiles(Server.MapPath("~/Requirements")) .FirstOrDefault(); if(file == null) { isRequirements = false; lblmessage.Text = "No Requirements found.Please upload it to continue."; } else { isRequirements = true; gridRequirements.DataSource = GetRequirements();//DataSource to GrigView(Id:gvOne) } } private DataTable GetRequirements() { var file = Directory.GetFiles(Server.MapPath("~/Requirements")) .FirstOrDefault(); Excel.Application appExl; Excel.Workbook workbook; Excel.Worksheet NwSheet; Excel.Range ShtRange; appExl = new Excel.ApplicationClass(); workbook = appExl.Workbooks.Open(file, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1); int Cnum = 0; int Rnum = 0; ShtRange = NwSheet.UsedRange; //gives the used cells in sheet //Reading Excel file. //Creating datatable to read the containt of the Sheet in File. DataTable dt = new DataTable(); dt.Columns.Add("ID"); dt.Columns.Add("Requirement"); for (Rnum = 1; Rnum <= ShtRange.Rows.Count; Rnum++) { DataRow dr = dt.NewRow(); //Reading Each Column value From sheet to datatable Colunms for (Cnum = 1; Cnum <= ShtRange.Columns.Count; Cnum++) { dr[Cnum - 1] = (ShtRange.Cells[Rnum, Cnum] as Excel.Range).Value2.ToString(); } dt.Rows.Add(dr); // adding Row into DataTable dt.AcceptChanges(); } workbook.Close(true, Missing.Value, Missing.Value); appExl.Quit(); return dt; } 57 protected void cmdUpload_Click(object sender, EventArgs e) { var fileExists = Directory.GetFiles(Server.MapPath("~/Requirements")) .FirstOrDefault(); \ RadUpload RadUpload1 = uploadRequirement; UploadedFile file = RadUpload1.UploadedFiles[0]; if (fileExists == null) { string targetFolder = Server.MapPath(RadUpload1.TargetFolder); string targetFileName = System.IO.Path.Combine(targetFolder, file.GetNameWithoutExtension() + file.GetExtension()); file.SaveAs(targetFileName); } else { System.IO.DirectoryInfo downloadedMessageInfo = new DirectoryInfo(Server.MapPath("~/Requirements")) foreach (FileInfo files in downloadedMessageInfo.GetFiles()) { files.Delete(); } string targetFolder = Server.MapPath(RadUpload1.TargetFolder); string targetFileName = System.IO.Path.Combine(targetFolder, file.GetNameWithoutExtension() + file.GetExtension()); file.SaveAs(targetFileName); gridRequirements.Rebind(); } } private void findTagsForHiddenAssumptions(DataTable dtRequirements) { if (cboNFRTypes.SelectedItem.Value != string.Empty) { gridRequirements.DataSource = null; int nfrTypeID = int.Parse(cboNFRTypes.SelectedItem.Value.ToString()); AssumptionPanel.Visible = true; string connectionString = @"Data Source=AYUSH-PC\SQLEXPRESS;Initial Catalog=AssumptionManagement;Integrated Security=True"; string sql = "SELECT * FROM ReqMapping where nfrtypeid = " + nfrTypeID; DataTable myTable = new DataTable(); List<string> TagsFound = new List<string>(); List<string> newList = new List<string>(); List<myTags> tagList = new List<myTags>(); using (SqlConnection myConnection = new SqlConnection(connectionString)) { using (SqlCommand myCommand = new SqlCommand(sql, myConnection)) { myConnection.Open(); using (SqlDataReader myReader = myCommand.ExecuteReader()) { myTable.Load(myReader); myConnection.Close(); } } } for (int j = 0; j < dtRequirements.Rows.Count; j++) { string[] str = dtRequirements.Rows[j][1].ToString().Split(' '); for (int i = 0; i < str.Length; i++) 58 { for (int k = 0; k < myTable.Rows.Count; k++) { if (str[i].Contains(myTable.Rows[k][1].ToString())) { TagsFound.Add("ReqID " + (j + 1) + "," + dtRequirements.Rows[j][1] + ",Faulty Words : " + myTable.Rows[k][1].ToString()); } } } } int counter = 1; foreach (string s in TagsFound) { if (!newList.Contains(s)) { newList.Add(s); } counter++; } string[] strFetchAssumption = null; for (int i = 0; i < newList.Count; i++) { strFetchAssumption = newList[i].Split(','); tagList.Add(new myTags { RequirementID = strFetchAssumption[0], Requirement = strFetchAssumption[1], FaultyWord = strFetchAssumption[2], nfrType = cboNFRTypes.SelectedItem.Text.ToString() }); } AssumptionPanel.Visible = true; GridAssumptions.DataSource = tagList; } } protected void cmdClear_Click(object sender, EventArgs e) { try { System.IO.DirectoryInfo downloadedMessageInfo = new DirectoryInfo(Server.MapPath("~/Requirements")); foreach (FileInfo file in downloadedMessageInfo.GetFiles()) { file.Delete(); } 59 RadAjaxManager1.Alert("Requirements cleared Successfully"); gridRequirements.Rebind(); GridAssumptions.Rebind(); } catch { RadAjaxManager1.Alert("Error Removing the Requirements"); } } protected void GridAssumptionDataSource(object source, GridNeedDataSourceEventArgs e) { var file = Directory.GetFiles(Server.MapPath("~/Requirements")) .FirstOrDefault(); if (file != null) { findTagsForHiddenAssumptions(GetRequirements()); } } protected void IndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e) { var file = Directory.GetFiles(Server.MapPath("~/Requirements")) .FirstOrDefault(); if (file != null) { GridAssumptions.Rebind(); } else { RadAjaxManager1.Alert("No requirements found .. !!!"); } } } 60 APPENDIX C USER GUIDE Login Screen 1. First page of the application is login page. Enter correct username and password to proceed. 2. For new users, click on the “Register” link on login page, enter the 3. Information required and click on submit button. After creating a new username, user can log into the system using new username and password. 4. In case of user forgetting the password, the user can go to the forget password link and can enter its user name and click send password. The password would be send to the user to the email address entered at the time of registering. 5. In case, the user wants to change the password than the user can go to the change password link and do the same. Management Screen 1. At any point in time if the user feels that any Tag or NFR needs to be added / updated or deleted than we can always go to the Tag Management or NFR management screens and do the same. Assumption Management 1. After logging in the user sees, the assumption management page opened up .To start searching for tags first upload the requirement document that needs to be analyzed and click the upload requirement button. 61 1. Please make sure the requirements are in the excel sheet in the desired template form. 2. After uploading the requirement, the requirement should show up in the screen in the grid beneath the Requirements heading. 3. Select the NFR type from the dropdown for the type of NFR for which the requirement needs to be analyzed. 4. The assumption screen shows up below the dropdown in the grid with the requirement, faulty word and type shown in the grid. 62 REFERENCES [1]. Requirements Engineering for Time-To-Market Projects. McPhee, Alta. Eberlein. http://ieeexplore.ieee.org/xpl/articleDetails.jsp;jsessionid=hkzxQq0ZSpnhJkmvgRplT m5PL226n8SKM51CGvlxcMT5vNTPqMDn!1271855879?arnumber=999818&conte ntType=Conference+Publications [2]. Requirements Engineering for Product Development. IBM Corporation. ftp://ftp.software.ibm.com/software/plm/solutions/Requirements_Engineering.p df [3]. Hidden Assumptions Inside Requirements. MICRA, Inc. 1998. [4]. Risk Management Framework. Gary.E. McGraw. https://buildsecurityin.us-cert.gov/bsi/articles/best-practices/risk/250-BSI.html [5]. Assumption Management. Robert C.Seacord http://www.sei.cmu.edu/library/abstracts/news-at-sei/cotsspot1q03.cfm [6]. Hidden Assumptions: What You Do not Know Can Hurt You. Linda Hayes. http://www.stickyminds.com/sitewide.asp?ObjectId=11067 [7]. Software Assumptions Lead to Preventable Errors. Andy Stengruebl. http://www.thesecuritypractice.com/the_security_practice/papers/84-87.pdf 63 [8]. Assumptions Management in Software Development. G.A.Lewis http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA443152 [9]. Cause and Effect Analysis. Mid Tools Corporation. http://www.mindtools.com/pages/article/newTMC_03.htm