Se (techniques for black box testing ppt)Mani Kanth
This document discusses techniques for black box testing software. It defines black box testing as testing software functionality without knowledge of its internal implementation or code structure. The techniques described are equivalence partitioning, boundary value analysis, state transition testing, graph-based testing, error guessing, and comparison testing. Equivalence partitioning divides inputs into classes based on similar outcomes to reduce test cases. Boundary value analysis focuses on edge cases rather than the full input range. State transition testing checks behavior changes between states with the same inputs. Graph-based testing visualizes the relationships between inputs and outputs. Error guessing leverages the tester's experience to find common mistakes. Comparison testing looks for differences between versions of the same software.
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 various black-box testing techniques. It introduces testing, verification, and validation. It then describes black-box and white-box testing. Various types of testing like unit, integration, functional, system, acceptance, regression, and beta testing are explained. Strategies for writing test cases like equivalence partitioning and boundary value analysis are provided. The document emphasizes the importance of planning testing early in the development process.
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.
A software process model is an abstract representation of a process that guides the coordination and control of tasks needed to develop software. Common models include waterfall, prototype, rapid application development, evolutionary development, incremental, iterative, spiral, and component-based development. The waterfall model involves sequential phases from requirements to maintenance without iteration. Iterative models allow for incremental development and feedback through multiple iterations. The spiral model combines iterative development with risk analysis through iterations called spirals.
This document discusses software coding standards and guidelines. It explains that coding standards provide rules for writing consistent, robust code that is easily understood. Coding transforms a system design into code and tests the code. Standards help ensure maintainability, adding new features, clean coding, and fewer errors. The document provides examples of coding standards like limiting global variables and naming conventions. It also discusses code reviews to find logical errors and oversights, as well as the importance of documentation for requirements, architecture, code, manuals, and marketing.
The document discusses various aspects of the software process including software process models, generic process models like waterfall model and evolutionary development, process iteration, and system requirements specification. It provides details on each topic with definitions, characteristics, advantages and diagrams. The key steps in software process are specified as software specifications, design and implementation, validation, and evolution. Generic process models and specific models like waterfall, evolutionary development, and incremental delivery are explained.
The document discusses 9 axioms or principles of software testing:
1. It is impossible to completely test a program due to the huge number of possible inputs, outputs, and paths through the code.
2. Software testing is a risk-based exercise where testers must prioritize testing based on risk to avoid high cost failures while releasing on schedule.
3. Testing can find bugs but cannot prove their absence, as undiscovered bugs may still exist.
This document discusses various topics related to software design including design principles, concepts, modeling, and architecture. It provides examples of class/data design, architectural design, interface design, and component design. Some key points discussed include:
- Software design creates representations and models that provide details on architecture, data structures, interfaces, and components needed to implement the system.
- Design concepts like abstraction, modularity, encapsulation, and information hiding are important to reduce complexity and improve design.
- Different types of design models include data/class design, architectural design, interface design, and component-level design.
- Good software architecture and design lead to systems that are more understandable, maintainable, and of higher quality.
Software Engineering (Introduction to Software Engineering)ShudipPal
Software engineering is concerned with all aspects of software production. It aims to develop software using systematic and disciplined approaches to reduce errors and costs. Some key challenges in software development are its high cost, difficulty delivering on time, and producing low quality software. Software engineering methods strive to address these challenges and produce software with attributes like maintainability, dependability, efficiency, usability and acceptability.
The document discusses software testing and provides definitions, purposes, and types of software testing. Some key points:
- Testing is defined as "the process of executing a program with the intent of finding errors." This is a more appropriate definition than ones focusing on demonstrating the absence of errors.
- Testing should be done because launching software without testing may lead to higher costs from bugs, especially for systems involving human safety. Earlier bug discovery and removal reduces costs.
- Testing requires developers to find errors in their own work, so many organizations separate development and testing roles.
- Complete testing of all possible inputs and paths is not possible due to their vast number. Techniques like boundary value analysis and worst-case
Reengineering including reverse & forward EngineeringMuhammad Chaudhry
The document discusses forward engineering and reverse engineering. Reverse engineering involves extracting design information from source code through activities like data and processing analysis. This helps understand the internal structure and functionality. Forward engineering applies modern principles to redevelop existing applications, extending their capabilities. It may involve migrating applications to new architectures like client-server or object-oriented models. Reverse engineering provides critical information for both maintenance and reengineering existing software.
1. The document discusses different types of software testing including manual testing, automation testing, black-box testing, white-box testing, grey-box testing, and different levels of testing like unit testing, integration testing, system testing, regression testing, and acceptance testing.
2. It provides details on when each type of testing is used and their objectives such as finding defects, ensuring quality, and meeting requirements.
3. The key types of testing covered include functional testing, which has sub-types like unit, integration, system, regression, and acceptance testing, and non-functional testing.
The document discusses software quality and achieving high quality software. It notes that software companies often deliver software with known bugs and that low quality software increases risks for developers and users. It also discusses the costs of quality and how management decisions impact quality. Achieving quality involves software engineering methods, project management techniques, quality control, and quality assurance. Reviews, testing, and validation are important parts of the quality process.
Aspect-Oriented Software Development (AOSD) is a programming methodology that addresses limitations in object-oriented programming for modularizing cross-cutting concerns. AOSD uses aspects to encapsulate cross-cutting concerns so they can be separated from the core functionality. Aspects are automatically incorporated into the system by a weaver. This improves modularity and makes software easier to maintain and evolve over time.
This ppt describes about the bug.. and how bugs provide clues for debugging in software? , What will be consider in debugging a software? Debugging strategies and automatic debugging. The ppt prepared based on examination point of view for software engineering subject
Software project planning involves defining roles and responsibilities, ensuring work aligns with business objectives, and checking schedules and requirements feasibility. It requires risk analysis, tracking the project plan, and meeting quality standards. Issues can include unclear requirements, time/budget mismanagement, personnel problems, and lack of management support. Key activities are identifying requirements, estimating costs/risks, preparing a project charter and plan, and commencing the project. The master schedule summarizes deliverables and milestones based on a master project plan and detailed work schedules.
Black box testing is a software testing technique where the internal structure and implementation of the system is not known. It focuses on validating the functionality of the system based on requirements and specifications. Some key techniques of black box testing include equivalence partitioning, boundary value analysis, and error guessing. Equivalence partitioning divides test cases into equivalence classes based on expected behavior. Boundary value analysis tests values at the boundaries of equivalence classes. Error guessing involves creating test cases based on intuition about potential errors. Black box testing is applied at various levels including unit, integration, system, and non-functional testing.
The document discusses Object Oriented Design and Analysis using the Rational Unified Process (RUP). RUP is an iterative software development process framework for building object-oriented systems. It is comprised of four phases - Inception, Elaboration, Construction, and Transition. Within each phase are iterative cycles of requirements analysis, design, implementation, testing and feedback. The goal is to produce high-quality software that meets user needs within schedule and budget.
The document provides an overview of the Software Development Life Cycle (SDLC) including its various stages and models. The key points are:
1. SDLC is a process that consists of planning, analysis, design, implementation, testing, deployment, and maintenance phases to develop and maintain software.
2. The stages include planning, requirements analysis, design, development, testing, deployment, and maintenance.
3. Common models include waterfall, iterative, spiral, V-model, and agile. Waterfall is the earliest and most basic sequential model while iterative and agile are more flexible to changing requirements.
This document discusses key software design principles:
1. Modularization, abstraction, and encapsulation aim to break down a system into independent and cohesive modules that hide unnecessary details.
2. Coupling and cohesion measure the interdependence between modules - loose coupling and high cohesion where related code is grouped together are ideal.
3. Other principles like separation of interface and implementation, sufficiency, and completeness focus on defining clean interfaces and providing only necessary functionality. The document provides examples and comparisons to explain these fundamental software design concepts.
This document provides an introduction to software engineering. It outlines the course objectives, which are to enhance understanding of software engineering methods, techniques for developing software systems, object-oriented concepts, and software testing approaches. On completing the course, students will be able to understand basic software engineering concepts, apply engineering models to develop applications, implement object-oriented design, conduct in-depth analysis for projects, and design new software projects using learned concepts. The document also defines software and its characteristics, different software types, and provides overviews of software engineering, methods, processes, tools, and process models like waterfall.
The document discusses software measurement and metrics. It defines software measurement as quantifying attributes of software products and processes. Metrics are used to measure software quality levels. There are different types of metrics including product, process, and project metrics. Common software metrics include lines of code, function points, and complexity measures. Metrics should be quantitative, understandable, repeatable, and economical to compute.
The Top Ten things that have been proven to effect software reliabilityAnn Marie Neufelder
The document discusses Ann Marie Neufelder's background and expertise in software reliability. It then lists the top 10 factors actually associated with unreliable software based on benchmarking 679 development factors against actual defect data from 149 software projects. The factors focus on avoiding large releases and teams, mandatory developer testing, techniques that aid requirements and defect analysis, understanding end users, and avoiding skipped processes. The document provides context on the benchmarking methodology used to determine the top factors.
This document discusses software maintenance. It defines software maintenance as the modification of a software product after delivery to correct faults, improve performance, or adapt to changes. Approximately 40-70% of software costs are for maintenance over the 5-10 year lifespan of a product. Maintenance includes correcting errors, enhancing capabilities, removing obsolete features, and optimizing performance. The goals of maintenance are to fix bugs, enhance functionality, update the software, and adapt it to environmental changes. The majority of maintenance work is perfective and adaptive in nature. The document outlines best practices for development and management to improve maintainability.
The document discusses several software process models:
- The Linear Sequential (Waterfall) Model is a simple, systematic approach where each phase must be completed before moving to the next. It is best for small, well-defined projects.
- The Incremental Model applies the Linear Sequential Model iteratively to increments, delivering working software in stages. This allows for early delivery and flexibility.
- The Prototyping Model involves building prototypes to refine requirements through client feedback in iterations. This helps establish clear objectives.
- Rapid Application Development (RAD) is a fast version of the Linear Sequential Model using a component-based approach to accelerate delivery of fully functional projects.
The document provides an overview of an introduction to software engineering course. It discusses the course objectives which are to learn about difficulties in software development, different software processes, designing high-quality software, and advanced software engineering methods. The course contents are then listed, covering topics like requirements engineering, software design, testing, and project management. It also discusses the software crisis and reasons for poor project outcomes like misunderstanding software as just programming and lack of engineering practices.
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.
This document discusses various topics related to software design including design principles, concepts, modeling, and architecture. It provides examples of class/data design, architectural design, interface design, and component design. Some key points discussed include:
- Software design creates representations and models that provide details on architecture, data structures, interfaces, and components needed to implement the system.
- Design concepts like abstraction, modularity, encapsulation, and information hiding are important to reduce complexity and improve design.
- Different types of design models include data/class design, architectural design, interface design, and component-level design.
- Good software architecture and design lead to systems that are more understandable, maintainable, and of higher quality.
Software Engineering (Introduction to Software Engineering)ShudipPal
Software engineering is concerned with all aspects of software production. It aims to develop software using systematic and disciplined approaches to reduce errors and costs. Some key challenges in software development are its high cost, difficulty delivering on time, and producing low quality software. Software engineering methods strive to address these challenges and produce software with attributes like maintainability, dependability, efficiency, usability and acceptability.
The document discusses software testing and provides definitions, purposes, and types of software testing. Some key points:
- Testing is defined as "the process of executing a program with the intent of finding errors." This is a more appropriate definition than ones focusing on demonstrating the absence of errors.
- Testing should be done because launching software without testing may lead to higher costs from bugs, especially for systems involving human safety. Earlier bug discovery and removal reduces costs.
- Testing requires developers to find errors in their own work, so many organizations separate development and testing roles.
- Complete testing of all possible inputs and paths is not possible due to their vast number. Techniques like boundary value analysis and worst-case
Reengineering including reverse & forward EngineeringMuhammad Chaudhry
The document discusses forward engineering and reverse engineering. Reverse engineering involves extracting design information from source code through activities like data and processing analysis. This helps understand the internal structure and functionality. Forward engineering applies modern principles to redevelop existing applications, extending their capabilities. It may involve migrating applications to new architectures like client-server or object-oriented models. Reverse engineering provides critical information for both maintenance and reengineering existing software.
1. The document discusses different types of software testing including manual testing, automation testing, black-box testing, white-box testing, grey-box testing, and different levels of testing like unit testing, integration testing, system testing, regression testing, and acceptance testing.
2. It provides details on when each type of testing is used and their objectives such as finding defects, ensuring quality, and meeting requirements.
3. The key types of testing covered include functional testing, which has sub-types like unit, integration, system, regression, and acceptance testing, and non-functional testing.
The document discusses software quality and achieving high quality software. It notes that software companies often deliver software with known bugs and that low quality software increases risks for developers and users. It also discusses the costs of quality and how management decisions impact quality. Achieving quality involves software engineering methods, project management techniques, quality control, and quality assurance. Reviews, testing, and validation are important parts of the quality process.
Aspect-Oriented Software Development (AOSD) is a programming methodology that addresses limitations in object-oriented programming for modularizing cross-cutting concerns. AOSD uses aspects to encapsulate cross-cutting concerns so they can be separated from the core functionality. Aspects are automatically incorporated into the system by a weaver. This improves modularity and makes software easier to maintain and evolve over time.
This ppt describes about the bug.. and how bugs provide clues for debugging in software? , What will be consider in debugging a software? Debugging strategies and automatic debugging. The ppt prepared based on examination point of view for software engineering subject
Software project planning involves defining roles and responsibilities, ensuring work aligns with business objectives, and checking schedules and requirements feasibility. It requires risk analysis, tracking the project plan, and meeting quality standards. Issues can include unclear requirements, time/budget mismanagement, personnel problems, and lack of management support. Key activities are identifying requirements, estimating costs/risks, preparing a project charter and plan, and commencing the project. The master schedule summarizes deliverables and milestones based on a master project plan and detailed work schedules.
Black box testing is a software testing technique where the internal structure and implementation of the system is not known. It focuses on validating the functionality of the system based on requirements and specifications. Some key techniques of black box testing include equivalence partitioning, boundary value analysis, and error guessing. Equivalence partitioning divides test cases into equivalence classes based on expected behavior. Boundary value analysis tests values at the boundaries of equivalence classes. Error guessing involves creating test cases based on intuition about potential errors. Black box testing is applied at various levels including unit, integration, system, and non-functional testing.
The document discusses Object Oriented Design and Analysis using the Rational Unified Process (RUP). RUP is an iterative software development process framework for building object-oriented systems. It is comprised of four phases - Inception, Elaboration, Construction, and Transition. Within each phase are iterative cycles of requirements analysis, design, implementation, testing and feedback. The goal is to produce high-quality software that meets user needs within schedule and budget.
The document provides an overview of the Software Development Life Cycle (SDLC) including its various stages and models. The key points are:
1. SDLC is a process that consists of planning, analysis, design, implementation, testing, deployment, and maintenance phases to develop and maintain software.
2. The stages include planning, requirements analysis, design, development, testing, deployment, and maintenance.
3. Common models include waterfall, iterative, spiral, V-model, and agile. Waterfall is the earliest and most basic sequential model while iterative and agile are more flexible to changing requirements.
This document discusses key software design principles:
1. Modularization, abstraction, and encapsulation aim to break down a system into independent and cohesive modules that hide unnecessary details.
2. Coupling and cohesion measure the interdependence between modules - loose coupling and high cohesion where related code is grouped together are ideal.
3. Other principles like separation of interface and implementation, sufficiency, and completeness focus on defining clean interfaces and providing only necessary functionality. The document provides examples and comparisons to explain these fundamental software design concepts.
This document provides an introduction to software engineering. It outlines the course objectives, which are to enhance understanding of software engineering methods, techniques for developing software systems, object-oriented concepts, and software testing approaches. On completing the course, students will be able to understand basic software engineering concepts, apply engineering models to develop applications, implement object-oriented design, conduct in-depth analysis for projects, and design new software projects using learned concepts. The document also defines software and its characteristics, different software types, and provides overviews of software engineering, methods, processes, tools, and process models like waterfall.
The document discusses software measurement and metrics. It defines software measurement as quantifying attributes of software products and processes. Metrics are used to measure software quality levels. There are different types of metrics including product, process, and project metrics. Common software metrics include lines of code, function points, and complexity measures. Metrics should be quantitative, understandable, repeatable, and economical to compute.
The Top Ten things that have been proven to effect software reliabilityAnn Marie Neufelder
The document discusses Ann Marie Neufelder's background and expertise in software reliability. It then lists the top 10 factors actually associated with unreliable software based on benchmarking 679 development factors against actual defect data from 149 software projects. The factors focus on avoiding large releases and teams, mandatory developer testing, techniques that aid requirements and defect analysis, understanding end users, and avoiding skipped processes. The document provides context on the benchmarking methodology used to determine the top factors.
This document discusses software maintenance. It defines software maintenance as the modification of a software product after delivery to correct faults, improve performance, or adapt to changes. Approximately 40-70% of software costs are for maintenance over the 5-10 year lifespan of a product. Maintenance includes correcting errors, enhancing capabilities, removing obsolete features, and optimizing performance. The goals of maintenance are to fix bugs, enhance functionality, update the software, and adapt it to environmental changes. The majority of maintenance work is perfective and adaptive in nature. The document outlines best practices for development and management to improve maintainability.
The document discusses several software process models:
- The Linear Sequential (Waterfall) Model is a simple, systematic approach where each phase must be completed before moving to the next. It is best for small, well-defined projects.
- The Incremental Model applies the Linear Sequential Model iteratively to increments, delivering working software in stages. This allows for early delivery and flexibility.
- The Prototyping Model involves building prototypes to refine requirements through client feedback in iterations. This helps establish clear objectives.
- Rapid Application Development (RAD) is a fast version of the Linear Sequential Model using a component-based approach to accelerate delivery of fully functional projects.
The document provides an overview of an introduction to software engineering course. It discusses the course objectives which are to learn about difficulties in software development, different software processes, designing high-quality software, and advanced software engineering methods. The course contents are then listed, covering topics like requirements engineering, software design, testing, and project management. It also discusses the software crisis and reasons for poor project outcomes like misunderstanding software as just programming and lack of engineering practices.
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.
This document discusses the differences between requirement engineers and architects in the software engineering field. It aims to clarify misconceptions about their roles by outlining their different responsibilities and job profiles. The document begins by describing requirement engineers and architects, examining their roles and tasks. It looks at similarities and differences between the profiles, as well as other related job roles. The conclusion provides insights gained from comparing requirement engineers and architects.
This document discusses the differences between requirements engineers and architects in software engineering. It aims to clarify misconceptions about their roles by listing the differences in their responsibilities, job profiles, and skills. The document will examine what tasks each profile performs, any differences and similarities between them, and take a brief look at other related profiles. It concludes by providing insights gained from comparing requirements engineers and architects.
This document provides an overview of the Software Engineering for BS(IT) course. The course objectives are to introduce important concepts like software development models, project management, and the software development lifecycle. The course outline covers topics such as requirement engineering, software design, testing, and project management. It aims to teach students how to develop high-quality software using systematic and disciplined engineering practices.
This document provides an overview of basic concepts in software engineering. It discusses that computer science focuses on theory while software engineering focuses on practical development and delivery. The software process involves activities like specification, development, validation and evolution. Process models represent the software process from different perspectives. Roughly 60% of costs are development costs and 40% are testing costs, with evolution costs often exceeding development costs. Structured approaches to software development include models, rules, recommendations and process guidance. CASE tools provide automated support for software process activities. Good software should have required functionality and be maintainable, dependable, usable and efficient. Professional responsibilities include behaving ethically and upholding principles like confidentiality, competence, intellectual property rights and avoiding computer misuse
Teknokrat_Auliya Rahman has scheduled a Zoom meeting for the RPL IF 21 B topic on February 21, 2023 at 01:30 PM Bangkok time. The meeting ID is 762 2247 5615 and passcode is 123. Students are required to have their cameras on, dress appropriately, mute their microphones except during discussions and pay full attention to the materials presented. Other activities are prohibited during the meeting unless permitted by the instructor.
This document contains a lecture on software engineering from Dr. Syed Ali Raza. It discusses key topics like the Standish Report, different types of software, challenges in the field, and the importance of ethics. It also summarizes problem-solving approaches and common myths about both developing and managing software projects.
This document introduces software engineering and discusses its importance, key questions, topics covered, and professional and ethical responsibilities. It defines software engineering, explains common questions about the field, and outlines important concepts like the software development process, methods, costs, challenges, and a code of ethics.
This document provides an introduction to software engineering, including its objectives, topics covered, and answers to frequently asked questions. It discusses what software engineering is, costs associated with software, and differences between software engineering, computer science, and system engineering. It also covers software processes, methods, challenges, and the importance of professional responsibility and ethics in software engineering.
Software engineering is concerned with theories, methods and tools for professional software development. It aims to introduce software engineering and explain its importance, key questions, and ethical and professional issues. Topics covered include FAQs about software engineering, professional responsibility, and a code of ethics.
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.
The document describes a course on software engineering taught by Dr. P. Visu at Velammal Engineering College. It includes the course objectives, outcomes, syllabus, and learning resources. The key objectives are to understand software processes, requirements engineering, object-oriented concepts, software design, testing, and project management techniques. The syllabus covers topics like software processes, requirements analysis, object-oriented concepts, software design, testing, and project management over 5 units. Recommended textbooks and online references are also provided.
Introduction to Software Engineering, Software Process, Perspective and Specialized Process Models – Introduction to Agility – Agile process – Extreme programming – XP process - Estimation-FP,LOC and COCOMO I and II,Risk Management, Project Scheduling.
The document discusses software testing and its importance in software engineering. It notes that software testing is used to examine software quality and ensure it meets desired outputs. While there are several testing methods, efficiently testing complex software requires a thorough investigation process rather than just following a procedure or method. Testing complex software always poses challenges for testers, such as what the best testing strategy should be. Selecting an appropriate strategy is an important decision.
This document discusses 15 factors that influence quality and productivity in software development processes: individual ability, team communication, product complexity, appropriate notations, systematic approaches, change control, level of technology, level of reliability, problem understanding, available time, required skills, facilities and resources, adequacy of training, management skills, and appropriate goals. Each factor is described in 1-3 paragraphs on how it can impact quality and productivity.
The document provides information about a course on software engineering taught by Dr. P. Visu at Velammal Engineering College. It includes the course objectives, outcomes, syllabus, textbooks and references. The objectives are to understand software project phases, requirements engineering, object-oriented concepts, enterprise integration and various testing and project management techniques. The outcomes cover comparing process models, formulating requirements engineering concepts, understanding object-oriented fundamentals, applying software design systematically, and evaluating project schedules and costs. The syllabus covers topics like software processes, requirements analysis, object-oriented concepts, software design, and testing and management over 5 units.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
This document discusses various indexing techniques used to improve the performance of data retrieval from large databases. It begins by explaining the need for indexing to enable fast searching of large amounts of data. Then it describes several conventional indexing techniques including dense indexing, sparse indexing, and B-tree indexing. It also covers special indexing structures like inverted indexes, bitmap indexes, cluster indexes, and join indexes. The goal of indexing is to reduce the number of disk accesses needed to find relevant records by creating data structures that map attribute values to locations in storage.
This document discusses different types of dimension tables commonly used in data warehouses. It describes slowly changing dimensions, rapidly changing dimensions, junk dimensions, inferred dimensions, conformed dimensions, degenerate dimensions, role playing dimensions, shrunken dimensions, and static dimensions. Dimension tables contain attributes and keys that provide context about measures in fact tables.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
This document discusses denormalization techniques used in data warehousing to improve query performance. It explains that while normalization is important for databases, denormalization can enhance performance in data warehouses where queries are frequent and updates are less common. Some key denormalization techniques covered include collapsing tables, splitting tables horizontally or vertically, pre-joining tables, adding redundant columns, and including derived attributes. Guidelines for when and how to apply denormalization carefully are also provided.
Data Warehousing and Business Intelligence is one of the hottest skills today, and is the cornerstone for reporting, data science, and analytics. This course teaches the fundamentals with examples plus a project to fully illustrate the concepts.
The document provides an introduction to data warehouses. It defines a data warehouse as a complete repository of historical corporate data extracted from transaction systems and made available for ad-hoc querying by knowledge workers. It discusses how data warehouses differ from transaction systems in integrating data from multiple sources, storing historical data, and supporting analysis rather than transactions. The document also compares characteristics of data warehousing to online transaction processing.
This document outlines an introductory session on data warehousing. It introduces the course instructor and participants. The course topics include introduction and background, de-normalization, online analytical processing, dimensional modeling, extract-transform-load, data quality management, and data mining. Students are advised to attend class, strive to learn, be on time, pay attention, ask questions, be prepared, and not use phones or eat in class. The goal is for students to understand database concepts in very large databases and data warehouses.
Multi-currency in odoo accounting and Update exchange rates automatically in ...Celine George
Most business transactions use the currencies of several countries for financial operations. For global transactions, multi-currency management is essential for enabling international trade.
How to manage Multiple Warehouses for multiple floors in odoo point of saleCeline George
The need for multiple warehouses and effective inventory management is crucial for companies aiming to optimize their operations, enhance customer satisfaction, and maintain a competitive edge.
K12 Tableau Tuesday - Algebra Equity and Access in Atlanta Public Schoolsdogden2
Algebra 1 is often described as a “gateway” class, a pivotal moment that can shape the rest of a student’s K–12 education. Early access is key: successfully completing Algebra 1 in middle school allows students to complete advanced math and science coursework in high school, which research shows lead to higher wages and lower rates of unemployment in adulthood.
Learn how The Atlanta Public Schools is using their data to create a more equitable enrollment in middle school Algebra classes.
Geography Sem II Unit 1C Correlation of Geography with other school subjectsProfDrShaikhImran
The correlation of school subjects refers to the interconnectedness and mutual reinforcement between different academic disciplines. This concept highlights how knowledge and skills in one subject can support, enhance, or overlap with learning in another. Recognizing these correlations helps in creating a more holistic and meaningful educational experience.
How to Manage Opening & Closing Controls in Odoo 17 POSCeline George
In Odoo 17 Point of Sale, the opening and closing controls are key for cash management. At the start of a shift, cashiers log in and enter the starting cash amount, marking the beginning of financial tracking. Throughout the shift, every transaction is recorded, creating an audit trail.
Understanding P–N Junction Semiconductors: A Beginner’s GuideGS Virdi
Dive into the fundamentals of P–N junctions, the heart of every diode and semiconductor device. In this concise presentation, Dr. G.S. Virdi (Former Chief Scientist, CSIR-CEERI Pilani) covers:
What Is a P–N Junction? Learn how P-type and N-type materials join to create a diode.
Depletion Region & Biasing: See how forward and reverse bias shape the voltage–current behavior.
V–I Characteristics: Understand the curve that defines diode operation.
Real-World Uses: Discover common applications in rectifiers, signal clipping, and more.
Ideal for electronics students, hobbyists, and engineers seeking a clear, practical introduction to P–N junction semiconductors.
The Pala kings were people-protectors. In fact, Gopal was elected to the throne only to end Matsya Nyaya. Bhagalpur Abhiledh states that Dharmapala imposed only fair taxes on the people. Rampala abolished the unjust taxes imposed by Bhima. The Pala rulers were lovers of learning. Vikramshila University was established by Dharmapala. He opened 50 other learning centers. A famous Buddhist scholar named Haribhadra was to be present in his court. Devpala appointed another Buddhist scholar named Veerdeva as the vice president of Nalanda Vihar. Among other scholars of this period, Sandhyakar Nandi, Chakrapani Dutta and Vajradatta are especially famous. Sandhyakar Nandi wrote the famous poem of this period 'Ramcharit'.
The *nervous system of insects* is a complex network of nerve cells (neurons) and supporting cells that process and transmit information. Here's an overview:
Structure
1. *Brain*: The insect brain is a complex structure that processes sensory information, controls behavior, and integrates information.
2. *Ventral nerve cord*: A chain of ganglia (nerve clusters) that runs along the insect's body, controlling movement and sensory processing.
3. *Peripheral nervous system*: Nerves that connect the central nervous system to sensory organs and muscles.
Functions
1. *Sensory processing*: Insects can detect and respond to various stimuli, such as light, sound, touch, taste, and smell.
2. *Motor control*: The nervous system controls movement, including walking, flying, and feeding.
3. *Behavioral responThe *nervous system of insects* is a complex network of nerve cells (neurons) and supporting cells that process and transmit information. Here's an overview:
Structure
1. *Brain*: The insect brain is a complex structure that processes sensory information, controls behavior, and integrates information.
2. *Ventral nerve cord*: A chain of ganglia (nerve clusters) that runs along the insect's body, controlling movement and sensory processing.
3. *Peripheral nervous system*: Nerves that connect the central nervous system to sensory organs and muscles.
Functions
1. *Sensory processing*: Insects can detect and respond to various stimuli, such as light, sound, touch, taste, and smell.
2. *Motor control*: The nervous system controls movement, including walking, flying, and feeding.
3. *Behavioral responses*: Insects can exhibit complex behaviors, such as mating, foraging, and social interactions.
Characteristics
1. *Decentralized*: Insect nervous systems have some autonomy in different body parts.
2. *Specialized*: Different parts of the nervous system are specialized for specific functions.
3. *Efficient*: Insect nervous systems are highly efficient, allowing for rapid processing and response to stimuli.
The insect nervous system is a remarkable example of evolutionary adaptation, enabling insects to thrive in diverse environments.
The insect nervous system is a remarkable example of evolutionary adaptation, enabling insects to thrive
This chapter provides an in-depth overview of the viscosity of macromolecules, an essential concept in biophysics and medical sciences, especially in understanding fluid behavior like blood flow in the human body.
Key concepts covered include:
✅ Definition and Types of Viscosity: Dynamic vs. Kinematic viscosity, cohesion, and adhesion.
⚙️ Methods of Measuring Viscosity:
Rotary Viscometer
Vibrational Viscometer
Falling Object Method
Capillary Viscometer
🌡️ Factors Affecting Viscosity: Temperature, composition, flow rate.
🩺 Clinical Relevance: Impact of blood viscosity in cardiovascular health.
🌊 Fluid Dynamics: Laminar vs. turbulent flow, Reynolds number.
🔬 Extension Techniques:
Chromatography (adsorption, partition, TLC, etc.)
Electrophoresis (protein/DNA separation)
Sedimentation and Centrifugation methods.
GDGLSPGCOER - Git and GitHub Workshop.pptxazeenhodekar
This presentation covers the fundamentals of Git and version control in a practical, beginner-friendly way. Learn key commands, the Git data model, commit workflows, and how to collaborate effectively using Git — all explained with visuals, examples, and relatable humor.
pulse ppt.pptx Types of pulse , characteristics of pulse , Alteration of pulsesushreesangita003
what is pulse ?
Purpose
physiology and Regulation of pulse
Characteristics of pulse
factors affecting pulse
Sites of pulse
Alteration of pulse
for BSC Nursing 1st semester
for Gnm Nursing 1st year
Students .
vitalsign
INTRO TO STATISTICS
INTRO TO SPSS INTERFACE
CLEANING MULTIPLE CHOICE RESPONSE DATA WITH EXCEL
ANALYZING MULTIPLE CHOICE RESPONSE DATA
INTERPRETATION
Q & A SESSION
PRACTICAL HANDS-ON ACTIVITY
2. Today is Introductory Session
Today’s Agenda
Resource Person
Participants
Course
Federal Urdu University of Arts, Sciences & Technology, Islamabad
4. Introduction of Participants
Name
Previous qualification & experties
Courses studies in area of SE & Programming
Expectations from this course
Federal Urdu University of Arts, Sciences & Technology, Islamabad
5. How to be successful in my class
1. Come to class
2. Strive to learn
3. Be on time for class
4. Pay attention in class. Ask questions.
5. If you don’t understand a topic and/or don’t understand why it’s
relevant, ASK.
6. Be prepared to answer questions in class (Revise Previous
lectures).
7. Play fair
8. DO NOT walk out of class during a class
9. Be respectful
10. As corny as this sounds, try to have some fun in learning this
stuff.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
6. Course Profile
Credit Hours: 03
Evaluation Criteria
Survey Report 05%
Presentation 05%
Assignments/Quiz 10%
Mid term 30%
Final exam 50%
Federal Urdu University of Arts, Sciences & Technology, Islamabad
8. 8
Course Objectives
To learn about all the difficulties in developing
software so that we can avoid pitfalls and
myths in software design
To learn about different software processes
so that we can choose a suitable one
To learn to design high-quality efficient
software so that it is usable and maintainable
To learn about advanced methods for
software engineering
Federal Urdu University of Arts, Sciences & Technology, Islamabad
9. 9
Chapter 1
Introduction to Software
Engineering
An overview of software engineering, types
of software, ethics for software engineers,
challenges facing to software engineering,
software crisis, myths, methods, evolution.
10. 10
Contents
What is Software & its Importance
Types of Software
Software Crisis & Software Myths
What is Software Engineering
Evolution of Software Engineering
State-of-art in Software Engineering
Federal Urdu University of Arts, Sciences & Technology, Islamabad
Recommended Text Book;
Software Engineering: Seventh Edition (Ian Sommervill)
11. 11
What is Software?
Software is a set of items or objects
that form a “configuration” that
includes
• programs
• documents
• data ...
(“Software Engineering- a practitioner’s
approach,” Pressman, 5ed. McGraw-Hill)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
12. 12
What is Software (ctd.)?
Or you may want to say:
Software consists of
(1) instructions (computer programs) that when
executed provided desired function and performance,
(2) data structures that enable the programs to
adequately manipulate information, and
(3) documents that describe the operation and use of
the programs.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
13. 13
What is Software (ctd.)?
But these are only the concrete part of software that
may be seen, there exists also invisible part which is
more important:
Software is the dynamic behavior of programs on real
computers and auxiliary equipment.
“… a software product is a model of the real world, and the
real world is constantly changing.”
Software is a digital form of knowledge. (“Software
Engineering,” 7ed. Sommerville, Addison-Wesley, 2000)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
14. 14
The statistics – Chaos Report
Project completion
16%
31%
53%
On time, on budget,
with all of the specified
features and functions
Cancelled before they
were completed
delivered and
operational but over-
budget, over-schedule
or with fewer features
and functions than
specified
Standish Group – 1995
365 IT executives in US
companies in diverse industry
segments.
8,380 projects
average cost
overrun = 189%
average
time
overrun =
222%.
61% of originally specified
features included
?
In Averages
• 189% of original budget
• 221% of original schedule
• 61% of original functionality
Federal Urdu University of Arts, Sciences & Technology, Islamabad
15. 15
Symptom of Software Crisis
About US$250 billions spent per year in the
US on application development
Out of this, about US$140 billions wasted
due to the projects getting abandoned or
reworked; this in turn because of not
following best practices and standards
Ref: Standish Group, 1996
Federal Urdu University of Arts, Sciences & Technology, Islamabad
16. 16
Symptom of Software Crisis
10% of client/server apps are abandoned or
restarted from scratch
20% of apps are significantly altered to avoid
disaster
40% of apps are delivered significantly late
Source: 3 year study of 70 large c/s apps 30 European firms.
Compuware (12/95)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
17. 17
Software products:
fail to meet user requirements
crash frequently
expensive
difficult to alter, debug, enhance
often delivered late
Observed Problems
Federal Urdu University of Arts, Sciences & Technology, Islamabad
18. 18
Why is the Statistics so Bad?
Misconception on software development
Software myths, e.g., the man-month myth
False assumptions
Not distinguishing the coding of a computer program
from the development of a software product
Software programs have exponential growth in
complexity and difficulty level with respect to size.
The ad hoc approach breaks down when size of
software increases.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
19. 19
Why is the Statistics so Bad?
Software professionals lack engineering
training
Programmers have skills for programming
but without the engineering mindset about a
process discipline
Internal complexities
Essences and accidents made by Fred.
Brooks
Federal Urdu University of Arts, Sciences & Technology, Islamabad
20. 20
How is Software usually Constructed …
The requirements
specification was
defined like this
The developers
understood it in
that way
This is how the
problem was
solved before.
This is how the
problem is
solved now
That is the program
after debugging
This is how the program is
described by marketing dept.
This, in fact, is what the
customer wanted … ;-)
21. 21
Software Myths
(Customer Perspectives)
A general statement of objectives is sufficient to get
started with the development of software.
Missing/vague requirements can easily be
incorporated/detailed out as they get concretized.
Application requirements can never be stable;
software can be and has to be made flexible enough
to allow changes to be incorporated as they happen.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
22. 22
Software Myths
(Developer Perspectives)
Once the software is demonstrated, the job is done.
Usually, the problems just begin!
Federal Urdu University of Arts, Sciences & Technology, Islamabad
23. 23
Until the software is coded and is available for testing,
there is no way for assessing its quality.
Usually, there are too many
tiny bugs inserted at every stage
that grow in size and complexity
as they progress thru further stages!
Software Myths
(Developer Perspectives)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
24. 24
The only deliverable for a software
development project is the tested code.
The code is only
the externally visible component
of the entire software complement!
Software Myths
(Developer Perspectives)
25. 25
Software Myths
(Management Perspectives)
As long as there are good standards and clear procedures in my
company, I shouldn’t be too concerned.
But the proof of the pudding
is in the eating;
not in the Recipe !
Federal Urdu University of Arts, Sciences & Technology, Islamabad
26. 26
Software Myths
(Management Perspectives)
As long as my software engineers(!) have access to the fastest
and the most sophisticated computer environments and state-
of-the-art software tools, I shouldn’t be too concerned.
The environment is
only one of the several factors
that determine the quality
of the end software product!
Federal Urdu University of Arts, Sciences & Technology, Islamabad
27. 27
Software Myths
(Management Perspectives)
When my schedule slips, what I have to do is to start a
fire-fighting operation: add more software specialists,
those with higher skills and longer experience - they
will bring the schedule back on the rails!
Unfortunately,
software business does not
entertain schedule compaction
beyond a limit!
Federal Urdu University of Arts, Sciences & Technology, Islamabad
28. 28
Misplaced Assumptions
All requirements can be pre-specified
Users are experts at specification of their
needs
Users and developers are both good at
visualization
The project team is capable of unambiguous
communication
Ref: Larry Vaughn
Federal Urdu University of Arts, Sciences & Technology, Islamabad
29. 29
Types of Software
Software has mainly divided into two
Categories:
System software
Systems software includes the programs that are dedicated to
managing the computer itself, such as the operating system.
Application software
Application software, or simply applications, are often called
productivity programs or end-user programs because they enable
the user to complete tasks, such as creating documents
specific to the task it is designed e.g. word processing software
Federal Urdu University of Arts, Sciences & Technology, Islamabad
30. 30
Usually small in size
Author himself is sole
user
Single developer
Lacks proper user
interface
Lacks proper
documentation
Ad hoc development.
Large
Large number of
users
Team of developers
Well-designed
interface
Well documented &
user-manual prepared
Systematic development
Programs Software Products
Confused with Programs and Products
Federal Urdu University of Arts, Sciences & Technology, Islamabad
31. 31
Deterioration: To grow worse; to be
impaired in quality e.g. Road Structure
Changes in software development on the later stages,
make the structure worse.
Wear-out : Get tired through overuse e.g.
Bath Tub Curve
Wear Out vs Deterioration
Federal Urdu University of Arts, Sciences & Technology, Islamabad
32. Wear Out vs Deterioration
32
Software doesn’t Wear-out the hardware begins to Wear-
out with time
Software becomes reliable our time, not a physical identity.
Bath Tub Curve
Federal Urdu University of Arts, Sciences & Technology, Islamabad
33. 33
What is Software Engineering?
Different focuses for this term exist in various
textbooks. Some are listed below.
The application of a systematic, disciplined,
quantifiable approach to development, operation,
and maintenance of software; that is, the
application of engineering to software. (IEEE
Standard Computer Dictionary, 610.12, ISBN 1-
55937-079-3, 1990)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
34. 34
What is Software Engineering? (ctd)
Software engineering is concerned with the theories,
methods and tools for developing, managing and
evolving software products. (I. Sommerville, 6ed.)
A discipline whose aim is the production of quality
software, delivered on time, within budget, and
satisfying users' needs. (Stephen R. Schach,
Software Engineering, 2ed.)
Multi-person construction of multi-version software
(Parnas, 1987)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
35. 35
The practical application of scientific knowledge in
the design and construction of computer programs
and the associated documentation required to
develop, operate and maintain them (B.W. Boehm)
The establishment and use of sound engineering
principles in order to obtain economically software
that is reliable and works efficiently on real
machines (F.L. Bauer)
What is Software Engineering? (ctd.)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
36. 36
The technological and managerial discipline
concerned with systematic production and
maintenance of software products that are
developed and modified on time and within cost
constraints (R. Fairley)
A discipline that deals with the building of software
systems which are so large that they are built by a
team or teams of engineers (Ghezzi, Jazayeri,
Mandrioli)
What is Software Engineering? (ctd.)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
37. 37
Casting the Term
The field of software engineering was born in NATO
Conferences, 1968 in response to chronic failures
of large software projects to meet schedule and
budget constraints
Since then, term became popular because software
is getting more and more important to industry and
business but the “software crisis” still persists.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
38. 38
Other Definitions of Software
Engineering
“A systematic approach to the analysis, design,
implementation and maintenance of software.” (The Free
On-Line Dictionary of Computing)
“The systematic application of tools and techniques in
the development of computer-based applications.” (Sue
Conger in The New Software Engineering)
“Software Engineering is about designing and
developing high-quality software.” (Shari Lawrence
Pfleeger in Software Engineering -- The Production of
Quality Software)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
39. 39
So, Software Engineering is …
Scope
study of software process, development
principles, techniques, and notations
Goals
production of quality software,
delivered on time,
within budget,
satisfying customers’ requirements and users’
needs
Federal Urdu University of Arts, Sciences & Technology, Islamabad
40. 40
Software Programming ≠ Software
Engineering
Software programming: the process of translating a problem from
its physical environment into a language that a computer can
understand and obey. (Webster’s New World Dictionary of
Computer Terms)
Single developer
“Toy” applications
Short lifespan
Single or few stakeholders
Architect = Developer = Manager = Tester = Customer = User
One-of-a-kind systems
Built from scratch
Minimal maintenance
Federal Urdu University of Arts, Sciences & Technology, Islamabad
41. 41
Software Programming ≠ Software
Engineering
Software engineering
Teams of developers with multiple roles
Complex systems
Indefinite lifespan
Numerous stakeholders
Architect ≠ Developer ≠ Manager ≠ Tester ≠ Customer ≠ User
System families
Reuse to amortize costs
Maintenance accounts for over 60% of overall development
costs
Federal Urdu University of Arts, Sciences & Technology, Islamabad
42. 42
Unique Characteristics of Software
Software is malleable
Software construction is human-intensive
Software is intangible and hard to measure
Software problems are usually complex
Software directly depends upon the hardware
It is at the top of the system engineering “food chain”
Software doesn’t wear out but will deteriorate
Software solutions require unusual rigor
Software has discontinuous operational nature
Federal Urdu University of Arts, Sciences & Technology, Islamabad
43. Engineering vs Manufacturing
43
Engineering is the application of science and math to solve
problems. Engineers figure out how things work and find
practical uses for scientific discoveries.
https://www.livescience.com/47499-what-is-engineering.html
Federal Urdu University of Arts, Sciences & Technology, Islamabad
44. Engineering vs Manufacturing
44
Manufacturing; The making of articles on a large scale
using machinery; industrial production or the Process of
converting raw materials, components, or parts into finished
goods
Federal Urdu University of Arts, Sciences & Technology, Islamabad
45. 45
Software Process
Software Development life cycle
Waterfall Model
Prototype Model
Spiral Model
Incremental Model
Federal Urdu University of Arts, Sciences & Technology, Islamabad
46. 46
Traditional Software Engineering
Software Systems
DataFunction Behavior
Entity-Relation
Diagram
Data Flow
Diagram
State Transition
Diagram
Federal Urdu University of Arts, Sciences & Technology, Islamabad
48. 48
Evolution of Software Industry
Independent Programming Service
Software Product
Enterprise Solution
Packaged Software for the Mass
Internet Software and Services
Federal Urdu University of Arts, Sciences & Technology, Islamabad
49. 49
Independent Programming Services
(Era 1)
Feb 1955, Elmer Kubie and John Sheldon
founded CUC
the First Software Company that devoted to the
construction of software especially for hardware
company.
Promoting Software Industry: two Major
Projects,
SABRE, airline reservation system, $30 million.
SAGE, air defense system (1949~1962)
700/1000 programmers in the US. $8 billion.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
50. 50
Software Product (Era 2)
1964 Martin Goetz developed Flowchart
Software -- Autoflow for RCA, but rejected.
Sale to the customer of RCA & IBM.
Develop and market software products not specifically
designed for a particular hardware platform.
MARK IV, a pre-runner for the database
management system.
IBM unbundled software from hardware.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
51. 51
Enterprise Solutions (Era 3)
Dietmar Hopp. IBM Germany
Systems, Applications and Products (SAP)
$3.3billion (1997)
Setting up shop in Walldorf, Germany.
Marked by the emergence of enterprise solutions
providers.
e.g. Baan 1978. Netherlands. $680 million (1997)
Oracle 1977. U.S.
Larry Ellison.
ERP, $45 billion (1997)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
52. 52
Packaged Software for the Masses
(Era 4)
Software products for the masses. 1979.
VisiCalc, Spreadsheet program.
August 1981: The deal of the century.
Bill Gates bought the first version of the OS from a small
firm called Seattle Computer Products for $50,000 without
telling them it was for IBM.
The development of the IBM PC, 1981, initiated a 4th
software era.
PC-based mass-market software. Few additional services are
required for installation.
Microsoft reached revenues of $11.6 billion. Packaged
Software Products, $57 billion (1997)
Federal Urdu University of Arts, Sciences & Technology, Islamabad
53. 53
Internet Software and Services (Era 5)
Internet and value-added services period,
1994. W
with Netscape’s browser software for the internet.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
56. 56
IT Market
Hardware
products
Hardware
maintenance
Software Products
& Services
Processing Services
and Internet Services
Embedded
Software
Professional
Service
Software
Products
Enterprise
Solution
Packaged
Mass-Market
Software
Federal Urdu University of Arts, Sciences & Technology, Islamabad
57. 57
Software Products and Services
Enterprise
Solutions
IBM
Oracle
Computer Associates
SAP
HP
Fujitsu
Hitachi
Parametric Technology
People Soft
Siemens
Packaged Mars-Market
Software
Microsoft
IBM
Computer Associates
Adobe
Novell
Symantec
Intuit
Autodesk
Apple
The Learning Company
Professional Software
Services
Anderson Consulting
IBM
EDS
CSC
Science Applications
Cap Gemini
Hp
DEC
Fujitsu
BSO Origin
58. 58
Software Engineering Today?
Organizations “go with what has worked in
the past”
Everyone is too busy getting product out the
door to spend time in education or training or
addressing these problems effectively
“Out of date” practices become
institutionalized
Federal Urdu University of Arts, Sciences & Technology, Islamabad
59. 59
Software Engineering Today?
Few people know, or can integrate, best
practices
Unable to adopt and utilize proven
methodologies in timely fashion
Although significant improvements have been
made in specific areas, the rapidly evolving
nature of the software industry has resulted in
little overall improvement in the overall
situation.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
60. 60
Not Crisis, but a Chronic Problem
The crisis persists
After 35 years later, the software “crisis” is still with
us
Major problems are still the same:
poor quality (correctness, usability, maintainability, etc)
over budget
delivered late, or not at all
It is not a crisis but a chronic problem
It becomes a persistent, chronic condition that
software industry has to face with
Federal Urdu University of Arts, Sciences & Technology, Islamabad
61. 61
What’s Wrong?
Does software engineering have no progress at all?
Not quite true.
We have indeed seen a lot of improvements, e.g. high level
programming, object-oriented technology, etc.
But it does not achieve its promise, why?
production of fault-free software, delivered on time
and within budget, that satisfies the users’ needs,
and is easy to maintain, etc.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
62. 62
A More Close Look
The comparison with 1995’s report does show that there is some
progress in the past eight years.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
63. 63
So, What’s the Problem?
Software issues: software industry has
changes a lot in the past years
Education issue: more emphasis on methods
and tools but lack of sufficient education and
training on people
Process and quality issue: there lacks of a
set of known proven practices for software
engineers to follow with
Federal Urdu University of Arts, Sciences & Technology, Islamabad
64. 64
Software Changes in the Past Years
Changes in software over time:
grew in size from 10’s or 100’s of lines to 1000’s
to 1,000,000’s of lines of code
operating environment changed from simple
“batch” operations to complex multiprogramming
systems, to time-sharing and distributed
computing to today’s Internet network computing
environment.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
65. 65
Software Changes in the Past Years
As computer systems (both hardware and
software) have become larger and more
complex, the software development process
has also become more and more complex
the simple art of “programming in the small” is no
longer capable of coping with the task.
Federal Urdu University of Arts, Sciences & Technology, Islamabad
66. 66
Situations for Software are Different Too
Driven by intense market forces, including
persistent pressure to deliver software on
unrealistic time schedules
Rapidly changing requirements
Pressures for faster time to market
Continuing rapid evolution of software
methodologies and systems
Integration of new processes and techniques
Need to re-design major systems
Federal Urdu University of Arts, Sciences & Technology, Islamabad
67. 67
Situations for Software are Different Too
Talent shortage: needed software engineering
skills often in short supply
What even worse
Moore’s law means always trying new things
Complexity moves into software
Can’t find the limits except by trial and error
Federal Urdu University of Arts, Sciences & Technology, Islamabad
68. 68
The Software Industry Today
Even though much is now known about how
to improve software production, the overall
state is not much better than ever, due to the
urgency of meeting unrealistic delivery
schedules and the continuing rapid evolution
of the software industry
i.e. poor quality, late delivery, over budget
Federal Urdu University of Arts, Sciences & Technology, Islamabad
69. 69
The Software Industry Today
Component-Based Engineering and Integration
Technological Heterogeneity
Enterprise Heterogeneity
Greater potential for Dynamic Evolution
Internet-Scale Deployment
Many competing standards
Much conflicting terminology
Federal Urdu University of Arts, Sciences & Technology, Islamabad
70. 70
Ability to collaborate; be able to communicate
clearly and concisely both to laypeople and peers.
Able to follow instructions, make a team stronger
for your presence and not weaker.
Ability to see the bigger picture and differing
perspectives; to compromise, to balance
competing priorities, and to priorities the user
Ethics for Software Engineers
Federal Urdu University of Arts, Sciences & Technology, Islamabad
71. 71
You write clean, reusable code that’s easier to read and
test
You understand how your code helps drive the overall
business
You listen more than you speak—or you at least listen
before you speak.
You are disciplined (not sacrifice quality, focused time
for development work)
You get help from strangers on the internet.
You go beyond skill to achieve expertise, You are open
to new things
Ethics for Software Engineers
72. 72
Three key Challenges
Software engineering in the 21st century
faces three key challenges:
Legacy systems
Old, valuable systems must be maintained and updated
Heterogeneity
Systems are distributed and include a mix of hardware and
software
Delivery
There is increasing pressure for faster delivery of software
Federal Urdu University of Arts, Sciences & Technology, Islamabad