- Количество слайдов: 37
Unit 3 Introduction to Software Engineering 3. 1 Software 3. 2 Software Engineering 3. 3 Software Qualities
Introduction Ø Today, software engineering is the most important technology with rapid development. Ø National economy is also dependent on this technology. Day by day more and more systems are getting controlled by software. Ø Hence, it becomes necessary to understand the software development as an engineering discipline. Ø The Software engineers build and support software, and virtually everyone in the industrialized world uses it either directly or indirectly. Ø Software Engineering sees programmers as practitioners of a well-defined engineering approach with the connotations of predictability, precision, mitigated risk and professionalism.
3. 1 Software A) Meaning : Software is nothing but a collection of computer programs and related documents that are intended to provide desired features, functionalities and better performance. By using a software engineering approach, engineer can build software, by applying an agile, adaptable process that leads to a high-quality result that meets the needs of the people who will use the product. B) Definitions of Software: 1) IEEE : “Software is a collection of computer programs, procedures, rules and associated documentation and data pertaining to the operation of a computer system. ” 2) Philip A. Laplante : “Software is a set of programs, which is designed to perform a well-defined function. “ 3) A. A. Puntambekar : “Software is a general term for the various kinds of programs used to operate computers and related devices. ” 4) K. L. JAMES : “Software is organized information in the form of operating systems, utilities, programs, and applications that enable computers to work. ”
3. 1 Software C) Categories of Software : System Software Application Software Engineering/ scientific Software Embedded Software Web Application
3. 1 Software C) Categories of Software : 1) System Software: It is collection of programs written to service other programs. Typical programs in this category are compiler, editors, and assemblers. 2) Application Software: It consists of standalone programs that are developed for specific business need. This software may be supported by database systems. 3) Engineering/scientific Software: This software category has a wide range of programs from astronomy to volcano logy, from automotive stress analysis to space shuttle orbital dynamics, and from molecular biology to automated manufacturing. 4) Embedded Software: This category consists of program that can reside within a product or system. 5) Web Applications: Web application software consists of various web pages that can be retrieved by a browser. The web pages can be developed using programming languages like JAVA, PERL, CGI, HTML, and DHTML.
3. 1 Software D) Software Characteristics : Software Characteristics Developed or Engineered Doesn’t “Wear Out” Custom Built 1) Developed or Engineered : Although, some similarities exist between software development and hardware manufacturing, 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. 2) Doesn’t “Wear Out” : 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”. 3) Custom Built : As an engineering discipline evolves, a collection of standard design components is created. Standard screws and off-the-shelf integrated circuits are only two of thousands of standard components that are used by mechanical and electrical engineers as they design new systems.
3. 1 Software E) Software Crisis : 1) Problems: v Schedule and cost estimates are often grossly inaccurate. v The "productivity" of software people hasn't kept pace with the demand for their services. v The quality of software is sometimes less than adequate. v With no solid indication of productivity, one can't accurately evaluate the efficiency of new, tools, methods, or standards. v Communication between the customer and software developer is often poor. v Software maintenance tasks devour the majority of all software funds. 2) Causes: v The quality of the software is not good because most developers use historical data to develop the software. v If there is delay in any process or stage (i. e. , analysis, design, coding: testing) then scheduling does not match with actual timing. v Communication between managers and customers, software developers, support staff, etc. , can break down because the special characteristics of software and the problems associated with its development are misunderstood. v The software people responsible for tapping the potential often change when it is discussed and resist change when it is introduced.
3. 1 Software E) Software Crisis : 3) Software Crisis from the Programmer’s Point-of-View: v Problem of compatibility. v Problem of portability. v Problem in documentation. v Problem of piracy of software. v Problem in coordination of work of different people. v Problem of proper maintenance. 4) Software Crisis form the User’s Point-of-View: v Software cost is very high. v Hardware goes down. v Lack of specialization in development. v Problem of different versions of software. v Problem of views. v Problem of bugs.
3. 1 Software F) Software Myths : Management Myths • Managers with software responsibility, like managers in most disciplines, are often under pressure to maintain budgets, keep schedules from slipping, and improve quality. Customer Myths • Customer requesting software might be a technical group of the same organization, or an outside company requesting software under contract. Reality: Practitioner's Myths • Myths that are still believed by software practitioners have been encouraged by decades of programming culture.
3. 1 Software F) Software Myths : 1) Management Myths : No. Myth 1) 2) The book that's full of standards and procedures for building software. Won't that provide my people with everything they need to know? Reality The book of standards may exist, but is it used? Are software developers aware that it exists? Does it reflect modern software development practice? Is it complete? In many cases the answer to these questions is no. My people have the latest software It takes more than the latest computer to do development tools; after all users do buy high quality software development. Computer-aided software engineering them the latest computers. (CASE) tools are more important than hardware for achieving good quality and productivity, yet the majority of software developers still do not use them.
3. 1 Software F) Software Myths : 2) Customer Myths : No. Myth 1) Reality A general statement of objectives is Poor up-front definition is the major cause of sufficient to start writing programs - one can failed software efforts. A formal and detailed fill in the details later. description of the information domain, function, performance, interfaces, design constraints and validation criteria is essential. These characteristics can be determined only after thorough communication between customer and developer.
3. 1 Software F) Software Myths : 3) Reality: Practitioner's Myths : No. Myth 1) 2) Reality Once programmer writes a program Someone once said, ” The sooner one and gets it to work, our job is done. begins writing code; the longer it will take one to get done”. The industry data indicates that the majority of effort expended on a program will be after the program has been delivered to the customer for the first time. Until I get the program running, I have One of the most effective software no way of assessing its quality assurance mechanisms is the formal technical review. These can be undertaken long before the program is running.
3. 1 Software G) Software Components : 1) Component: A component is an object written to a specification. It does not matter what the specification is, COM, lava Beans, etc. , as long as the object adheres to the specification. It is only by adhering to the specification that the object becomes a component and gains features, such as reusability and so forth. Software components often take the form of objects or collections of objects (from object-oriented programming) in some binary or textual form, adhering to some interface description language (IDL) so that the component may exist autonomously from other components on a computer. When a component is to be accessed or shared across execution contexts or network links, some form of serialization (also known as marshaling) is employed to turn the component or one of its interfaces into a bit stream. 2) Criteria for Software Component: v Multiple-use v Non-context-specific v Compassable with other components v Encapsulated, i. e. , non-investigable through its interfaces v A unit of independent deployment and versioning.
3. 1 Software H) Software Process : A) Common Process Framework : A Common Process Framework is established by defining a small number of framework activities that are applicable to all software projects, regardless of their size and complexity. 1) Framework Activities: Communication Planning Construction Modeling Deployment
3. 1 Software H) Software Process : 1) Framework Activities: a) Communication: Before any technical work can commence, it is critically important to communicate and collaborate with the customer (and other stakeholders). b) Planning: A software project plan—defines the software engineering work by describing the technical tasks to be conducted, the risks that are likely, the resources that will be required, the work products to be produced, and a work schedule. c) Modeling: A software engineer created models to better understand software requirements and the design that will achieve those requirements. d) Construction: This activity combines code generation (either manual or automated) and the testing that is required uncovering errors in the code.
3. 1 Software H) Software Process : 1) Framework Activities: e) Deployment : The software (as a complete entity or as a partially completed increment) is delivered to the customer who evaluates the delivered product and provides feedback based on the evaluation. 2) Task Sets: The task set defines the actual work done in order to achieve the software objective. The task set is used to adopt the framework activities and project team requirements using; Collection of software engineering work tasks, Project milestones, Software quality assurance (SQA) points. 3) Umbrella Activities: Software engineering process framework activities are complemented by a number of umbrella activities. a) Software Project Tracking And Control: Allows the software team to assess progress against the project plan and take any necessary action to maintain the schedule.
3. 1 Software H) Software Process : 3) Umbrella Activities: b) Risk Management: It assesses risks that may affect the outcome of the project or the quality of the product. c) Software Quality Assurance: Defines and conducts the activities required to ensure software quality. Technical Reviews Measurement Software Quality Assurance Configuration Management Risk Management Software Project Tracking And Control Reusability Management Software Process Work Product Preparation and Production
3. 1 Software H) Software Process : 3) Umbrella Activities: d) Technical Reviews: Assesses software engineering work products in an effort to uncover and remove errors before they are propagated to the next activity. e) Measurement: Defines and collects process, project, and product measures that assist the team in delivering software that meets stakeholders’ needs; can be used in conjunction with all other framework and umbrella activities. f) Software Configuration Management: Manages the effects of change throughout the software process. g) Reusability Management: Defines criteria for work product reuse (including software components) and establishes mechanisms to achieve reusable components. h) Work Product Preparation and Production: Encompasses the activities required to create work products such as models, documents, logs, forms, and lists.
3. 1 Software engineering A) Meaning : The Software engineering is concerned with development and maintenance of software products. Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. B) Definitions: 1) Barry Boehm: “Software engineering is the application of science and mathematics by which the capabilities of computer equipment are made useful to man via computer programs, procedures and associated documentation. ” 2) Fairley: “Software Engineering is a methodological and managerial discipline concerning the systematic production and maintenance of software products that are developed and maintained within anticipated and controlled time and cost limits. ” 3) Fritz Bauer: “Software Engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. ”
3. 1 Software engineering D) Need of Software Engineering : 1 2 To Understand the Problem To Handle the Complexity 3 High Quality 4 Maintainable v A concerted effort should be made to understand the problem before a software solution is developed. v The complexity of the new computer-based systems and products demands careful attention to the interactions of all system elements. It follows that design becomes a pivotal activity. v Individuals, businesses, and governments increasingly rely on software for strategic and tactical decision making as well as day-to-day operations and control. v As its user base and time-in-use increase, demands for adaptation and enhancement will also grow. It follows that software should be maintainable.
3. 1 Software engineering E) Generic Phases of Software Engineering: Definition Phase Development Phase Maintenance Phase 1) The Definition Phase: The definition phase focuses on what. That is, during definition, the software developer attempts to identify what information is to be processed, what function and performance are desired, what system behavior can be expected, what interfaces are to be established, what design constraints exists, and what validation criteria are required to define a successful system. 2) The Development Phase: The development phase focuses on how. That is, during development a software engineer attempts to define how data are to be structured, how function is to implemented , how procedural details are to be implemented, how interfaces are to be characterized.
3. 1 Software engineering E) Generic Phases of Software Engineering: 3) The Maintenance Phase: . Maintenance Phase a) Correction: Even with the best quality assurance activities, it is likely that the customer will uncover defects in the software. Corrective maintenance changes the software to correct defects. Correction b) Adaptation: Adaptive maintenance results in modification to the software to accommodate changes to its external environment. Adaptation c) Enhancement: As software is used, the customer will recognize additional functions that will provide benefit. Perfective maintenance extends the software beyond its original functional requirements. Enhancement Preventive d) Preventive: Computer software deteriorates due to change, and because of this, preventive maintenance, often called software reengineering, and must be conducted to enable the software to serve the need of its end users.
3. 1 Software engineering Satisfy Users F) Goals of Software Engineering: Requiremen ts Ease Of Reuse High Reliability Low Maintenanc e Costs High Performance Low Production Costs Delivery on Time
3. 1 Software engineering G) Goals of Software Engineering: . 1) Satisfy Users Requirements: Many programmers simply don't do what the end user wants because they do not understand user requirements. Hence, it becomes necessary to understand the demand of end user and accordingly software should be developed. 2) High Reliability: Mistakes or bugs in a program can be expensive in terms of human lives, money, and customer relation. For instance Microsoft has faced many problems because earlier release of Windows has many problems. Thus, software should be delivered only if high reliability is achieved. 3) Low Maintenance Costs: Maintenance of software is an activity that can be done only after delivering the software to the customer. Any small change in software should not cause restructuring of whole software. This indicates that the design of software has poor quality.
3. 1 Software engineering F) Goals of Software Engineering: 4) Delivery on Time: It is very difficult to predict the exact time on which the software can be completed. But a systematic development of software can lead to meet the given deadline. 5) Low Production Costs: The software product should be cost effective. 6) High Performance: The high performance software is expected to achieve optimization in speed and memory usage. 7) Ease Of Reuse: Use same software in different systems and software. Environments reduce development costs and also improve the reliability. Hence reusability of developed software is an important property.
3. 1 Software engineering G) Challenges in Software Engineering: Coping With Legacy Systems Heterogeneity Challenge Delivery Times Challenge 1) Coping With Legacy Systems: Old, valuable systems must be maintained and updated. Hardware is evolved faster than software. If original developer has moved on managing, maintaining or integrating of software becomes a critical issues. 2) Heterogeneity Challenge: Sometimes systems are distributed and include a mix of hardware and software. This implies that software systems must cleanly integrate with other different software systems, built by different organizations and teams using different hardware and software platforms. 3) Delivery Times Challenge: There is increasing pressure for faster delivery of software. As the complexity of systems that one develops increases, this challenge becomes harder.
3. 2 Software Qualities A) Meaning: Software quality is a broad and important field of software engineering addressed by several standardization bodies, such as ISO, IEEE, ANSI, etc. The basic goal of software engineering is to produce quality software. B) Definition: 1) B. B. Agarwal, S. P. Tayal, Mahesh Gupta: Software quality is the Conformance to explicitly stated functional and performance requirements, explicitly documented development standards, and implicit characteristics that are expected of all professionally developed software. C) Classification of Software Qualities: External versus Internal Qualities Product and Process Qualities
3. 2 Software Qualities C) Classification of Software Qualities: 1) External versus Internal Qualities: One can divide software qualities into external and internal qualities. The external qualities are visible to the users of the system: the internal qualities are those that concern the developers of the system. In general, users of the software only care about the external qualities, but it are the internal qualities, which deals largely with the structure of the software that help developers achieve the external qualities. 2) Product and Process Qualities: A process is used to produce the software product. One can also attribute some qualities to the process, although process qualities often are closely related to product qualities. For example, if the process requires careful planning of system test data before any design and development of the system starts, products reliability will increase. Some qualities, such as efficiency, apply both to the product and to the process.
3. 2 Software Qualities D) Software Quality Attributes:
3. 2 Software Qualities D) Software Quality Attributes: 1) Functionality: The capability to provide functions which meet stated and implied needs when the software is used. 2) Reliability: The capability to maintain a specified level of performance. 3) Usability: The capability to be understood, learned, and used. 4) Efficiency: The capability to provide appropriate performance relative to the amount of resources used. 5) Maintainability: The capability to be modified for purposes of making corrections, improvements, or adaptation. 6) Portability: The capability to be adapted for different specified environments without applying actions or means other than those provided for this purpose in the product.
3. 2 Software Qualities E) Mc. Call’s Quality Factors:
3. 2 Software Qualities E) Mc. Call’s Quality Factors: a) Product Operation Quality Factors: 1) Correctness: It is the extent to which a program satisfies its specifications and fulfills the user’s objectives. 2) Reliability: It is the extent to which a program can be expected to perform its intended function with required precision. 3) Efficiency: It is the amount of computer resources required by the software. 4) Integrity: It is the extent to which access to software or data by unauthorized persons can be controlled. 5) Usability: The effort required for learning, operating, preparing input, and interpreting output.
3. 2 Software Qualities E) Mc. Call’s Quality Factors: b) Product Revision Quality Factors: 1) Maintainability: The effort required to locate and fix an error in an operational program· 2) Testability: The effort required to test a program to ensure it performs its intended function. 3) Flexibility: The efforts required to modify an operational program. c) Product Transition Quality Factors: 1) Portability: The effort required for transferring a program from one hardware configuration and software system environment to another. 2) Reusability: It is the extent to which a program can be used in other applications. 3) Interoperability: The efforts required to couple one system to another.
3. 2 Software Qualities F) Representative Qualities: Correctness Interoperability Reliability Understandability Robustness Representative Qualities Evolvability Performance Reparability Verifiability
3. 2 Software Qualities F) Representative Qualities: 1) Correctness: A program is functionally correct if it behaves according to the specification of the functions it should provide (called functional requirements specifications). It is common simply to use the term "correct" rather than "functionally correct“. 2) Reliability: Informally, software is reliable if the user can depend on it. The specialized literature on software reliability defines reliability in terms of statistical behavior—the probability that the software will operate as expected over a specified time interval. 3) Robustness: A program is robust if it behaves "reasonably” even in circumstances that were not anticipated in the requirements specification-for example, when it encounters incorrect input data or some hardware malfunction (say, disk crash). 4) Performance: Performance is important because it affects the usability of the system. If a software system is too slow, it reduces the productivity of the users, possibly to the point of not meeting their needs.
3. 2 Software Qualities F) Representative Qualities: 5) Verifiability: A software system is verifiable if its properties can be verified easily. Verifiability is usually an internal quality, although it sometimes becomes an external quality also. 6) Reparability: A software system is repairable if it allows the correction of its defects with a limited amount of work. In many engineering products, reparability is a major design goal. 7) Evolvability: Like other engineering products, software products are modified over time to provide new functions or to change existing functions. 8) Understandability: Some software systems are easier to understand than others. Of course, some tasks are inherently more complex than others. 9) Interoperability: "Interoperability" refers to the ability of a system to coexist and cooperate with other systems.
3. 2 Software Qualities G) Importance of Software Quality: 1) Increasing Criticality of Software: The final customer or user is naturally anxious about the general quality of software, especially its reliability. This is increasingly the case as organizations become more dependent on their computer systems and software is used more and more in areas which are safety critical; for example, to control aircraft. 2) The Intangibility of Software: This makes it difficult to know whether a particular task in a project has been completed satisfactorily. The results of these tastes can be made tangible by demanding that the developers produce 'deliverables' that can be examined for quality. 3) Accumulating Errors During Software Development: As computer system development is made up of a number of steps where the output from one step is the input to the next, the errors in the earlier deliverables will be added to those in the later steps leading to an accumulating detrimental effect, and generally, the later in a project that an error is found the more expensive it will be to fix.