Assignment title: C++


In your own words, explain who is likely to read requirements and specification documents, and what the different readers need from these documents. 3. We briefly discussed the use of less rigidly-structured design methodologies, such as Agile, as an alternative to traditional software life cycle approaches. Discuss the potential advantages and disadvantages of these "non-traditional" approaches. 4. A serious bug with a non-trivial fix is detected somewhere in the source code for your team project. The bug involves interaction between the code produced by two different team members. Clearly describe a version-control process, using git, that should be followed by the team to safely develop a fix. 5. Explain, in your own words, why commercial software engineering organizations place such a strong emphasis on the gathering of requirements and development of product specifications. 6. Suppose you are the lead programmer on a team that will be responsible for the implementation of a safety-critical software system (e.g part of a medical life support system). Discuss the philosophy/advice you would give to your team regarding the team's approach to debugging and testing the software you develop. 7. (i) Describe the most important features a debugging tool should provide for the programmer and justify your choice of those features. (ii) Which of those features are supported in gdb, and how do you use/invoke those features in gdb? 8. Can a team's choice of version control systems/processes significantly impact the reliability of the software produced by that team? Justify your answer. 9. In lectures we discussed the use of three separate environments for a product: development, staging, and production. (i) In your own words, explain the purpose of this division and the primary purpose of each of the three environments.(ii) In your own words, discuss the potential disadvantages of such a system.10.(Follow on to the previous question). In the context of projects organized along the lines of development/staging/production, pick one of the following threetools: git, gdb, make files and answer the following question:How would the configuration and use of the tool in question differ across thethree different environments? 11.For each of the following techniques, describe specific circumstances underwhich it could significantly aid the debugging process: o Assertion statements o Logging of error messages and/or warnings o Using return values exclusively for recording/returning whether or not the function/method completed successfully. 12.Can a team's choice of coding standards significantly impact the reliability of the software produced by that team? Justify your answer. 13.Discuss, in your own words, the potential disadvantages of having all your developers adhere to a detailed set of code standards. 14.Many (if not most) integrated development environments automate at least part of the process of compiling and linking code for the developer. Discuss the pros and cons of having the development team construct their own make files to handle this task rather than doing through an IDE. 15.Suppose you are the lead of an IT group of 8 developers. Your boss knows very little about software development, but has heard from a friend that many software projects do a poor job of re-using code - "constantly re-inventing the wheel". Your boss wants you to formulate a plan to ensure your group avoids falling into this category. Explain how you would proceed, and why.16.Many test plans include, among other things, an explicit list of "Things not to be tested". Discuss why you would deliberately choose not to test certain required features of a project, and provide examples of such features to illustrate your points. 17.Suppose a "make all" had been run on the makefile below, and that it had run successfully (all executables and object files get updated, there are no compile errors or warnings, and all the files are in the correct place). If the user now entered the commands "touch d1.h" and "make all", what would o Assertion statements o Logging of error messages and/or warnings o Using return values exclusively for recording/returning whether or not the function/method completed successfully. 12.Can a team's choice of coding standards significantly impact the reliability of the software produced by that team? Justify your answer. 13.Discuss, in your own words, the potential disadvantages of having all your developers adhere to a detailed set of code standards. 14.Many (if not most) integrated development environments automate at least part of the process of compiling and linking code for the developer. Discuss the pros and cons of having the development team construct their own make files to handle this task rather than doing through an IDE. 15.Suppose you are the lead of an IT group of 8 developers. Your boss knows very little about software development, but has heard from a friend that many software projects do a poor job of re-using code - "constantly re-inventing the wheel". Your boss wants you to formulate a plan to ensure your group avoids falling into this category. Explain how you would proceed, and why. 16.Many test plans include, among other things, an explicit list of "Things not to be tested". Discuss why you would deliberately choose not to test certain required features of a project, and provide examples of such features to illustrate your points. 17.Suppose a "make all" had been run on the make file below, and that it had run successfully (all executables and object files get updated, there are no compile errors or warnings, and all the files are in the correct place). If the user now entered the commands "touch d1.h" and "make all", what would In one of our lectures the comment was made that one "should never trust user input". Explain what is meant by this statement, and provide some examples clarifying the claim. 19.Suppose our company's software relies on the use of the following coordinate system for specifying the physical location of objects: The total area covered by our coordinate system is a rectangle, divided into four regions specified by a single digit 0-3 as follows: 1 3 0 2 Each of those regions can be subdivided by adding a second digit (0-3), i.e.: 11 13 10 12 31 33 30 32 0.Suppose you are the head developer for a group of about twenty developers, and your company also employs a group of three full time testers. As part ofcost-cutting measures, the company executives propose axing the testers andhaving developers perform their own testing. Discuss how you would respond to this suggestion and why. 21.Suppose you have just been hired as the third member of an IT team within a small company. Describe what you want to learn your first week on the job and why. 22.(Follow up to previous question) By the end of the first week on the job you are settling in, when the other two members of the team announce they are both leaving to join a small start-up venture. It turns out that, while you were hired primarily for web work, the company has a substantial body of Fortran and Cobol code that was being hat recommendations do you give them, and why? 23.(i)Discuss the meaning and validity of the following statement: "Most users do not need defect free software." (ii) Discuss the validity of the following statement:"Software design is of limited value compared to design in other engineering disciplines because software architectures cannot be evaluated prior to implementation." 24.Discuss how testing of code written in an object oriented language (like C++ or Java) differs from code written in a purely imperative language (like C). 25.Discuss, with examples, how profiling information might help your team improve the reliability of the software it produces. 26.If a program makes heavy use of inheritance, does (or should) that make automated testing of the program easier or more difficult? Justify your answer. 27.Discuss the meaning and validity of the following claim: "Automated software test frameworks should vary the order in which test cases are applied to the product." 28.One of the criticisms of the C programming language is that, compared to object-oriented languages like C++ or Java, it provides very little support for/enforcement of the principles of abstraction and information hiding. Explain what is meant by this criticism, and the implications for teams caryying out large scale software development projects in C.With respect to your own skills, abilities, and work habits, discuss what is the most important thing you have learned from this semester's team project, and why it is the most important thing you have learned. 30.Describe, in your own words, what information hiding, abstraction, and encapsulation are, and why the concepts are considered so important in the area of software engineering. 31.Test driven development: You are given the function below for classifying types of triangles, and the tests so far for validating that the function works correctly when the three parameters are passed in increasing order, i.e. s1 ≤ s2 ≤ s3. Now the function also needs to work when passed the three parameters in any order.