Beruflich Dokumente
Kultur Dokumente
Software Engineering
Page 1
Assignment Set 2
Software Engineering
Assignment Set 2
Software Engineering
2. Formal assessment: The justification for the change and risks and benefits of making/not making the change are evaluated. If the change request is accepted, a development team will be assigned. If the change request is rejected, that fact is documented and communicated to the client. 3. Planning: The team responsible for the change creates a detailed plan for its design and implementation, as well as a plan for rolling back the change should it be deemed unsuccessful. 4. Designing and testing: The team designs the program for the software change and tests it. If the change is deemed successful, the team requests approval and a date for implementation. 5. Implementation and review: The team implements the program and stakeholders review the change. 6. Final assessment: If the client is satisfied that the change was implemented satisfactorily, the change request is closed. If the client is not satisfied, the project is reassessed and steps may be repeated.
Page 3
Assignment Set 2
Software Engineering
Configuration Control: The process of deciding, co-coordinating the approved changes for the proposed CIs and implementing the changes on the appropriate baseline is called Configuration control. It should be kept in mind that configuration control only addresses the process after changes are approved. The act of evaluating and approving changes to software comes under the purview of an entirely different process called change control. Configuration Status Accounting: Configuration status accounting is the bookkeeping process of each release. This procedure involves tracking what is in each version of software and the changes that lead to this version. Configuration status accounting keeps a record of all the changes made to the previous baseline to reach the new baseline. Configuration Authentication: Configuration authentication (CA) is the process of assuring that the new baseline has all the planned and approved changes incorporated. The process involves verifying that all the functional aspects of the software are complete and also the completeness of the delivery in terms of the right programs, documentation and data are being delivered.
Explain
i.
Software doesnt wear out. ii. Software is engineered & not manufactured.
Software doesnt wear out. The figure 1.1 shows the relationship between failure rate and time. Consider the failure rate as a function of time for hardware. The relationship is called the bathtub curve, indicates that hardware exhibits relatively high failure rates early in its life, defects are corrected and the failure rate drops to a steady-state level for some period of time. As time passes, however, the failure rate rises again as hardware components suffer from the cumulative effects of dust, vibration, abuse, temperature extremes, and many other environmental maladies. So, stated simply, the hardware begins to wear out.
Page 4
Assignment Set 2
Software Engineering
Software is not susceptible to the environmental maladies that cause hardware to wear out. In theory, therefore, the failure rate curve for software should take the form of the idealized curve like a zig-zag form. Undiscovered defects will cause high failure rates early in the life of a program. However, the implication is clear software doesn't wear out. But it does deteriorate. Before the curve can return to the original steady-state failure rate, another change is requested, causing the curve to spike again. Slowly, the Minimum failure rate level begins to risethe software is deteriorating due to change.
The idealized curve is a gross oversimplification of actual failure models for software. However, the implication is clearsoftware doesn't wear out. But it does deteriorate. This seeming contradiction can best be explained by considering the actual curve shown in Figure.2. During its life, software will undergo change (maintenance). As changes are made, it is likely that some new defects will be introduced, causing the failure rate curve to spike as shown in Figure 2. Before the curve can return to the original steady-state failure rate, another change is requested, causing the curve to spike again. Slowly, the minimum failure rate level begins to risethe software is deteriorating due to change. Another aspect of wear illustrates the difference between hardware and software. When a hardware component wears out, it is replaced by a spare part. There are no software spare parts. Every software failure indicates an error in design or in the process through which design was translated into machine executable code. Therefore, software maintenance involves considerably more complexity than hardware maintenance. Software is engineered & not manufactured: Although some similarities exist between software development and hardware manufacture, the two activities are fundamentally different. In both activities, high quality is achieved through good design, but the manufacturing phase for hardware can introduce quality problems that are nonexistent (or easily corrected) for software. Both activities are dependent on the people, but the Roll Number: 571018818 Page 5
Assignment Set 2
Software Engineering
relationship between people applied and work accomplished is entirely different. Both activities require the construction of a "product" but the approaches are different. Software costs are concentrated in engineering. This means that software projects cannot be managed as if they were manufacturing projects. When computer software succeedswhen it meets the needs of the people who use it, when it performs flawlessly over a long period of time, when it is easy to modify and even easier to use it can and does change things for the better. But when software failswhen its users are dissatisfied, when it is error prone, when it is difficult to change and even harder to usebad things can and do happen. We all want to build software that makes things better, avoiding the bad things that lurk in the shadow of failed efforts. To succeed, we need discipline when software is designed and built. We need an engineering approach. The role of computer software has undergone significant change over a time span of little more than 50 years. Dramatic improvements in hardware performance, profound changes in computing architectures, vast increases in memory and storage capacity and wide variety of exotic input and output options have all precipitated more sophisticated and complex computer-based systems. Sophistication and complexity can produce dazzling results when a system succeeds, but they can also pose huge problems for those who must build complex systems. The lone programmer of an earlier era has be replaced by a team of software specialists, each focusing on one part of the technology required to deliver a complex application. And yet, the same questions asked of the lone programmer are being asked when modern computer-based systems are built:
Why does it take so long to get software finished? Why are development costs so high? Why cant we find all the errors before we give the software to customers? Why do we continue to have difficulty in measuring progress as software is being developed? These, and many other questions, are a manifestation of the concern about software and the manner in which it is developed-a concern that has lead to the adoption of software engineering practice. Software is pervasive, and yet, many people in position of responsibility have little or no real understanding of what it really is, how its built, or what it means to the institutions that they control. More importantly, they have little appreciation of the dangers and opportunities that software offers.
Page 6
Assignment Set 2
Software Engineering
Types of Software Measurement Techniques: Most estimating methodologies are predicated on analogous software programs. Expert opinion is based on experience from similar programs; parametric models stratify internal data bases to simulate environments from many analogous programs; engineering builds reference similar experience at the unit level; and cost estimating relationships (like parametric models) regress algorithms from several analogous programs. Deciding which of these methodologies (or combination of methodologies) is the most appropriate for your program usually depends on availability of data, which is in turn depends on where you are in the life cycle or your scope definition. Analogies: Cost and schedule are determined based on data from completed similar efforts. When applying this method, it is often difficult to find analogous efforts at the total system level. It may be possible, however, to find analogous efforts at the subsystem or lower level computer software configuration item/computer software component/computer software unit (CSCI/CSC/CSU). Furthermore, you may be able to find completed efforts that are more or less similar in complexity. If this is the case, a scaling factor may be applied based on expert opinion (e.g., CSCI-x is 80% as complex). After an analogous effort has been found, associated data need to be assessed. It is preferable to use effort rather than cost data; however, if only cost data are available, these costs must be normalized to the same base year as your effort using current and appropriate inflation indices. As with all methods, the quality of the estimate is directly proportional to the credibility of the data. Expert (engineering) opinion: Cost and schedule are estimated by determining required effort based on input from personnel with extensive experience on similar programs. Due to the inherent subjectivity of this method, it is especially important that input from several independent sources be used. It is also important to request only effort data rather than cost data as cost estimation is usually out of the realm of engineering expertise (and probably dependent on non-similar contracting situations). This method, with the exception of rough orders-of-magnitude estimates, is rarely used as a primary methodology alone. Expert opinion is used to estimate lower-level, low cost, pieces of a larger cost element when a labor-intensive cost estimate is not feasible. Parametric models: most commonly-used technology for software estimation is parametric models, a variety of which are available from both commercial and government sources. The estimates produced by the models are repeatable, facilitating sensitivity and domain analysis. The models generate estimates through statistical formulas that relate a dependent variable (e.g., cost, schedule, resources) to one or more independent variables. Independent variables are called cost drivers because any change in their value results in a change in the cost, schedule, or resource estimate. The models also address both the development (e.g., development team skills/experience, process Roll Number: 571018818 Page 7
The
Assignment Set 2
Software Engineering
maturity, tools, complexity, size, domain, etc.) and operational (how the software will be used) environments, as well as software characteristics. The environmental factors, used to calculate cost (manpower/effort), schedule, and resources (people, hardware, tools, etc.), are often the basis of comparison among historical programs, and can be used to assess on-going program progress.
Page 8