The document discusses various topics related to software engineering including:
1) The fundamental activities in the software development process like planning, analysis, design, implementation, testing and maintenance.
2) The different phases of the Rational Unified Process including inception, elaboration, construction and transition.
3) The drawbacks of the spiral model including high costs, expertise required for risk analysis, and poor fit for smaller projects.
Software Engineering Important Short Question for ExamsMuhammadTalha436
The document discusses various topics related to software engineering including:
1. The software development life cycle (SDLC) and its phases like requirements, design, implementation, testing, etc.
2. The waterfall model and its phases from modeling to maintenance.
3. The purpose of feasibility studies, data flow diagrams, and entity relationship diagrams.
4. Different types of testing done during the testing phase like unit, integration, system, black box and white box testing.
This document discusses software quality assurance. It defines software quality and describes two types - quality of design and quality of conformance. It discusses quality concepts at the organizational, project, and process levels. It also describes software reviews, their types and purposes. Software quality assurance aims to establish organizational procedures and standards to achieve high quality software. Key SQA activities include applying technical methods, reviews, testing, enforcing standards and measurement.
Software Engineering Past Papers (Short Questions)MuhammadTalha436
1. SWOT analysis is a framework for identifying internal and external factors that can impact a project, product, place or person. It analyzes strengths, weaknesses, opportunities, and threats.
2. Software refactoring is changing software code without altering external behavior to improve internal structure.
3. An embedded system is a programmed system within a larger mechanical or electrical system, often with real-time computing constraints and a dedicated function.
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
This document discusses software quality factors and McCall's quality factor model. It describes McCall's three main quality factor categories: product operation factors, product revision factors, and product transition factors. Under product operation factors, it outlines reliability, correctness, integrity, efficiency, and usability requirements. It then discusses product revision factors of maintainability, flexibility, and testability. Finally, it covers product transition factors including portability, reusability, and interoperability. The document provides details on the specific requirements for each quality factor.
This document summarizes key concepts from the first chapter of Ian Sommerville's Software Engineering textbook. It introduces software engineering as an engineering discipline concerned with all aspects of software production. It discusses the objectives of software engineering, topics covered like frequently asked questions and professional responsibility. It also summarizes concepts like the software development process, methods, costs and challenges in the field.
The document discusses verification and validation (V&V) in software engineering. It defines verification as ensuring a product is built correctly, and validation as ensuring the right product is built. V&V aims to discover defects and assess if a system is usable. Static and dynamic verification methods are covered, including inspections, testing, and automated analysis. The document outlines V&V goals, the debugging process, V-model development, test planning, and inspection techniques.
Software Engineering Important Short Question for ExamsMuhammadTalha436
The document discusses various topics related to software engineering including:
1. The software development life cycle (SDLC) and its phases like requirements, design, implementation, testing, etc.
2. The waterfall model and its phases from modeling to maintenance.
3. The purpose of feasibility studies, data flow diagrams, and entity relationship diagrams.
4. Different types of testing done during the testing phase like unit, integration, system, black box and white box testing.
This document discusses software quality assurance. It defines software quality and describes two types - quality of design and quality of conformance. It discusses quality concepts at the organizational, project, and process levels. It also describes software reviews, their types and purposes. Software quality assurance aims to establish organizational procedures and standards to achieve high quality software. Key SQA activities include applying technical methods, reviews, testing, enforcing standards and measurement.
Software Engineering Past Papers (Short Questions)MuhammadTalha436
1. SWOT analysis is a framework for identifying internal and external factors that can impact a project, product, place or person. It analyzes strengths, weaknesses, opportunities, and threats.
2. Software refactoring is changing software code without altering external behavior to improve internal structure.
3. An embedded system is a programmed system within a larger mechanical or electrical system, often with real-time computing constraints and a dedicated function.
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
This document discusses software quality factors and McCall's quality factor model. It describes McCall's three main quality factor categories: product operation factors, product revision factors, and product transition factors. Under product operation factors, it outlines reliability, correctness, integrity, efficiency, and usability requirements. It then discusses product revision factors of maintainability, flexibility, and testability. Finally, it covers product transition factors including portability, reusability, and interoperability. The document provides details on the specific requirements for each quality factor.
This document summarizes key concepts from the first chapter of Ian Sommerville's Software Engineering textbook. It introduces software engineering as an engineering discipline concerned with all aspects of software production. It discusses the objectives of software engineering, topics covered like frequently asked questions and professional responsibility. It also summarizes concepts like the software development process, methods, costs and challenges in the field.
The document discusses verification and validation (V&V) in software engineering. It defines verification as ensuring a product is built correctly, and validation as ensuring the right product is built. V&V aims to discover defects and assess if a system is usable. Static and dynamic verification methods are covered, including inspections, testing, and automated analysis. The document outlines V&V goals, the debugging process, V-model development, test planning, and inspection techniques.
Software maintenance typically requires 40-60% of the total lifecycle effort for a software product, with some cases requiring as much as 90%. A widely used rule of thumb is that maintenance activities are distributed as 60% for enhancements, 20% for adaptations, and 20% for corrections. Studies show the typical level of effort devoted to software maintenance is around 50% of the total lifecycle effort. Boehm suggests measuring maintenance effort using an activity ratio that considers the number of instructions added or modified over the total instructions. The effort required can then be estimated using programmer months based on the activity ratio and an effort adjustment factor. Emphasis on reliability during development can reduce future maintenance effort.
The document discusses software quality assurance (SQA) and defines key terms related to quality. It describes SQA as encompassing quality management, software engineering processes, formal reviews, testing strategies, documentation control, and compliance with standards. Specific SQA activities mentioned include developing an SQA plan, participating in process development, auditing work products, and ensuring deviations are addressed. The document also discusses software reviews, inspections, reliability, and the reliability specification process.
Verification and Validation in Software Engineering SE19koolkampus
The document introduces software verification and validation (V&V) and discusses key techniques used in the V&V process, including inspections, static analysis, and the Cleanroom development process. It defines verification as ensuring a product is built correctly and validation as ensuring the right product is built. V&V aims to find defects and assess usability, applying techniques from requirements through deployment. Inspections and static analysis complement testing by checking static representations, while testing checks dynamic behavior. The Cleanroom process uses formal specification, incremental development, and statistical testing with reliability models.
The document discusses staffing level estimation over the course of a software development project. It describes how the number of personnel needed varies at different stages: a small group is needed for planning and analysis, a larger group for architectural design, and the largest number for implementation and system testing. It also references models like the Rayleigh curve and Putnam's interpretation that estimate personnel levels over time. Tables show estimates for the distribution of effort, schedule, and personnel across activities for different project sizes. The key idea is that staffing requirements fluctuate throughout the software life cycle, with peaks during implementation and testing phases.
The document discusses different types of software and challenges in software engineering. It describes 7 categories of software: system software, application software, engineering/scientific software, embedded software, product-line software, web applications, and artificial intelligence software. It also outlines 4 challenges: ubiquitous computing, netsourcing, open source, and the new economy. Additionally, it presents software engineering as a layered technology with 4 layers: quality focus, process, methods, and tools. Finally, it proposes a generic process framework for software development with 5 activities: communication, planning, modeling, construction, and deployment.
This document discusses several software cost estimation techniques:
1. Top-down and bottom-up approaches - Top-down estimates system-level costs while bottom-up estimates costs of each module and combines them.
2. Expert judgment - Widely used technique where experts estimate costs based on past similar projects. It utilizes experience but can be biased.
3. Delphi estimation - Estimators anonymously provide estimates in rounds to reach consensus without group dynamics influencing individuals.
4. Work breakdown structure - Hierarchical breakdown of either the product components or work activities to aid bottom-up estimation.
This document discusses software metrics and how they can be used to measure various attributes of software products and processes. It begins by asking questions that software metrics can help answer, such as how to measure software size, development costs, bugs, and reliability. It then provides definitions of key terms like measurement, metrics, and defines software metrics as the application of measurement techniques to software development and products. The document outlines areas where software metrics are commonly used, like cost estimation and quality/reliability prediction. It also discusses challenges in implementing metrics and provides categories of metrics like product, process, and project metrics. The remainder of the document provides examples and formulas for specific software metrics.
The document discusses project planning in software engineering. It defines project planning and its importance. It describes the project manager's responsibilities which include project planning, reporting, risk management, and people management. It discusses challenges in software project planning. The RUP process for project planning is then outlined which involves creating artifacts like the business case and software development plan. Risk management is also a key part of project planning.
The document discusses key concepts and principles of software engineering practice. It covers the software development lifecycle including requirements analysis, planning, modeling, construction, testing, and deployment. It provides guidance on best practices for communication, modeling, design, coding, testing, and project management. The overall aim of software engineering is to develop reliable, maintainable and usable software that meets customer requirements.
Software engineering Questions and AnswersBala Ganesh
1. Risk management is the process of identifying, addressing, and eliminating potential problems that could threaten the success of a project before they cause damage. This includes issues that could impact cost, schedule, technical success, product quality, or team morale.
2. HIPO (Hierarchical Input Process Output) diagrams were developed at IBM as a design representation and documentation aid. They contain a visual table of contents, overview diagrams, and detailed diagrams.
3. Software maintenance is any work done to modify software after it is operational, such as fixing errors, adding capabilities, removing obsolete code, or optimizing performance. It aims to preserve the software's value over time as requirements, users, and technology change. M
The document discusses various aspects of software project management including project planning activities like estimation, scheduling, staffing, and risk handling. It describes different project organization structures like functional organization and project organization. It also discusses different team structures like chief programmer teams, democratic teams, and mixed teams. The document emphasizes the importance of careful project planning and producing a software project management plan document. It also discusses considerations for staffing a project team and attributes of a good software engineer.
The document discusses key concepts in software design, including:
- Design involves modeling the system architecture, interfaces, and components before implementation. This allows assessment and improvement of quality.
- Important design concepts span abstraction, architecture, patterns, separation of concerns, modularity, information hiding, and functional independence. Architecture defines overall structure and interactions. Patterns help solve common problems.
- Separation of concerns and related concepts like modularity and information hiding help decompose problems into independently designed and optimized pieces to improve manageability. Functional independence means each module has a single, well-defined purpose with minimal interaction.
The document discusses the waterfall model of software development. It describes the five phases of the waterfall model as requirements gathering and analysis, design, coding, testing, and maintenance. It provides details on the activities in each phase, including documenting requirements, designing logical modules, writing code, testing software, and maintaining the system. The waterfall model is advantageous for small projects but inflexible if requirements change, as it is a sequential process where each phase must be completed before the next.
This document discusses common myths held by software managers, developers, and customers. It describes myths such as believing formal standards and procedures are sufficient, thinking new hardware means high quality development, adding people to late projects will help catch up, and outsourcing means relaxing oversight. Realities discussed include standards not being used effectively, tools being more important than hardware, adding people making projects later, and needing management and control of outsourced projects. Developer myths like thinking the job is done once code runs and quality can't be assessed until code runs are addressed. The document emphasizes the importance of requirements, documentation, quality processes, and addressing change impacts.
The document provides an overview of the Software Engineering course for the second semester of the second year (B.Tech IT/II Sem-II). It includes details about the term, text books, unit syllabus, index of topics, and slides covering introductions to software engineering, the changing nature of software, software myths, generic views of process, the Capability Maturity Model Integration and personal and team software processes.
This document discusses different software design strategies, including top-down, bottom-up, and hybrid approaches. Top-down design starts with a generalized model and defines more specific parts, eventually composing the whole system. Bottom-up design starts with basic components and builds higher levels by composing lower levels until the desired system is evolved. A hybrid approach combines top-down and bottom-up methods. The document provides examples of when each strategy is typically used.
Project control and process instrumentationKuppusamy P
The document discusses project control and process instrumentation for software development projects. It describes 7 core metrics that can be used to measure: 1) management indicators like work progress, budget, and staffing, and 2) quality indicators like change activity, breakage, rework, and defects over time. These metrics provide objective assessments of progress, quality, and estimates. The document also discusses automating metric collection and displaying metrics through a software project control panel to provide visibility into the project.
The document discusses the process of requirements engineering. It begins by defining requirements engineering as the process of defining, documenting, and maintaining requirements. It then outlines the key tasks in requirements engineering: inception, elicitation, elaboration, negotiation, specification, validation, and management. For each task, it provides details on the goals and steps involved. Overall, the document provides a comprehensive overview of requirements engineering and the various activities that comprise the process.
This document provides information about the CS416 Compiler Design course, including the instructor details, prerequisites, textbook, grading breakdown, course outline, and an overview of the major parts and phases of a compiler. The course will cover topics such as lexical analysis, syntax analysis using top-down and bottom-up parsing, semantic analysis using attribute grammars, intermediate code generation, code optimization, and code generation.
The document discusses the limitations of the conventional or waterfall model of software development. It identifies five major problems with the conventional approach: 1) protracted integration and late design breakage due to lack of early integration and testing, 2) late risk resolution as risks are not addressed until late in the project, 3) requirements-driven decomposition leading to suboptimal component organization, 4) adversarial stakeholder relationships due to lack of early and frequent customer involvement, and 5) excessive focus on documents and review meetings rather than engineering work. The document advocates using a modern approach that assesses projects early and continuously to avoid these problems.
This document provides an overview of software engineering concepts covered in lecture notes. It discusses the software development life cycle (SDLC) which includes key stages like requirements gathering, design, coding, testing, integration and maintenance. The SDLC framework aims to develop software efficiently using a well-defined process. Software engineering principles like abstraction and decomposition are used to reduce complexity when developing large programs.
This document provides an overview of software engineering. It discusses key topics like software evolution, paradigms, characteristics, and the software development life cycle (SDLC). The SDLC is described as a structured sequence of stages to develop software, including communication, requirements gathering, feasibility study, system analysis, design, coding, testing, integration, implementation, and operation and maintenance. Software engineering aims to develop high-quality software using well-defined principles and methods, addressing issues like exceeding timelines and budgets seen in traditional software development.
Software maintenance typically requires 40-60% of the total lifecycle effort for a software product, with some cases requiring as much as 90%. A widely used rule of thumb is that maintenance activities are distributed as 60% for enhancements, 20% for adaptations, and 20% for corrections. Studies show the typical level of effort devoted to software maintenance is around 50% of the total lifecycle effort. Boehm suggests measuring maintenance effort using an activity ratio that considers the number of instructions added or modified over the total instructions. The effort required can then be estimated using programmer months based on the activity ratio and an effort adjustment factor. Emphasis on reliability during development can reduce future maintenance effort.
The document discusses software quality assurance (SQA) and defines key terms related to quality. It describes SQA as encompassing quality management, software engineering processes, formal reviews, testing strategies, documentation control, and compliance with standards. Specific SQA activities mentioned include developing an SQA plan, participating in process development, auditing work products, and ensuring deviations are addressed. The document also discusses software reviews, inspections, reliability, and the reliability specification process.
Verification and Validation in Software Engineering SE19koolkampus
The document introduces software verification and validation (V&V) and discusses key techniques used in the V&V process, including inspections, static analysis, and the Cleanroom development process. It defines verification as ensuring a product is built correctly and validation as ensuring the right product is built. V&V aims to find defects and assess usability, applying techniques from requirements through deployment. Inspections and static analysis complement testing by checking static representations, while testing checks dynamic behavior. The Cleanroom process uses formal specification, incremental development, and statistical testing with reliability models.
The document discusses staffing level estimation over the course of a software development project. It describes how the number of personnel needed varies at different stages: a small group is needed for planning and analysis, a larger group for architectural design, and the largest number for implementation and system testing. It also references models like the Rayleigh curve and Putnam's interpretation that estimate personnel levels over time. Tables show estimates for the distribution of effort, schedule, and personnel across activities for different project sizes. The key idea is that staffing requirements fluctuate throughout the software life cycle, with peaks during implementation and testing phases.
The document discusses different types of software and challenges in software engineering. It describes 7 categories of software: system software, application software, engineering/scientific software, embedded software, product-line software, web applications, and artificial intelligence software. It also outlines 4 challenges: ubiquitous computing, netsourcing, open source, and the new economy. Additionally, it presents software engineering as a layered technology with 4 layers: quality focus, process, methods, and tools. Finally, it proposes a generic process framework for software development with 5 activities: communication, planning, modeling, construction, and deployment.
This document discusses several software cost estimation techniques:
1. Top-down and bottom-up approaches - Top-down estimates system-level costs while bottom-up estimates costs of each module and combines them.
2. Expert judgment - Widely used technique where experts estimate costs based on past similar projects. It utilizes experience but can be biased.
3. Delphi estimation - Estimators anonymously provide estimates in rounds to reach consensus without group dynamics influencing individuals.
4. Work breakdown structure - Hierarchical breakdown of either the product components or work activities to aid bottom-up estimation.
This document discusses software metrics and how they can be used to measure various attributes of software products and processes. It begins by asking questions that software metrics can help answer, such as how to measure software size, development costs, bugs, and reliability. It then provides definitions of key terms like measurement, metrics, and defines software metrics as the application of measurement techniques to software development and products. The document outlines areas where software metrics are commonly used, like cost estimation and quality/reliability prediction. It also discusses challenges in implementing metrics and provides categories of metrics like product, process, and project metrics. The remainder of the document provides examples and formulas for specific software metrics.
The document discusses project planning in software engineering. It defines project planning and its importance. It describes the project manager's responsibilities which include project planning, reporting, risk management, and people management. It discusses challenges in software project planning. The RUP process for project planning is then outlined which involves creating artifacts like the business case and software development plan. Risk management is also a key part of project planning.
The document discusses key concepts and principles of software engineering practice. It covers the software development lifecycle including requirements analysis, planning, modeling, construction, testing, and deployment. It provides guidance on best practices for communication, modeling, design, coding, testing, and project management. The overall aim of software engineering is to develop reliable, maintainable and usable software that meets customer requirements.
Software engineering Questions and AnswersBala Ganesh
1. Risk management is the process of identifying, addressing, and eliminating potential problems that could threaten the success of a project before they cause damage. This includes issues that could impact cost, schedule, technical success, product quality, or team morale.
2. HIPO (Hierarchical Input Process Output) diagrams were developed at IBM as a design representation and documentation aid. They contain a visual table of contents, overview diagrams, and detailed diagrams.
3. Software maintenance is any work done to modify software after it is operational, such as fixing errors, adding capabilities, removing obsolete code, or optimizing performance. It aims to preserve the software's value over time as requirements, users, and technology change. M
The document discusses various aspects of software project management including project planning activities like estimation, scheduling, staffing, and risk handling. It describes different project organization structures like functional organization and project organization. It also discusses different team structures like chief programmer teams, democratic teams, and mixed teams. The document emphasizes the importance of careful project planning and producing a software project management plan document. It also discusses considerations for staffing a project team and attributes of a good software engineer.
The document discusses key concepts in software design, including:
- Design involves modeling the system architecture, interfaces, and components before implementation. This allows assessment and improvement of quality.
- Important design concepts span abstraction, architecture, patterns, separation of concerns, modularity, information hiding, and functional independence. Architecture defines overall structure and interactions. Patterns help solve common problems.
- Separation of concerns and related concepts like modularity and information hiding help decompose problems into independently designed and optimized pieces to improve manageability. Functional independence means each module has a single, well-defined purpose with minimal interaction.
The document discusses the waterfall model of software development. It describes the five phases of the waterfall model as requirements gathering and analysis, design, coding, testing, and maintenance. It provides details on the activities in each phase, including documenting requirements, designing logical modules, writing code, testing software, and maintaining the system. The waterfall model is advantageous for small projects but inflexible if requirements change, as it is a sequential process where each phase must be completed before the next.
This document discusses common myths held by software managers, developers, and customers. It describes myths such as believing formal standards and procedures are sufficient, thinking new hardware means high quality development, adding people to late projects will help catch up, and outsourcing means relaxing oversight. Realities discussed include standards not being used effectively, tools being more important than hardware, adding people making projects later, and needing management and control of outsourced projects. Developer myths like thinking the job is done once code runs and quality can't be assessed until code runs are addressed. The document emphasizes the importance of requirements, documentation, quality processes, and addressing change impacts.
The document provides an overview of the Software Engineering course for the second semester of the second year (B.Tech IT/II Sem-II). It includes details about the term, text books, unit syllabus, index of topics, and slides covering introductions to software engineering, the changing nature of software, software myths, generic views of process, the Capability Maturity Model Integration and personal and team software processes.
This document discusses different software design strategies, including top-down, bottom-up, and hybrid approaches. Top-down design starts with a generalized model and defines more specific parts, eventually composing the whole system. Bottom-up design starts with basic components and builds higher levels by composing lower levels until the desired system is evolved. A hybrid approach combines top-down and bottom-up methods. The document provides examples of when each strategy is typically used.
Project control and process instrumentationKuppusamy P
The document discusses project control and process instrumentation for software development projects. It describes 7 core metrics that can be used to measure: 1) management indicators like work progress, budget, and staffing, and 2) quality indicators like change activity, breakage, rework, and defects over time. These metrics provide objective assessments of progress, quality, and estimates. The document also discusses automating metric collection and displaying metrics through a software project control panel to provide visibility into the project.
The document discusses the process of requirements engineering. It begins by defining requirements engineering as the process of defining, documenting, and maintaining requirements. It then outlines the key tasks in requirements engineering: inception, elicitation, elaboration, negotiation, specification, validation, and management. For each task, it provides details on the goals and steps involved. Overall, the document provides a comprehensive overview of requirements engineering and the various activities that comprise the process.
This document provides information about the CS416 Compiler Design course, including the instructor details, prerequisites, textbook, grading breakdown, course outline, and an overview of the major parts and phases of a compiler. The course will cover topics such as lexical analysis, syntax analysis using top-down and bottom-up parsing, semantic analysis using attribute grammars, intermediate code generation, code optimization, and code generation.
The document discusses the limitations of the conventional or waterfall model of software development. It identifies five major problems with the conventional approach: 1) protracted integration and late design breakage due to lack of early integration and testing, 2) late risk resolution as risks are not addressed until late in the project, 3) requirements-driven decomposition leading to suboptimal component organization, 4) adversarial stakeholder relationships due to lack of early and frequent customer involvement, and 5) excessive focus on documents and review meetings rather than engineering work. The document advocates using a modern approach that assesses projects early and continuously to avoid these problems.
This document provides an overview of software engineering concepts covered in lecture notes. It discusses the software development life cycle (SDLC) which includes key stages like requirements gathering, design, coding, testing, integration and maintenance. The SDLC framework aims to develop software efficiently using a well-defined process. Software engineering principles like abstraction and decomposition are used to reduce complexity when developing large programs.
This document provides an overview of software engineering. It discusses key topics like software evolution, paradigms, characteristics, and the software development life cycle (SDLC). The SDLC is described as a structured sequence of stages to develop software, including communication, requirements gathering, feasibility study, system analysis, design, coding, testing, integration, implementation, and operation and maintenance. Software engineering aims to develop high-quality software using well-defined principles and methods, addressing issues like exceeding timelines and budgets seen in traditional software development.
Elementary Probability theory Chapter 2.pptxethiouniverse
The document discusses various software process models including waterfall, iterative, incremental, evolutionary (prototyping and spiral), and component-based development models. It describes the key activities and characteristics of each model and discusses when each may be applicable. The waterfall model presents a linear sequential flow while evolutionary models like prototyping and spiral are iterative and incremental to accommodate changing requirements.
The document provides an overview of software engineering. It defines software engineering as applying scientific principles and methods to the development of software. The document then discusses the need for software engineering due to factors like managing large or scalable software, cost management, and dynamic nature of software. It also covers key concepts in software engineering like product vs process, software evolution, software development life cycle (SDLC), different SDLC models like waterfall, incremental, iterative and evolutionary.
The document provides an overview of software engineering. It defines software engineering as applying scientific principles and methods to the development of software. The document then discusses the need for software engineering due to factors like managing large or scalable software, cost management, and dynamic nature of software. It also covers key concepts in software engineering like product vs process, software evolution, software development life cycle (SDLC), different SDLC models like waterfall, incremental, iterative and evolutionary models.
The document discusses several software development life cycle (SDLC) models, including waterfall, iterative, prototyping, and spiral models. It describes the basic stages and processes involved in each model. The waterfall model involves sequential stages of requirements analysis, design, implementation, testing, and deployment. The iterative model allows revisiting earlier stages and incremental releases. The prototyping model uses prototypes to gather early user feedback. Finally, the spiral model combines iterative development and risk analysis, proceeding in cycles of planning, risk analysis, development, and evaluation.
SWE-401 - 2. Software Development life cycle (SDLC)ghayour abbas
The document describes the Software Development Life Cycle (SDLC) which is a structured process for developing software through stages including communication, requirement gathering, feasibility study, system analysis, software design, coding, testing, integration, implementation, and operation and maintenance. It also discusses several software development paradigms that guide the development process, such as waterfall, iterative, spiral, V-model, and big bang models.
This document provides information on the Software Engineering course with code 210253. It is a 3 credit course with a mid-semester exam worth 30 marks and an end-semester exam worth 70 marks. The syllabus covers topics like introduction to software engineering, software process models, prescriptive process models (waterfall, incremental, evolutionary), and agile software development. It also discusses concepts like software engineering fundamentals, process frameworks, generic process activities, prescriptive process models, evolutionary models, concurrent development model, and principles of software engineering practice.
This document provides an overview of software engineering and a generic process model. It discusses that software should be engineered to meet 21st century challenges. A software engineering process involves communication, planning, modeling, construction, and deployment activities applied iteratively. It also involves umbrella activities like tracking, reviews, and configuration management. Finally, it presents a schematic of a generic process model showing the relationship between framework activities, actions, and tasks.
This document summarizes several software development process models. It begins by defining what a software process is - a framework for the activities required to build software. It then discusses evolutionary models like prototyping and the spiral model, which use iterative development and user feedback. Concurrent modeling is presented as allowing activities to occur simultaneously. The Unified Process is described as use case driven and iterative. Other models discussed include component-based development, formal methods, and aspect-oriented development. Personal and team software processes are also summarized, focusing on planning, metrics, and continuous improvement.
Modern gadgets and machines such as medical equipments, mobile phones, cars and even military hardware run on software. The operational efficiency and accuracy of these machines are critical to life and the well being of modern civilization. When the software powering these machines fail it exposes life to danger and can cause the failure of businesses. In this paper, software quality measure is presented with the emphasis on improving standard and controlling damages that may result from badly developed application. The research shows various software quality standards and quality metrics and how they can be applied. The application of the metrics in measuring software quality in the research produced results which shows that the code metrics performance is better than the design metrics performance and points to a new way of improving quality by refactoring application code instead of developing new designs. This is believed to ensure reusability and reduced failure rate when software is developed
This document provides a 3 paragraph summary of a software engineering course titled "Software Engineering (KCS-601)" taught by Dr. Radhey Shyam at SRMCEM Lucknow. The course contents were compiled by Dr. Shyam and are available for students' academic use. Students can contact Dr. Shyam via email for any queries regarding the course material.
The document discusses the software development life cycle (SDLC). It describes the typical phases of SDLC including problem definition, program design, coding, debugging, testing, documentation, maintenance, and extension/redesign. It also covers different SDLC models like waterfall, prototyping, and agile development. The SDLC process is best for structured environments while iterative models work better for web and e-commerce projects where frequent stakeholder feedback is needed.
The document provides information on various topics related to software engineering:
1. It defines software engineering and discusses why it is required to manage large, scalable software projects and improve quality and cost management.
2. It describes common software processes like specification, development, validation and evolution and different process models like waterfall, iterative and prototyping.
3. It discusses the "software crisis" due to increasing size, costs and delays in software projects and differentiates between a program and software.
4. It explains popular process models like waterfall, iterative and prototyping in detail outlining their phases, advantages and disadvantages.
The document provides an overview of software engineering, discussing what it is, why it is important, and key concepts like the software development lifecycle, processes, and models. It introduces software engineering as a way to build software in a controlled, predictable manner by giving control over functionality, quality, and resources. It also summarizes several software development process models like waterfall, evolutionary development, and spiral.
Introduction to Software engineering Concepts which includes Software Process Model, SRS documents, Requirement Engineering Process, Architectural Modeling, software Products, Risk Management Process, SDLC Model, Professional & Ethical Responsibilities, System & its Environment, System Procurement (COTS & Contractor Method), System Engineering Process, System Reliability Engineering, Human factors, Functional & Non-Functional Requirements
Similar to Software Engineering Solved Past Paper 2020 (20)
The document discusses analysis modeling principles and techniques used in requirements analysis. It covers key topics such as:
1. The purpose of requirements analysis is to specify a software system's operational characteristics, interface with other systems, and constraints. Models are built to depict user scenarios, functions, problem classes, system behavior, and data flow.
2. Analysis modeling follows principles such as representing the information domain, defining functions, modeling behavior, partitioning models, and moving from essential to implementation details. Common techniques include use case modeling, class modeling, data flow diagrams, state diagrams, and CRC modeling.
3. The objectives of analysis modeling are to describe customer requirements, establish a basis for software design, and define a set
This document provides an overview of software processes and frameworks. It discusses that a software process defines the tasks and activities required to develop high-quality software. Common framework activities include communication, planning, modeling, construction, and deployment. The document also introduces process models and maturity levels, noting that the Capability Maturity Model Integration (CMMI) defines levels of process capability from incomplete to optimized.
This document provides an overview of different software process models. It discusses the build and fix model, why models are needed to address issues like schedule and cost overruns. It covers process models as a "black box" and "white box" approach. Prescriptive models advocate an orderly approach and include activities like communication, planning, modeling etc. The waterfall model is described as having sequential phases of requirements, design, implementation, testing and maintenance. Limitations are noted. Incremental process models deliver software in increments. RAD aims for a very short development cycle through reuse. Evolutionary models produce increasingly complete versions through iterations, such as with prototyping, the spiral model and concurrent development.
The document provides an overview of common software engineering interview questions and their answers. It begins with definitions of basic terms like computer software, computer programs, and software engineering. It then covers the software development life cycle (SDLC) models, phases, best practices for selection, and project management concepts. Finally, it discusses software requirements, design methodologies, testing approaches, maintenance strategies, and tools used in software engineering. The document aims to help readers understand the types of questions they may encounter in a software engineering interview.
The document contains answers to 14 short questions and 6 long questions related to software engineering. Some key topics covered include the software development process, phases of the rational unified process model, risks and risk management approaches, software design concepts like modularity and cohesion/coupling, and software engineering methodologies like agile development and formal methods. Refactoring is discussed as an important part of the software design process to improve code structure and understandability over time.
The prototype model requires building a prototype before developing actual software. A prototype is a crude, initial version of the system with limited functionality. It allows clients with general requirements to provide feedback without fully developed specifications. The process involves requirement gathering, quick decision making, building the prototype, evaluation, refinement, and developing the product. Advantages include reducing risks of incorrect requirements and supporting early marketing. Disadvantages include prototypes becoming the final product and requiring extensive customer involvement.
The incremental model is a process where software development is divided into standalone modules, with each module going through requirements, design, implementation, and testing phases. Each subsequent release of a module adds additional functionality until the complete system is achieved. The key phases are requirement analysis to identify needed functionality, design and development of system functions, testing each existing and new function, and implementation through coding and upgrading the working product. The incremental model is best for projects with lengthy timelines, less skilled teams, or customers wanting early access to prioritized features.
The V-Model is a software development lifecycle model where each phase of the development process is verified by an opposing phase of testing. It follows a sequential design process like the waterfall model. The V-Model contains verification phases on one side and validation phases on the other side joined by the coding phase in a V-shape. Each phase of the verification side plans testing for the corresponding development phase on the validation side. This includes unit testing, integration testing, system testing, and acceptance testing. The V-Model works best for small to medium projects with clearly defined requirements and available technical resources.
The Waterfall model is a sequential software development process introduced by Winston Royce in 1970. It consists of 5 phases: requirements analysis, design, implementation, testing, and maintenance. Each phase must be completed before the next begins and there is no overlapping or iteration between phases. The model is linear and waterfall-like, representing a strict sequence from abstract definition to concrete code.
The document discusses the key tasks in requirements engineering: inception to initially understand user needs, elicitation to gather requirements, elaboration to further analyze and model requirements, negotiation to reconcile conflicts, specification to formally document requirements, validation to verify requirements quality, and management to track requirements throughout the project. The tasks involve collaborative activities like interviews and workshops to capture ambiguous and changing user needs and transform them into clear, consistent requirements that form the basis for subsequent software design and development.
Software Quality Assurance in software engineeringMuhammadTalha436
1. Software quality assurance involves quality control through inspections, reviews and testing throughout development to ensure work products meet specifications.
2. The costs of quality include prevention costs like planning and training, appraisal costs like testing, and failure costs like rework and support; finding and fixing defects early through reviews reduces costs.
3. Formal technical reviews uncover errors at various stages of development to catch them before they become costly defects later on; a review meeting follows constraints and produces an issues list and report that is tracked to resolution.
A Risk Analysis and Management in Software Engineering MuhammadTalha436
The document discusses different approaches to risk management for software projects. Reactive risk management involves reacting to risks as they occur, often in crisis mode, while proactive risk management identifies risks early and plans contingencies. It identifies different types of risks like project risks that threaten schedules, technical risks that impact quality, and business risks that endanger feasibility. Known and predictable risks can be uncovered through evaluation, while unpredictable risks are difficult to foresee.
The document discusses different strategies for software testing. It describes unit testing starting at the component level and progressing outward to integration, validation, and system testing. Validation testing ensures requirements are met through criteria like functional testing and alpha/beta testing with end users. Verification tests that the product is built correctly while validation ensures the correct product is built.
The document discusses key concepts in project management including concerns managers have around quality, risk, cost, schedule, resources, and communication. It identifies reasons why projects fail such as changing requirements or unrealistic deadlines. Effective project management focuses on people, product, process, and project. Key players include stakeholders, team leaders, and software teams. The document provides guidance on organizing teams, defining product scope, decomposing problems, defining processes, and monitoring projects.
This document discusses software engineering and provides definitions and explanations of key concepts:
- Software engineering is defined as an engineering discipline concerned with all aspects of software production. It focuses on practical software development and delivery, whereas computer science focuses more on theory.
- Good software should deliver required functionality, performance, and be maintainable, dependable, usable and acceptable to users.
- A software engineering approach is layered, with quality, process models, methods and tools. Process models define activities for effective delivery. Methods provide tasks for requirements, design, coding and testing. Tools support the process and methods.
- Generic software processes involve communication, planning, modeling, construction and deployment activities in an iterative fashion to develop
The document provides definitions and explanations of key software engineering concepts. It summarizes stakeholders as anyone who directly or indirectly benefits from a system. Prototyping draws criticism for prioritizing quick prototypes over quality. Incremental development delivers software in pieces that build on prior deliveries, while evolutionary development iteratively produces more complete versions. Formal methods are not widely used due to extended timelines, complex mathematics, and incompatibility with other tools. Risk analysis identifies possible losses in development. Information systems link to business objectives by improving processes and maintaining competitive advantages. Process improvement involves measurement, analysis, change identification. Requirements elicitation uses techniques like interviews and prototyping. Architecture design represents effectiveness and reduces risks. Modular design improves
This document contains questions and answers about software engineering topics. It discusses definitions of software engineering, elements of computer-based systems, factors to consider in system modeling, what a system engineering model accomplishes, frameworks, roles of components in software architecture, differences between methods/tools/procedures, stakeholders, real-time systems, distributed systems, software characteristics, categories of software, challenges in software, definitions of software process and activities, work breakdown structures, issues discussed in project closure, process frameworks, generic framework activities, stakeholders, differences between process models, reasons for waterfall model failures, drawbacks of RAD models, disadvantages of classic lifecycles, task regions in spiral models, objectives of win-win spiral models, effectiveness
Object Oriented Programming Short Notes for Preperation of ExamsMuhammadTalha436
The document appears to be lecture notes on object-oriented programming using C++. It covers key concepts like classes, objects, encapsulation, inheritance, and polymorphism. It also provides examples of input/output statements, arithmetic operators, assignment operators, and relational operators in C++ code. The document is divided into multiple chapters with topics like classes, inheritance, templates, and exceptions.
Object Oriented Solved Practice Programs C++ ExamsMuhammadTalha436
The question asks to create classes to represent publications, books, and tapes. The Publication class has title and price attributes. The Book class inherits from Publication and adds a noOfPages attribute. The Tape class inherits from Publication and adds a playingTime attribute.
This document provides 39 practice problems and solutions for a C++ exam. The problems cover topics like output formatting, conditional statements, loops, functions, and more. Each problem is a short code snippet or question, and the solutions are provided at the end. This document is intended to help students practice and test their mastery of C++ concepts before taking the exam.
Artificial Intelligence (AI) has revolutionized the creation of images and videos, enabling the generation of highly realistic and imaginative visual content. Utilizing advanced techniques like Generative Adversarial Networks (GANs) and neural style transfer, AI can transform simple sketches into detailed artwork or blend various styles into unique visual masterpieces. GANs, in particular, function by pitting two neural networks against each other, resulting in the production of remarkably lifelike images. AI's ability to analyze and learn from vast datasets allows it to create visuals that not only mimic human creativity but also push the boundaries of artistic expression, making it a powerful tool in digital media and entertainment industries.
8+8+8 Rule Of Time Management For Better ProductivityRuchiRathor2
This is a great way to be more productive but a few things to
Keep in mind:
- The 8+8+8 rule offers a general guideline. You may need to adjust the schedule depending on your individual needs and commitments.
- Some days may require more work or less sleep, demanding flexibility in your approach.
- The key is to be mindful of your time allocation and strive for a healthy balance across the three categories.
Decolonizing Universal Design for LearningFrederic Fovet
UDL has gained in popularity over the last decade both in the K-12 and the post-secondary sectors. The usefulness of UDL to create inclusive learning experiences for the full array of diverse learners has been well documented in the literature, and there is now increasing scholarship examining the process of integrating UDL strategically across organisations. One concern, however, remains under-reported and under-researched. Much of the scholarship on UDL ironically remains while and Eurocentric. Even if UDL, as a discourse, considers the decolonization of the curriculum, it is abundantly clear that the research and advocacy related to UDL originates almost exclusively from the Global North and from a Euro-Caucasian authorship. It is argued that it is high time for the way UDL has been monopolized by Global North scholars and practitioners to be challenged. Voices discussing and framing UDL, from the Global South and Indigenous communities, must be amplified and showcased in order to rectify this glaring imbalance and contradiction.
This session represents an opportunity for the author to reflect on a volume he has just finished editing entitled Decolonizing UDL and to highlight and share insights into the key innovations, promising practices, and calls for change, originating from the Global South and Indigenous Communities, that have woven the canvas of this book. The session seeks to create a space for critical dialogue, for the challenging of existing power dynamics within the UDL scholarship, and for the emergence of transformative voices from underrepresented communities. The workshop will use the UDL principles scrupulously to engage participants in diverse ways (challenging single story approaches to the narrative that surrounds UDL implementation) , as well as offer multiple means of action and expression for them to gain ownership over the key themes and concerns of the session (by encouraging a broad range of interventions, contributions, and stances).
Get Success with the Latest UiPath UIPATH-ADPV1 Exam Dumps (V11.02) 2024yarusun
Are you worried about your preparation for the UiPath Power Platform Functional Consultant Certification Exam? You can come to DumpsBase to download the latest UiPath UIPATH-ADPV1 exam dumps (V11.02) to evaluate your preparation for the UIPATH-ADPV1 exam with the PDF format and testing engine software. The latest UiPath UIPATH-ADPV1 exam questions and answers go over every subject on the exam so you can easily understand them. You won't need to worry about passing the UIPATH-ADPV1 exam if you master all of these UiPath UIPATH-ADPV1 dumps (V11.02) of DumpsBase. #UIPATH-ADPV1 Dumps #UIPATH-ADPV1 #UIPATH-ADPV1 Exam Dumps
How to Create User Notification in Odoo 17Celine George
This slide will represent how to create user notification in Odoo 17. Odoo allows us to create and send custom notifications on some events or actions. We have different types of notification such as sticky notification, rainbow man effect, alert and raise exception warning or validation.
Brand Guideline of Bashundhara A4 Paper - 2024khabri85
It outlines the basic identity elements such as symbol, logotype, colors, and typefaces. It provides examples of applying the identity to materials like letterhead, business cards, reports, folders, and websites.
How to Create a Stage or a Pipeline in Odoo 17 CRMCeline George
Using CRM module, we can manage and keep track of all new leads and opportunities in one location. It helps to manage your sales pipeline with customizable stages. In this slide let’s discuss how to create a stage or pipeline inside the CRM module in odoo 17.
Post init hook in the odoo 17 ERP ModuleCeline George
In Odoo, hooks are functions that are presented as a string in the __init__ file of a module. They are the functions that can execute before and after the existing code.
1. Software engineering (CMP-3310)
Short Questions
1. Write the fundamental activties that are involved in softwaredevelopment
process?
Ans: Softwaredevelopment process involved following activties:
1) Planning
2) Analysis
3) Design
4) Implementation
5) Testing
6) Maintenance
2. What are the different phases of rational unified process?
Ans: Rational unified process (RUP) is an object oriented and web enabled
programdevelopment methodology. Ithas following phases,
1) Inception phase
2) Elaboration phase
3) Construction phase
4) Transition phase
3. What are the drawbacks of spiralmodel?
Ans: Following are the drawbacks of spiralmodel,
Itcan be costly model to use
In this model, risk analysis requires highly specific expertise
Projectsuccess highly depend on the risk analysis phase
It does’nt work well for smaller projects
2. 4. Differentiate between proactive and reactive approaches to handle risks?
Ans: A risk is a potential problem, it might or not happen.
According to proactive approach risks are identified before they happen and
their probability and potential are assessed. On the other hand reactive
approach says worrying about problems when they happen.
5. What are two basic ways to estimate the size of a project?
Ans: The size of a project is estimated by following,
a) Lines of code
b) Function points, which are defined as the number of:
Inputs
Outputs
Inquires
Internal files
External interfaces
6. What is modularity?
Ans: In softwareengineering, modularity is the extent to which a software may
be divided into smaller modules. Software modularity indicates that the
number of application modules are capable of serving a specific business
domain. It is successful because developers use prewritten code which saves
resources.
7. Define cohesion and coupling?
Ans: Cohesion is the degree to which the all elements of a component are
directed towards a single task. Types includes,
3. Coincidental
Logical
Temporal
Procedural
Communicational
Sequential
Functional
Coupling is the degree of dependence such as interactions among components.
Types includes,
Content coupling
Common coupling
External coupling
Control coupling
Stamp coupling
8. What is software architecture design?
Ans: The software architecture of a program is the structure which comprises
software elements, externally visible properties of those elements and the
relationships among them.
9. Differentiate refactoring and refinement?
Ans: Refactoring is the re-working of internal implementation of the existing
functionality with the aim of optimizing performance like speed, memory etc.
while program refinement is another term which is the verifiable
transformation of an abstract formal specification into a software. Stepwise
refinement allows this process to be done in stages.
4. 10. What is difference between verification and validation?
Ans: The distinction between two terms is largely to do with the role of
specification. Validation is the process of checking whether the specifications
check the customer’s needs while verification is the process of checking that
the software meets the specifications.
11. Compare testing and debugging?
Ans: Software developers check their code to remove bugs , this process is
called as debugging while software testing is the process in which software
testing teams test the whole software to ensure no error it has , and it meets
all the requirements and specifications.
12. Differentiate between white box and black box testing?
Ans: White box testing is the software testing method in which internal
structure of the item being tested is known to the tester. It is mainly applicable
to the lower level of testing like unit testing, integration testing and generally
software developers do that kind of testing.
Black box testing is the software testing method in which internal structure of
the item being tested is not known to the tester. It is mainly applicable to
higher level of testing like acceptance testing and generally independent
software testers do that kind of testing.
13. How quality is related to the standards?
Ans: Software quality can be improved by enforcing standards but it is very
difficult to enforce standards on actual program behavior. Standardizing the
process can help make sure that no steps are skipped but, standardizing to an
inappropriate process can reduce productivity quality.
5. 14. Why we use CMM?
Ans: CMM stands for capability maturity model which measure for maturity of
an organization’s software process. It is methodology used to develop and
refinement of a software develop process. Capability maturity model have 5
maturity model,
1. Initial
2. Managed
3. Defined
4. Quantitatively managed
5. Optimizing
Long Questions
1. What is project management? Explain project management
life cycle?
Ans: A softwareprojectis a complete procedureof softwaredevelopment
fromrequirement gathering to testing and maintenance carried out,
according to the execution methodologies, in a specified period of time to
achieve intended softwareproduct.
Need of software project management:
There are several factors both internal and external which may impact the
cost, time and quality of a software which bring risk in software
development so, it is essential to manage software projects efficiently.
6. Software project management life cycle has following phases:
Communication:
The first step where user initiates the request for a desired software
product.
Requirement gathering:
In this phase the requirements for proposed system are collected using
number of practices like studying the existing system, conducting inter-
views of users, and developers etc.
Feasibility study:
In feasibility phase it is analyzed that, “ Is the project is financially,
technologically feasible for the organization?”
System analysis:
At this step softwaredevelopers decide to roadmap their plan and try to
Bring up the best software model to suitable for the project. System
analysis include the understanding of software product limitations,
learn system related problems or changes to be done in existing system.
Software design:
In this step engineers make logical and physical design of the proposed
softwareand produced metadata, data dictionaries, logical diagrams etc
Coding:
This step is also known as programming phase. The implementation of
Software design starts in terms of writing programming code in suitable
7. language and developing error free executable programs efficiently.
Testing & integration:
Software testing is done after coding by developers and conducted by
testing experts and then software is integrated with libraries, database
and other programs.
Implementation:
This means installing the software on the user’s machine. Software is
tested for portability, adaptability and integration related issues are
solved during implementation.
2. Explain the fundamental software design concepts?
Ans: Softwaredesign is a process to transformuser requirements into some
suitable form, which helps the programmer in software coding and
implementation.
Software design is the first step in SDLC (software design life cycle), which
moves the concentration fromproblem domain to problem solution. It tries
to specifies how to fulfill the requirements mentioned in SRS.
Software design levels:
Software design yields three levels of results:
Architecture design – The architectural design is the highest abstract
version of the system. It identifies the software as a system with
many components interact with each other. At this stage, designers
get the idea of proposed solution domain.
8. High-level design – The high level design breaks the ‘single entity
multi-component’ concept of architecture design into less abstracted
view of sub systems and modules and depicts their interaction with
each other. High level design focuses on how the system along with
all of its components can be implemented in form of modules. It
recognize modular structure of each sub system and their relation
and interaction among each other.
Detailed design - detailed design deals with the implementation part
what is seen as a system and its sub systems in the previous two
designs. It is more detailed towards modules and their
implementation. It defines logical structure of each module and their
interfaces to communicate to other modules .
Modularization:
Modularization is a technique to divide a software system into multiple
discrete and independent modules which are expected to be carrying out
tasks independently. These modules may work as the basic constructs for
the entire software. Designers tend to design modules such that they can
be executed or compiled seperately independently.
Concurrency:
Concurrency provides the capability to the software to execute more than
one part of code to execute parallel to each other. It is necessary for the
programmers , designers to recognize those modules which can be made
execution parallel.
9. Coupling & Cohesion:
Cohesion is the degree to which the all elements of a component are
directed towards a single task. Types includes,
Logical
Temporal
Procedural
Communicational
Sequential
Functional
Coupling is the degree of dependence such as interactions among
components. Types includes,
Content coupling
Common coupling
External coupling
Control coupling
Stamp coupling
3. Compare and contrast between agile software development
and formal methods?
Agile Software development – Agile software development is a set of
principles for software development in which requirements and solutions
evolve through collaboration between self organizing. It promotes adaptive
planning, evolutionary development, early delivery, and continuous
improvement, and it encourages rapid and flexible response to change .
10. The manifesto for agile software development also known as agile
manifesto, based on the following principles,
1. Customer satisfaction by early and valuable software delivery.
2. Welcome changing requirements, even in late requirements.
3. Working software is delivered frequently (weeks rather than month)
4. Close daily cooperation between business people and developers.
5. Projects are build around motivated individuals who are trusted.
6. Face to face communication is best form of communication.
7. Working software is the best measure of progress. Etc……
Formal methods:
In computer science, formal methods are particular kind of mathematically
based techniques for specification and verification of software and
hardware systems. The use of formal methods for hardware and software
design is motivated by expectation that as in order engineering discipline,
performing appropriate mathematical analysis can contribute to reliability
of a design. Formal methods can be applied at various points through the
development process:
Specification
Development
varification
Agile methods Formal methods
Low critically Extreme critically
Senior developer Senior developers
Requirements change often Limited requirements
Small no of developers Requirements that can modeled
11. Culture that responds to changes Extreme quality
4. What is requirements elicitation? Explain any three
requirements elicitation techniques?
Ans: In requirements engineering, requirement elicitation is a practice of
collecting the information of a system from the users, customers and other
stakeholders.
Requirement elicitation process can be depicted using following
procedures:
o Requirements gathering
o Organizing requirements
o Negotiation and discussion
o Documentation
There are various requirements elicitation techniques:
Interviews
Survays
Questionaries
Task analysis
Domain analysis
Brainstorming
Prototyping
Observation
Interviews:
Interviews arestrong mediumto collect requirements. Organizations may
Conductseveral types of interviews such as:
12. Structured (closed) interviews whereevery single information to
gather is decide in advance, they follow pattern and matter of
discussion firmly.
Non-structured (open) interviews, whereinformation to gather are
not decide in advance, more flexible and less biased.
Oralinterviews
Written interviews
Surveys:
Organization may conduct surveys among various stakeholdersby querying
about their expectation and requirements from the upcoming system.
Questionnaire:
A document with predefined set of objectives questions and respective
options is handed over to all stakeholders to answers, which are collected
and compiled.
A short coming of this technique is, if an option for some mentioned in the
questionnaire, the issue might be left unattended.
5. Why refactoring play important role in software design?
Ans: Refactoring is a change made to the internal design of a softwareto
make it easier to understand and cheaper to modify withoutchanging its
observablebehavior.
Refactoring improves the designof astructure:
Without refactoring, the design of the programwill decay, the code loses
it’s structure. Itbecomes harder to see design by reading the code.
Refactoring is re-working on codeto makeit reuseable.
13. Refactoring makes software easier tounderstand:
Programming is in many ways a conversation with computer. You write code
that tells the computer what to do and it responds by doing exactly what you
tell it. But if someone will try to read your code in few months, then it will be
very difficult for him to understand your written code. So, he would be
refactor it to understand the working of the code. In shorthe should refactor
the unfamiliar code by look at the lines to understand whatthese are saying.
Refactoring helps youfindbugs in software design:
Refactoring helps in finding the bugs fromthe softwaredesign becauseit
applies on the internal structureof code so bugs are caught by refactoring
process .
Refactoring helps youtoprogram faster:
At the end, all points come down to this: refactoring helps you develop code
more quickly.
A good design is essential for rapid softwaredevelopment. Indeed the whole
point of having a good design is to allow rapid development. Without a good
design you can progress quickly for a while, but soon the poor design starts to
slow you down. You spend time finding and fixing bugs instead adding new
functions.
A good design is essential to maintaining speed in softwaredevelopment,
refactoring helps you develop more rapidly, becauseit stops the design of the
systemfromdecaying. Itcan even improve a design.
14. 6. Write a brief note on re-engineering?
Ans: Softwarere-engineering is the examination and alteration of a system
to re-constitute it in a new form.
Why do we need re-engineering?
Itis applicable when some subsystems of a larger systemrequire frequent
maintenance. Itinvolve putting in the effort to make it easier to maintain.
Software re-engineering andLegacy systems:
Legacy systems arethe old softwaresystems which areessential for the
business process support. Softwarere-engineering is concerned with re-
implementing legacy systems to make them moremaintainable. Itmay be
the viable way to ensurethat legacy systems can continue in service.
Advantages of software re-engineering:
Re-engineering a softwaresystems has two key advantages,
Reduced risk
As the softwaresystemis already exist, the risk is less as compared to
developing a new software.
Reduced cost
The cost of re-engineering is significantly less than the developing a
new softwaresystem.
Steps involvedinsoftware re-engineering:
I. Sourcecode translation
Itis a process of translating a sourcecode from one programming
language to another. The translated language may be the updated
version of the original language or a completely different language.
15. II. Reverseengineering
Itis the process of analyzing softwarewith the objective of recovering
It’s design and specification. The programitself is unchanged by the
reverseengineering process.
III. Programstructureimprovement
Itthe process of improving the structureof the programto optimize
memory useand the lack of understanding of s/w engineering.
IV. Program modularization
Itis the process of reorganizing a programso that related program
parts are collected together and considered as a single module.
Differenttypes of modules can be created,
a) Data abstractions
b) Hardwaremodules
c) Functional modules
d) Process supportmodules