Ch 2 Introduction to software Engineering-8.pdf
Document Details
Uploaded by SportyJuniper
Full Transcript
Ch. 2 Introduction to software Engineering Content: 2.1 Definition of Software 2.2 Characteristics of Software 2.3 Definition of Software Engineering 2.4 Need for Software Engineering 2.5 Mc Call’s Quality factors 2.6 The Software Process 2.7 Software Product and Process 2.8 V& V Model In...
Ch. 2 Introduction to software Engineering Content: 2.1 Definition of Software 2.2 Characteristics of Software 2.3 Definition of Software Engineering 2.4 Need for Software Engineering 2.5 Mc Call’s Quality factors 2.6 The Software Process 2.7 Software Product and Process 2.8 V& V Model Introduction: Software Engineering provides a standard procedure to design and develop software. The term software engineering is the product of two words, software, and engineering. The software is a collection of integrated programs. Engineering is the application of scientific and practical knowledge to invent, design, build, maintain, and improve frameworks, processes, etc. 2.1 Definition of Software: Software: "Software is a set of programs (sequence of instructions) that allows the users to perform a well-defined function or some specified task." The software is made up of binary language (composed of ones and zeros) Software's are broadly classified into two types, i.e., System Software Application Software. System Software: System software is a computer program that helps the user to run computer hardware or software and manages the interaction between them. Essentially, it is software that constantly runs in the computer background, maintaining the computer hardware and computer's basic functionalities, including the operating system, utility software, and interface Classification of System software are as follows: Operating System Device Drivers Firmware: Firmware is a type of permanent software embedded in the system's ROM (read-only memory) to provide low-level control for some particular system device hardware. Utility: Utility software is developed to provide support in analyzing, optimizing, along configuring and maintaining a computer. (Antivirus, WinRAR) Application Software: Application programs or software applications are end-user computer programs developed primarily to provide specific functionality to the user. Or Application Software is a type of computer program that performs specific functions or task. For eg: Word Processor Database Software Multimedia Software 2.2 Characteristics of Software: The characteristics of software include: It is intangible: It cannot be seen or touched. It is non-perishable: It does not degrade over time. It is easy to replicate: It can be copied and distributed easily. It can be complex: It can have many interrelated parts and features. It can be difficult to understand and modify: Especially for large and complex systems. It can be affected by changing requirements: It may need to be updated or modified as the needs of users change. It can be affected by bugs and other issues: It may need to be tested and debugged to ensure it works as intended. Software Characteristics are classified into six major components: Functionality: It refers to the suitability, accuracy, interoperability, compliance, security of software which is measured as degree of performance of the software against its intended purpose. Reliability: Refers to the recoverability, fault tolerance, maturity of software, which is basically a capability of the software that provide required functionality under the given situations. Efficiency: It is the ability of the software to use resources of system in the most effective and efficient manner. Software must make effective use of system storage and execute command as per required timing. Usability: It is the extent to which the software can be utilized with ease and the amount of effort or time required to learn how to use the software. Maintainability: It is the ease with which the modifications can be made in software to extend or enhance its functionality, improve its performance, or resolve bugs. Portability: It is the ease with which software developers can relaunch software from one platform to another, without (or with minimum) changes. In simple terms, software must be made in way that it should be platform independent. 2.3 Definition of Software Engineering: The IEEE Standard Glossary of Software Engineering terminology defines software engineering as “The Systematic approach to the development, operations, maintenance and retirement of software. According to Fritz Bauer: Software Engineering is the establishment and use of sound engineering principles in order to obtain economical software that is reliable and works efficiently on real machine. Software Engineering is the application of systematic, disciplined, quantifiable approach to the development, operation and maintenance of software i.e. the application of engineering to software. In simple language, Software Engineering is application of scientific principles to the orderly transformation of problem into a working software solution and the subsequent maintenance of that software until the end of its useful life. 2.4 Need for Software Engineering: Handling Big Projects: A corporation must use a software engineering methodology in order to handle large projects without any issues. To manage the cost: Software engineering programmers plan everything and reduce all those things that are not required. To decrease time: It will save a lot of time if you are developing software using a software engineering technique. Reliable software: It is the company’s responsibility to deliver software products on schedule and to address any defects that may exist. Effectiveness: Effectiveness results from things being created in accordance with the standards. Reduces complexity: Large challenges are broken down into smaller ones and solved one at a time in software engineering. Individual solutions are found for each of these issues. Productivity: Because it contains testing systems at every level, proper care is done to maintain software productivity. 2.5 Mc Call’s Quality factors: McCall software quality model was introduced in 1977. This model classifies all software requirements into 11 software quality factors. The 11 factors are grouped into three categories – product operation, product revision, and product transition factors. 1. Product operation factors − Correctness, Reliability, Efficiency, Integrity, Usability. 2. Product revision factors − Maintainability, Flexibility, Testability. 3. Product transition factors − Portability, Reusability, Interoperability. The definition of these 11 software quality factors is given below: 1. Correctness – extent to which a program satisfies its specification and fulfills the client’s objective. 2. Reliability – extent to which a program is supposed to perform its function with the required precision. 3. Efficiency – amount of computing and code required by a program to perform its function. 4. Integrity – extent to which access to software and data is denied to unauthorized users. 5. Usability– labor required to understand, operate, prepare input and interpret output of a program 6. Maintainability– effort required to locate and fix an error in a program. 7. Flexibility– effort needed to modify an operational program. 8. Testability– effort required to test the programs for their functionality. 9. Portability– effort required to run the program from one platform to other or to different hardware. 10. Reusability– extent to which the program or it’s parts can be used as building blocks or as prototypes for other programs. 11.Interoperability– effort required to couple one system to another. 2.6 The Software Process: Software Processes: The term software specifies to the set of computer programs, procedures and associated documents (Flowcharts, manuals, etc.) that describe the program and how they are to be used. A software process is the set of activities and associated outcome that produce a software product. Software engineers mostly carry out these activities. There are four key process activities, which are common to all software processes. These activities are: 1. Software specifications: The functionality of the software and constraints on its operation must be defined. 2. Software development: The software to meet the requirement must be produced. 3. Software validation: The software must be validated to ensure that it does what the customer wants. 4. Software evolution: The software must evolve to meet changing client needs. 2.7 Software Product and Process: In the context of software development, the terms of "product" and "process" are significant. The main distinction between a process and a product is that a process is a collection of procedures used to direct a project in order to produce the desired output. In contrast, a product is the finished product of a software project. What is a Product? In the context of software engineering, a product is any software created in response to a client's request. In other terms, a product is the outcome of a planned and managed software project. A product's objective and scope should be established before project planning. A software product is made up of several components, including design and test documentation, requirement specifications, and user manuals. The developer and customer must first establish the product's aim and scope to create a desirable product. The product objective offers information about the product's goal, whereas the scope provides information about the product's essential facts, functions, and behavior. Components of Product: The best software products begin with an excellent value proposition, and they must be carefully designed and extensively tested to ensure that value is delivered to the end user. A software product's components include: 1. Product Design: It is the visual aesthetic and interactive interface in which users may interact with the product. 2. Functionality and Features When people utilize a software product, they interact with it through functionality. 3. Content The data or details contained in a software product are referred to as its content. Comparison between Product and Process: Features Product Process It supports software development It is the outcome of a planned and by offering the structure of a Definition managed software project. complete software development strategy. The process is a collection or set of It is the final result of a development Basic stages that should be followed to cycle. create a product. Its life cycle tends to be in the short Its life cycle tends to be in the long Life Cycle term. term. It is concentrated on completing Focus It is concerned with the end result. each established step. Its main goal is to complete the Its main goal is to make the better Goal work effectively. quality of project. It is a layout design style where the It is created when resources with materials are needed to create the Layout comparable processes or functions product that is placed in a single line are grouped together. based on the orders of operations. These are considered to provide It offers the inventor only limited Patents more protection than process protection. patents. These are developed based on It may be utilized as a template for Utilization consumer demands and comparably creating numerous expectations. items. Follows It follows the company's deadlines. It follows a consistent routine. 2.8 V& V Model: V-Model also referred to as the Verification and Validation Model. In this, each phase of SDLC must complete before the next phase starts. It follows a sequential design process same as the waterfall model. Testing of the device is planned in parallel with a corresponding stage of development. Verification: It involves a static analysis method (review) done without executing code. It is the process of evaluation of the product development process to find whether specified requirements meet. Validation: It involves dynamic analysis method (functional, non-functional), testing is done by executing code. Validation is the process to classify the software after the completion of the development process to determine whether the software meets the customer expectations and requirements. So V-Model contains Verification phases on one side of the Validation phases on the other side. Verification and Validation process is joined by coding phase in V-shape. Thus it is known as V-Model. There are the various phases of Verification Phase of V-model: 1. Business requirement analysis: This is the first step where product requirements understood from the customer's side. This phase contains detailed communication to understand customer's expectations and exact requirements. 2. System Design: In this stage system engineers analyze and interpret the business of the proposed system by studying the user requirements document. 3. Architecture Design: The baseline in selecting the architecture is that it should understand all which typically consists of the list of modules, brief functionality of each module, their interface relationships, dependencies, database tables, architecture diagrams, technology detail, etc. The integration testing model is carried out in a particular phase. 4. Module Design: In the module design phase, the system breaks down into small modules. The detailed design of the modules is specified, which is known as Low- Level Design 5. Coding Phase: After designing, the coding phase is started. Based on the requirements, a suitable programming language is decided. There are some guidelines and standards for coding. Before checking in the repository, the final build is optimized for better performance, and the code goes through many code reviews to check the performance. There are the various phases of Validation Phase of V-model: 1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the module design phase. These UTPs are executed to eliminate errors at code level or unit level. A unit is the smallest entity which can independently exist, e.g., a program module. Unit testing verifies that the smallest entity can function correctly when isolated from the rest of the codes/ units. 2. Integration Testing: Integration Test Plans are developed during the Architectural Design Phase. These tests verify that groups created and tested independently can coexist and communicate among themselves. 3. System Testing: System Tests Plans are developed during System Design Phase. Unlike Unit and Integration Test Plans, System Tests Plans are composed by the client?s business team. System Test ensures that expectations from an application developer are met. 4. Acceptance Testing: Acceptance testing is related to the business requirement analysis part. It includes testing the software product in user atmosphere. Acceptance tests reveal the compatibility problems with the different systems, which is available within the user atmosphere. It conjointly discovers the non- functional problems like load and performance defects within the real user atmosphere. When to use V-Model: When the requirement is well defined and not ambiguous. The V-shaped model should be used for small to medium-sized projects where requirements are clearly defined and fixed. The V-shaped model should be chosen when sample technical resources are available with essential technical expertise. Advantage (Pros) of V-Model: 1. Easy to Understand. 2. Testing Methods like planning, test designing happens well before coding. 3. This saves a lot of time. Hence a higher chance of success over the waterfall model. 4. Avoids the downward flow of the defects. 5. Works well for small plans where requirements are easily understood. Disadvantage (Cons) of V-Model: 1. Very rigid and least flexible. 2. Not a good for a complex project. 3. Software is developed during the implementation stage, so no early prototypes of the software are produced. 4. If any changes happen in the midway, then the test documents along with the required documents, has to be updated. -------------------------------------------------------------------------------------------------------------------------------