This document provides an overview of the CSE320 Software Engineering course. It includes details about the course such as it being a 3 credit hour course, the textbook, and the assessment model which includes assignments, tests, and exams worth various percentages of the total grade. It outlines the academic tasks including assignments and tests. It also covers topics that will be discussed like software development lifecycles, Unified Modeling Language, testing techniques, and software quality standards. Program and course outcomes are listed. The document concludes with an outline of course contents that will be covered in each unit and information about online educational resources for each unit.
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 engineering minors offered by the School of Computer Science and Engineering. It defines engineering minors as a set of six courses in an engineering discipline that allows students to develop competency in an area outside their major. It provides details on the data science engineering minor, including the courses offered and their descriptions and learning outcomes. The minor aims to provide students with interdisciplinary experience and skills in data analytics, visualization, programming, and big data processing to enhance their career opportunities.
This document outlines the stages and concepts of project management. It discusses the introduction to projects and project management, including the definition of a project, characteristics of projects, and challenges of project management. It also describes common problems that can occur in software projects if not properly managed. Additionally, it covers key areas of project management knowledge and frameworks, such as integration management, scope management, and risk management. Finally, it discusses the typical stages a project goes through, including initiation and planning, execution, monitoring and control, and closing.
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.
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.
Software Engineering is the course with code 21CS47 taught over 3 hours per week for a total of 40 contact hours. It has both CIE and SEE components worth 50 marks each. The course aims to teach students about software engineering principles, processes, requirements engineering, system models, agile development, project management, and risks in software development. Key topics covered include the software development lifecycle, software quality metrics, software processes and process models, testing strategies, and project scheduling.
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 the CSE320 Software Engineering course. It includes details about the course such as it being a 3 credit hour course, the textbook, and the assessment model which includes assignments, tests, and exams worth various percentages of the total grade. It outlines the academic tasks including assignments and tests. It also covers topics that will be discussed like software development lifecycles, Unified Modeling Language, testing techniques, and software quality standards. Program and course outcomes are listed. The document concludes with an outline of course contents that will be covered in each unit and information about online educational resources for each unit.
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 engineering minors offered by the School of Computer Science and Engineering. It defines engineering minors as a set of six courses in an engineering discipline that allows students to develop competency in an area outside their major. It provides details on the data science engineering minor, including the courses offered and their descriptions and learning outcomes. The minor aims to provide students with interdisciplinary experience and skills in data analytics, visualization, programming, and big data processing to enhance their career opportunities.
This document outlines the stages and concepts of project management. It discusses the introduction to projects and project management, including the definition of a project, characteristics of projects, and challenges of project management. It also describes common problems that can occur in software projects if not properly managed. Additionally, it covers key areas of project management knowledge and frameworks, such as integration management, scope management, and risk management. Finally, it discusses the typical stages a project goes through, including initiation and planning, execution, monitoring and control, and closing.
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.
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.
Software Engineering is the course with code 21CS47 taught over 3 hours per week for a total of 40 contact hours. It has both CIE and SEE components worth 50 marks each. The course aims to teach students about software engineering principles, processes, requirements engineering, system models, agile development, project management, and risks in software development. Key topics covered include the software development lifecycle, software quality metrics, software processes and process models, testing strategies, and project scheduling.
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.
Software Engineering Thesis Topics In Oxford.pptxDaisy Jones
The discipline of software engineering is extremely dynamic and constantly changing, necessitating the development of fresh methods and concepts. As a result, there is a growing demand for creative solutions that may assist in addressing the shifting requirements of the sector. Graduate students interested in pursuing a thesis in software engineering at Oxford will have the chance to make a difference in the industry by doing original research and creating cutting-edge solutions. The following list includes some possible software engineering thesis topics at Oxford.
The document discusses topics related to software quality assurance and testing. It covers definitions of testing, types of testing activities like static and dynamic testing, different levels of testing from unit to system level. It also discusses test criteria, coverage, and agile testing approaches. The overall document provides an overview of key concepts in software quality assurance and testing.
This document outlines the course CSSE3113 which introduces students to software engineering concepts, principles and techniques to enable them to apply what they learn to develop software, describes the activities involved in software engineering, and explains the evaluation criteria and expectations for the course including a prohibition on plagiarism.
This document provides an introduction to a course on software engineering. It discusses key topics that will be covered in the course including software process models, requirement engineering, software design, quality engineering, project management, and maintenance. It also outlines the course structure, learning outcomes, assessment criteria, and references. The course aims to introduce students to fundamental software engineering principles and practices.
Software engineering is defined as a process of analyzing user requirements and then designing, building, and testing software application which will satisfy those requirements. ... It helps you to obtain, economically, software which is reliable and works efficiently on the real machines
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.
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 provides an introduction to software engineering and software project management. It defines software, software engineering, and a software process. Software engineering is described as the application of systematic and quantifiable approaches to software development, operation, and maintenance. A software process involves specification, requirements, development, validation, and evolution phases. Software project management is defined as the art and science of planning and leading software projects, and involves activities like proposal writing, planning, costing, monitoring, and personnel management. Key phases of software project management are planning, organizing, monitoring, and adjusting.
Software engineering is the application of engineering principles to the development of software in a systematic, disciplined manner. It involves collecting best practices like techniques, methodologies and guidelines from past projects. A software product is developed using well-defined scientific principles and methods. Early software development was ad-hoc, but modern practices emphasize prevention over correction of errors through techniques like life cycle models, testing, and project planning.
Requirement Engineering Challenges in Development of Software Applications an...Waqas Tariq
Requirement Engineering acts as foundation for any software and is one of the most important tasks. Entire software is supported by four pillars of requirement engineering processes. Functional and non-functional requirements work as bricks to support software edifice. Finally, design, implementation and testing add stories to construct entire software tower on top of this foundation. Thus, the base needs to be well-built to support rest of software tower. For this purpose, requirement engineers come across with numerous challenges to develop successful software. The paper has highlighted requirement engineering challenges encountered in development of software applications and selection of right customer-off-the-shelf components (COTS). Comprehending stakeholder’s needs; incomplete and inconsistent process description; verification and validation of requirements; classification and modeling of extensive data; selection of COTS product with minimum requirement modifications are foremost challenges faced during requirement engineering. Moreover, the paper has discussed and critically evaluated challenges highlighted by various researchers. Besides, the paper presents a model that encapsulates seven major challenges that recur during requirement engineering phase. These challenges have been further categorized into problems. Furthermore, the model has been linked with previous research work to elaborate challenges that have not been specified earlier. Anticipating requirement engineering challenges could assist requirement engineers to prevent software tower from any destruction.
This document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given past "software crises" involving costly failures. Examples of failures include flight delays due to an air traffic control system glitch and the exploding Ariane 5 rocket due to a numeric overflow error. The document outlines software engineering processes, models, costs, and challenges involving managing increasing diversity and demands for trustworthy software delivery.
This document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given that errors in complex software systems can have devastating consequences. It also outlines some key software engineering concepts like the software development process, process models, types of software, and important attributes of good software.
This document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given past "software crises" involving costly failures. It also outlines the software engineering process, including specification, development, validation, and evolution. Key challenges in the field are coping with increasing diversity, demands for reduced delivery times, and developing trustworthy software.
This document provides an introduction to software engineering. It defines software engineering as a discipline concerned with all aspects of software development. It notes that software engineering is important because complex software systems need to be developed and managed in a disciplined way. The document discusses some examples of software failures that demonstrate the need for engineering practices. It also outlines some key software engineering concepts like the software development process, process models, and attributes of high-quality software.
This document provides an introduction to software engineering. It defines software engineering as a discipline concerned with all aspects of software development. It notes that software engineering is important because complex software systems need to be developed and managed in a disciplined way. The document discusses some examples of software failures that demonstrate the need for engineering practices. It also outlines some key software engineering concepts like the software development process, process models, and attributes of high-quality software.
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 provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given that errors in complex software systems can have devastating consequences, as shown through examples of software failures in air traffic control, satellite launches, and ambulance dispatch systems. The document also covers fundamental software engineering concepts like the software process, process models, and costs.
SE chp1 update and learning management .pptxssuserdee5bb1
The document provides an overview of software engineering concepts including definitions, types of software, software processes, life cycle models and the waterfall model. It defines software engineering as a discipline concerned with all aspects of software development and defines types of software such as system software and application software. The document also summarizes software engineering objectives, reasons for software failures, and the three R's of software engineering - reuse, re-engineering, and re-tooling. Finally, it provides a brief introduction to software process models including the waterfall model.
MODULE 1 :
Software Product and Process
Introduction –FAQs About Software Engineering,
Definition Of Software Engineering,
Difference Between Software Engineering And Computer Science,
Difference Between Software Engineering And System Engineering,
Software Process,
Software Process Models,
The Waterfall Model,
Incremental Process Models,
Evolutionary Process Models
Spiral Development, Prototyping,
Component Based Software Engineering ,
The Unified Process, Attributes Of Good Software,
Key Challenges Facing By Software Engineering,
Verification – Validation,
Computer Based System,
Business Process Engineering,
Software Engineering Thesis Topics In Oxford.pptxDaisy Jones
The discipline of software engineering is extremely dynamic and constantly changing, necessitating the development of fresh methods and concepts. As a result, there is a growing demand for creative solutions that may assist in addressing the shifting requirements of the sector. Graduate students interested in pursuing a thesis in software engineering at Oxford will have the chance to make a difference in the industry by doing original research and creating cutting-edge solutions. The following list includes some possible software engineering thesis topics at Oxford.
The document discusses topics related to software quality assurance and testing. It covers definitions of testing, types of testing activities like static and dynamic testing, different levels of testing from unit to system level. It also discusses test criteria, coverage, and agile testing approaches. The overall document provides an overview of key concepts in software quality assurance and testing.
This document outlines the course CSSE3113 which introduces students to software engineering concepts, principles and techniques to enable them to apply what they learn to develop software, describes the activities involved in software engineering, and explains the evaluation criteria and expectations for the course including a prohibition on plagiarism.
This document provides an introduction to a course on software engineering. It discusses key topics that will be covered in the course including software process models, requirement engineering, software design, quality engineering, project management, and maintenance. It also outlines the course structure, learning outcomes, assessment criteria, and references. The course aims to introduce students to fundamental software engineering principles and practices.
Software engineering is defined as a process of analyzing user requirements and then designing, building, and testing software application which will satisfy those requirements. ... It helps you to obtain, economically, software which is reliable and works efficiently on the real machines
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.
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 provides an introduction to software engineering and software project management. It defines software, software engineering, and a software process. Software engineering is described as the application of systematic and quantifiable approaches to software development, operation, and maintenance. A software process involves specification, requirements, development, validation, and evolution phases. Software project management is defined as the art and science of planning and leading software projects, and involves activities like proposal writing, planning, costing, monitoring, and personnel management. Key phases of software project management are planning, organizing, monitoring, and adjusting.
Software engineering is the application of engineering principles to the development of software in a systematic, disciplined manner. It involves collecting best practices like techniques, methodologies and guidelines from past projects. A software product is developed using well-defined scientific principles and methods. Early software development was ad-hoc, but modern practices emphasize prevention over correction of errors through techniques like life cycle models, testing, and project planning.
Requirement Engineering Challenges in Development of Software Applications an...Waqas Tariq
Requirement Engineering acts as foundation for any software and is one of the most important tasks. Entire software is supported by four pillars of requirement engineering processes. Functional and non-functional requirements work as bricks to support software edifice. Finally, design, implementation and testing add stories to construct entire software tower on top of this foundation. Thus, the base needs to be well-built to support rest of software tower. For this purpose, requirement engineers come across with numerous challenges to develop successful software. The paper has highlighted requirement engineering challenges encountered in development of software applications and selection of right customer-off-the-shelf components (COTS). Comprehending stakeholder’s needs; incomplete and inconsistent process description; verification and validation of requirements; classification and modeling of extensive data; selection of COTS product with minimum requirement modifications are foremost challenges faced during requirement engineering. Moreover, the paper has discussed and critically evaluated challenges highlighted by various researchers. Besides, the paper presents a model that encapsulates seven major challenges that recur during requirement engineering phase. These challenges have been further categorized into problems. Furthermore, the model has been linked with previous research work to elaborate challenges that have not been specified earlier. Anticipating requirement engineering challenges could assist requirement engineers to prevent software tower from any destruction.
This document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given past "software crises" involving costly failures. Examples of failures include flight delays due to an air traffic control system glitch and the exploding Ariane 5 rocket due to a numeric overflow error. The document outlines software engineering processes, models, costs, and challenges involving managing increasing diversity and demands for trustworthy software delivery.
This document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given that errors in complex software systems can have devastating consequences. It also outlines some key software engineering concepts like the software development process, process models, types of software, and important attributes of good software.
This document provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given past "software crises" involving costly failures. It also outlines the software engineering process, including specification, development, validation, and evolution. Key challenges in the field are coping with increasing diversity, demands for reduced delivery times, and developing trustworthy software.
This document provides an introduction to software engineering. It defines software engineering as a discipline concerned with all aspects of software development. It notes that software engineering is important because complex software systems need to be developed and managed in a disciplined way. The document discusses some examples of software failures that demonstrate the need for engineering practices. It also outlines some key software engineering concepts like the software development process, process models, and attributes of high-quality software.
This document provides an introduction to software engineering. It defines software engineering as a discipline concerned with all aspects of software development. It notes that software engineering is important because complex software systems need to be developed and managed in a disciplined way. The document discusses some examples of software failures that demonstrate the need for engineering practices. It also outlines some key software engineering concepts like the software development process, process models, and attributes of high-quality software.
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 provides an introduction to software engineering. It defines software engineering as an engineering discipline concerned with all aspects of software production. It discusses why software engineering is important given that errors in complex software systems can have devastating consequences, as shown through examples of software failures in air traffic control, satellite launches, and ambulance dispatch systems. The document also covers fundamental software engineering concepts like the software process, process models, and costs.
SE chp1 update and learning management .pptxssuserdee5bb1
The document provides an overview of software engineering concepts including definitions, types of software, software processes, life cycle models and the waterfall model. It defines software engineering as a discipline concerned with all aspects of software development and defines types of software such as system software and application software. The document also summarizes software engineering objectives, reasons for software failures, and the three R's of software engineering - reuse, re-engineering, and re-tooling. Finally, it provides a brief introduction to software process models including the waterfall model.
Similar to 1 18CS54 _Software Engineering and Testing _Introduction to CO PO _Syllabus and UNIT 1_PPT.pptx (20)
MODULE 1 :
Software Product and Process
Introduction –FAQs About Software Engineering,
Definition Of Software Engineering,
Difference Between Software Engineering And Computer Science,
Difference Between Software Engineering And System Engineering,
Software Process,
Software Process Models,
The Waterfall Model,
Incremental Process Models,
Evolutionary Process Models
Spiral Development, Prototyping,
Component Based Software Engineering ,
The Unified Process, Attributes Of Good Software,
Key Challenges Facing By Software Engineering,
Verification – Validation,
Computer Based System,
Business Process Engineering,
This document provides an overview of unit 2 of an Internet of Things elective course. It discusses smart objects, which are the building blocks of IoT networks. Smart objects contain sensors to detect the physical environment, actuators to trigger physical changes, a processing unit, communication capabilities, and a power source. Examples of smart objects include sensors in smartphones and on farms. The document also describes different types of sensors and actuators and how they interact with the physical world.
5 IOT MODULE 5 RaspberryPi Programming using Python.pdfJayanthi Kannan MK
The document provides information about programming a Raspberry Pi using Python. It discusses the Raspberry Pi hardware, operating systems that can be used like Raspbian, and describes how to connect to a Raspberry Pi remotely using SSH. It also provides examples of Python programming projects like a wireless temperature monitoring system using a Raspberry Pi, Thingspeak cloud, and LM35 sensor. The document discusses accessing temperature readings from DS18B20 sensors using the OneWire protocol and outlines methods for remotely accessing a Raspberry Pi from outside the home network.
4 IOT 18ISDE712 MODULE 4 IoT Physical Devices and End Point-Aurdino Uno.pdfJayanthi Kannan MK
The document discusses the Arduino Uno microcontroller board. It provides details about the Arduino platform and describes the Arduino Uno board, which is based on the ATmega328P microcontroller. It lists the main components of the Arduino Uno board and explains the functions of pins and inputs/outputs. The document also provides an overview of the fundamentals of Arduino programming, including key functions, variables, conditions, and serial communication.
3 IOT Part 3 IP as the IoT Network Layer Access Technologies.pdfJayanthi Kannan MK
The document discusses Internet of Things (IoT) and opportunities for IoT solutions in India. It covers key topics like how everything has a state that can be represented as data and transitioned from devices to users via the Internet. It also discusses considerations for designing IoT applications and devices, autonomous services, use cases, business opportunities in India, and factors to consider when building an IoT product or service. The overall message is that IoT presents significant opportunities for India given its large population, agriculture and manufacturing sectors, and there is assistance available for IoT startups.
1 Unit 1 Introduction _IOT by Dr.M.K.Jayanthi Kannan (1).pdfJayanthi Kannan MK
The document provides an introduction to the Internet of Things (IoT). It defines IoT as connecting physical objects to the internet, enabling communication between devices. It discusses the growth of IoT, predicting 50-100 billion connected devices by 2020. Examples are given of how IoT is impacting industries like manufacturing and smart buildings. The chapter establishes key concepts and differences between IoT and digitization.
IoT Physical Devices and End points and RaspberryPi with Python.
Introduction to RaspberryPi
Arduino UNO,
Arduino UNO: Introduction to Arduino,
Arduino UNO, Installing the Software,
Fundamentals of Arduino Programming.
IoT Physical Devices and Endpoints.
RaspberryPi: Introduction to RaspberryPi,
About the RaspberryPi Board: Hardware Layout,
Operating Systems on RaspberryPi, Configuring.
IoT Arduino UNO, RaspberryPi with Python, RaspberryPi Programming using Pytho...Jayanthi Kannan MK
Module 4 : Arduino UNO, RaspberryPi with Python
Arduino UNO: Introduction to Arduino,
•Arduino UNO, Installing the Software,
•Fundamentals of Arduino Programming.
•IoT Physical Devices and Endpoints.
RaspberryPi: Introduction to RaspberryPi,
•About the RaspberryPi Board: Hardware Layout,
•Operating Systems on RaspberryPi, Configuring.
Module 5 : RaspberryPi Programming using Python and Smart City
RaspberryPi,
•Programming RaspberryPi with Python,
•Wireless Temperature Monitoring System Using Pi,
•DS18B20 Temperature Sensor,
•Connecting Raspberry Pi via SSH,
•Accessing Temperature from DS18B20 sensors,
• Remote access to RaspberryPi.
Smart cities: Smart and Connected Cities,
•An IoT Strategy for Smarter Cities,
•Smart City IoT Architecture,
•Smart City Security Architecture,
•Smart City Use-Case Examples
Internet of Things
Unit – 1. Introduction
1.1 What is IoT,
1.2 Genesis of IoT,
1.3 IoT andDigitization,
1.4 IoT Impact,
1.5 Convergence of IT and IoT,
1.6 IoTChallenges,
1.7 IoT NetworkArchitecture and Design,
1.8 Drivers Behind New Network Architectures,
1.9 Comparing IoTArchitectures,
1.10 A Simplified IoTArchitecture.
Text Books:
1. Fundamentals: Networking Technologies,Protocols, and Use Cases for the Internet of Things”, David Hanes, Gonzalo Salgueiro, Patrick Grossetete, Robert Barton, JeromeHenry, 1stEdition, Pearson Education (Cisco Press Indian Reprint, ISBN: 978- 9386873743.2. “Internet of Things”, Srinivasa K G, 2017, CENGAGELeaning, India.
Reference Books:
1. “Internetof Things (A Hands-on-Approach)”,Vijay Madisetti and ArshdeepBahga, 1st Edition, VPT, 2014. ISBN: 978-8173719547.2. “Internetof Things: Architecture and Design Principles”, Raj Kamal, 1st Edition, McGraw Hill Education, 2017, ISBN: 978-935260522
This document outlines a course on advances in database management systems. The course covers object and object-relational databases over 9 hours. Topics include object database concepts, object extensions to SQL, the ODMG object model and ODL language, object database design, and the OQL query language. The course is taught by Dr. M.K. Jayanthi Kannan at JAIN Deemed To-Be University.
Introduction- e - waste – definition - sources of e-waste– hazardous substances in e-waste - effects of e-waste on environment and human health- need for e-waste management– e-waste handling rules - waste minimization techniques for managing e-waste – recycling of e-waste - disposal treatment methods of e- waste – mechanism of extraction of precious metal from leaching solution-global Scenario of E-waste – E-waste in India- case studies.
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsVictor Morales
K8sGPT is a tool that analyzes and diagnoses Kubernetes clusters. This presentation was used to share the requirements and dependencies to deploy K8sGPT in a local environment.
The CBC machine is a common diagnostic tool used by doctors to measure a patient's red blood cell count, white blood cell count and platelet count. The machine uses a small sample of the patient's blood, which is then placed into special tubes and analyzed. The results of the analysis are then displayed on a screen for the doctor to review. The CBC machine is an important tool for diagnosing various conditions, such as anemia, infection and leukemia. It can also help to monitor a patient's response to treatment.
Comparative analysis between traditional aquaponics and reconstructed aquapon...bijceesjournal
The aquaponic system of planting is a method that does not require soil usage. It is a method that only needs water, fish, lava rocks (a substitute for soil), and plants. Aquaponic systems are sustainable and environmentally friendly. Its use not only helps to plant in small spaces but also helps reduce artificial chemical use and minimizes excess water use, as aquaponics consumes 90% less water than soil-based gardening. The study applied a descriptive and experimental design to assess and compare conventional and reconstructed aquaponic methods for reproducing tomatoes. The researchers created an observation checklist to determine the significant factors of the study. The study aims to determine the significant difference between traditional aquaponics and reconstructed aquaponics systems propagating tomatoes in terms of height, weight, girth, and number of fruits. The reconstructed aquaponics system’s higher growth yield results in a much more nourished crop than the traditional aquaponics system. It is superior in its number of fruits, height, weight, and girth measurement. Moreover, the reconstructed aquaponics system is proven to eliminate all the hindrances present in the traditional aquaponics system, which are overcrowding of fish, algae growth, pest problems, contaminated water, and dead fish.
Harnessing WebAssembly for Real-time Stateless Streaming PipelinesChristina Lin
Traditionally, dealing with real-time data pipelines has involved significant overhead, even for straightforward tasks like data transformation or masking. However, in this talk, we’ll venture into the dynamic realm of WebAssembly (WASM) and discover how it can revolutionize the creation of stateless streaming pipelines within a Kafka (Redpanda) broker. These pipelines are adept at managing low-latency, high-data-volume scenarios.
Batteries -Introduction – Types of Batteries – discharging and charging of battery - characteristics of battery –battery rating- various tests on battery- – Primary battery: silver button cell- Secondary battery :Ni-Cd battery-modern battery: lithium ion battery-maintenance of batteries-choices of batteries for electric vehicle applications.
Fuel Cells: Introduction- importance and classification of fuel cells - description, principle, components, applications of fuel cells: H2-O2 fuel cell, alkaline fuel cell, molten carbonate fuel cell and direct methanol fuel cells.
Embedded machine learning-based road conditions and driving behavior monitoringIJECEIAES
Car accident rates have increased in recent years, resulting in losses in human lives, properties, and other financial costs. An embedded machine learning-based system is developed to address this critical issue. The system can monitor road conditions, detect driving patterns, and identify aggressive driving behaviors. The system is based on neural networks trained on a comprehensive dataset of driving events, driving styles, and road conditions. The system effectively detects potential risks and helps mitigate the frequency and impact of accidents. The primary goal is to ensure the safety of drivers and vehicles. Collecting data involved gathering information on three key road events: normal street and normal drive, speed bumps, circular yellow speed bumps, and three aggressive driving actions: sudden start, sudden stop, and sudden entry. The gathered data is processed and analyzed using a machine learning system designed for limited power and memory devices. The developed system resulted in 91.9% accuracy, 93.6% precision, and 92% recall. The achieved inference time on an Arduino Nano 33 BLE Sense with a 32-bit CPU running at 64 MHz is 34 ms and requires 2.6 kB peak RAM and 139.9 kB program flash memory, making it suitable for resource-constrained embedded systems.
Advanced control scheme of doubly fed induction generator for wind turbine us...IJECEIAES
This paper describes a speed control device for generating electrical energy on an electricity network based on the doubly fed induction generator (DFIG) used for wind power conversion systems. At first, a double-fed induction generator model was constructed. A control law is formulated to govern the flow of energy between the stator of a DFIG and the energy network using three types of controllers: proportional integral (PI), sliding mode controller (SMC) and second order sliding mode controller (SOSMC). Their different results in terms of power reference tracking, reaction to unexpected speed fluctuations, sensitivity to perturbations, and resilience against machine parameter alterations are compared. MATLAB/Simulink was used to conduct the simulations for the preceding study. Multiple simulations have shown very satisfying results, and the investigations demonstrate the efficacy and power-enhancing capabilities of the suggested control system.
2. Software Engineering and Testing By Dr.MK Jayanthi Kannan
COURSE NAME : SOFTWARE ENGINEERING &
TESTING
COURSE CODE: 18CS54
No of Credits : 03
L-T-P : 3-0-0
Total No of Modules : 05
Total No of Contact Hours : 60 Sessions
2
Staff Room: 324- 8.
Office Hours : 8.30 AM -4 PM
Department of Computer Science
and Engineering,
FET Block.
By
Dr. M.K. Jayanthi Kannan, M.E.,MS.,MBA.,
M.Ph.D.,
Professor,
Faculty of Engineering & Technology,
JAIN Deemed To-Be University,
Bengaluru.
3. Software Engineering and Testing By Dr.MK Jayanthi Kannan
18CS54 SOFTWARE ENGINEERING AND TESTING By Dr.MK Jayanthi Kannan
3
COURSE NAME :SOFTWARE ENGINEERING & TESTING
COURSE CODE : 18CS54
CREDITS : 3 CREDITS
OUTLINE
Introduction
Learning Objectives(Course Objectives)
Syllabus
Learning Outcomes (Course Outcomes)
Program Outcomes
Program Specific Outcomes
Course Articulation Matrix (CO-PO mapping)
Target
Assessment Process
16. Software Engineering and Testing By Dr.MK Jayanthi Kannan
MODULE : 1
INTRODUCTION TO OBJECT ORIENTED SOFTWARE ENGINEERING AND
REQUIREMENTS ENGINEERING:
Nature of the Software,
Types of Software,
Software Engineering Projects,
Software Engineering Activities,
Software Quality,
Introduction to Object Orientation,
Software Process Models-Waterfall Model,
Opportunistic Model ,
Phased Released Model, Spiral Model,
Evolutionary Model, Concurrent Engineering Model.
Domain Analysis, Problem Definition and Scope,
Requirements Definition, Types of Requirements,
Techniques for Gathering and Analyzing Requirements,
Requirement Documents,
Reviewing, Managing Change in Requirements.
Time : 12 Sessions (12 Hours )
COURSE OUTCOMES : CO1, CO2, CO3
PROGRAM OUTCOMES : PO1, PO2,PO3,PO4,PO5,PO6,PO7,PO8,PO12
16
17. Software Engineering and Testing By Dr.MK Jayanthi Kannan
18CS54 SOFTWARE ENGINEERING AND TESTING By Dr.MK Jayanthi Kannan
17
PROGRAM OUTCOMES
18. Software Engineering and Testing By Dr.MK Jayanthi Kannan
18CS54 SOFTWARE ENGINEERING AND TESTING By Dr.MK Jayanthi Kannan
18
PROGRAM OUTCOMES
19. Software Engineering and Testing By Dr.MK Jayanthi Kannan
18CS54 SOFTWARE ENGINEERING AND TESTING By Dr.MK Jayanthi Kannan
19
20. Software Engineering and Testing By Dr.MK Jayanthi Kannan
18CS54 SOFTWARE ENGINEERING AND TESTING By Dr.MK Jayanthi Kannan
20
ASSESSMENT PROCESS
Three Internal Assessments will be conducted which
includes 5 marks of MCQ.
The average of best two is taken and will be scaled to 30
marks
Semester end examination is conducted for 70 marks.
To pass in the course as per the regulations of University,
students shall secure a minimum of 40 marks (IA and SEE
together) provided SEE marks>=28
Assessment of Course Outcome is shown below
21. Software Engineering and Testing By Dr.MK Jayanthi Kannan
18CS54 SOFTWARE ENGINEERING AND TESTING By Dr.MK Jayanthi Kannan
21
SUMMARY
Learning Objectives were set from the Faculty
perspective
Learning Outcomes were set from the Students
perspective
Course Articulation Matrix (CO-PO mapping)
was defined
Target was set for the Current Academic Year for
the course Database systems
Assessment Process was discussed
22. Software Engineering and Testing By Dr.MK Jayanthi Kannan
18CS54 SOFTWARE ENGINEERING AND TESTING By Dr.MK Jayanthi Kannan
22
23. Software Engineering and Testing By Dr.MK Jayanthi Kannan
18CS54 SOFTWARE ENGINEERING AND TESTING By Dr.MK Jayanthi Kannan
23
25. Software Engineering and Testing By Dr.MK Jayanthi Kannan
COURSE OUTCOMES
CO-1 Understand the basic concept of object oriented software
engineering and software development life cycle.
CO-2 Exhibit the knowledge in software project from requirement
gathering to implementation.
CO-3 Focus on the fundamentals of modeling a software project
using UML
CO-4 Ability to apply software engineering principles and
techniques to develop large-scale software systems.
25
26. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING AND TESTING
MODULE 1 TOPICS
Software Engineering Basics
Need & Characteristics of Software
Engineering
Nature of Software Engineering
Types of Software
Software Engineering Projects & Activities
Software Quality
Introduction to Object-Orientation
Software Process Models
26
27. Software Engineering and Testing By Dr.MK Jayanthi Kannan
27
SOFTWARE & TYPES OF SOFTWARE
28. Software Engineering and Testing By Dr.MK Jayanthi Kannan
WHAT IS SOFTWARE?
Computer programs and associated documentation
Software products may be developed for a particular
customer or may be developed for a general market.
28
29. Software Engineering and Testing By Dr.MK Jayanthi Kannan
TYPES OF SOFTWARE
Three types of software:
(a) Custom Software:
For a specific customer/single customer.
Software for managing the specialized finances of large
organizations.
It accommodate customer’s particular expectations.
Examples like:
(i) Hospitals: Maintain health record, Keep patients blood group
and billing.
(ii) Education: Maintain student admission details, Transfer
certificates, Examination records, etc.
(iii) Retail: Billing is the common use of custom software.
Advantage: Most efficient system for specific needs.
Dis-advantage: Time & Cost.
29
30. Software Engineering and Testing By Dr.MK Jayanthi Kannan
TYPES OF SOFTWARE
(b) Generic Software:
Software readily available to the public.
Perform many different tasks and is not limited to one particular
application.
Sold on open market to perform the functions that many people need,
and to run on general purpose computers.
Often called as COTS ( Commercial Off The Shelf).
Examples like:
(i) Spreadsheet: is generic because it is useful for multiple purposes
without modification, such as a calculating tool for engineers or a
finance tool for accountants.
(ii) consider the data structure called a stack. A stack is a collection of
data, all of the same type, which implements a Last In, First Out
concept. Multiple items may be “pushed” onto the stack. When a value
is “popped” off the stack the value returned is the most recent value
“pushed” onto the stack. 30
31. Software Engineering and Testing By Dr.MK Jayanthi Kannan
TYPES OF SOFTWARE (CONTD.)
(c) Embedded Software:
Built into hardware.
Hard to change.
Eg: washing machines, DVD players, microwave ovens and
automobiles.
31
DIFFERENCE BETWEEN CUSTOM, GENERIC & EMBEDDED SOFTWARE
Custom Generic Embedded
Number of copies in use low medium high
Total processing power devoted to
running this type of software
low high medium
Worldwide annual
development effort
high medium low
32. Software Engineering and Testing By Dr.MK Jayanthi Kannan
TYPES OF SOFTWARE (CONTD.)
(d) Real-Time Software:
Must react immediately (Faster).
Safety is taken care
Eg: Control & monitoring systems - pushing of buttons by the user,
or a signal from a sensor
(e) Data-Processing Software:
Used to run business.
Accuracy & Security of data are key.
Some software has both real-time and data processing aspects.
For example: a telephone system has to manage phone calls in
real time, but billing for those calls is a data processing activity.
32
33. Software Engineering and Testing By Dr.MK Jayanthi Kannan
33
SOFTWARE ENGINEERING BASICS
34. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING
Software is more than just a program code.
A program is an executable code, which serves some
computational purpose.
Software is considered to be collection of executable
programming code, associated libraries and
documentations.
Software, when made for a specific requirement is
called software product.
Engineering on the other hand, is all about developing
products, using well-defined, scientific principles and
methods. 34
35. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING
Software Engineering is an engineering branch associated
with development of software product using well-defined
scientific principles, methods and procedures.
The outcome of software engineering is an efficient and
reliable software product.
35
36. Software Engineering and Testing By Dr.MK Jayanthi Kannan
WHAT IS SOFTWARE ENGINEERING?
The term Software Engineering is defined as following 4
key points:
solving customers’ problems.
systematic development and evolution.
large, high-quality software systems.
cost, time and other constraints.
The process of solving customers’ problems by the
systematic development and evolution of large, high-
quality software systems within cost, time and other
constraints.
36
37. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING PARADIGMS
Software paradigms refer to the methods and steps, which
are taken while designing the software.
Programming paradigm is a subset of Software design
paradigm which is further a subset of Software development
paradigm. 37
38. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING PARADIGMS (CONTD.)
Software Development Paradigm: It includes various
researches and requirement gathering which helps the software
product to build. It consists of :
Requirement gathering
Software design
Programming
Software Design Paradigm: This paradigm is a part of
Software Development and includes :
Design
Maintenance
Programming
Programming Paradigm: This paradigm is related closely to
programming aspect of software development. This includes:
Coding
Testing
Integration
38
39. Software Engineering and Testing By Dr.MK Jayanthi Kannan
NEED OF SOFTWARE ENGINEERING
The need of software engineering arises because of higher rate of
change in user requirements and environment on which the
software is working.
Large software: As the size of software become large, engineering
has to step to give it a scientific process.
Scalability: If the software process were not based on scientific and
engineering concepts, it would be easier to re-create new software
than to scale an existing one.
Cost: As hardware industry has shown its skills and huge
manufacturing has lower down he price of computer and electronic
hardware. But the cost of software remains high if proper process is
not adapted.
Dynamic Nature: If the nature of software is always changing, new
enhancements need to be done in the existing one. This is where
software engineering plays a good role.
Quality Management: Better process of software development
provides better and quality software product. 39
40. Software Engineering and Testing By Dr.MK Jayanthi Kannan
CHARACTERISTICS OF GOOD SOFTWARE
A software product can be judged by what it offers and how well it
can be used.
Any software must satisfy on the following three parameters:
(a) Operational: How well the software works based on the
measures like – Budget, Usability, Efficiency, Correctness,
Functionality, Security, Safety.
(b) Transitional: Important when software is moved from one
platform to another based on – Portability, Reusability,
Adaptability.
(c) Maintenance: How well a software is maintained itself based on
the capabilities like: Modularity, Maintainability, Flexibility,
Scalability.
40
41. Software Engineering and Testing By Dr.MK Jayanthi Kannan
NATURE OF SOFTWARE ENGINEERING
Software Engineers design software systems. But the
software differs in important ways from the types of artifacts
produced by other types of engineers like:
System Software
Application Software
Engineering & Scientific Software
Embedded Software
Product-like Software
Web-applications
Artificial intelligence Software
41
42. Software Engineering and Testing By Dr.MK Jayanthi Kannan
NATURE OF SOFTWARE ENGINEERING (CONTD.)
Software is largely intangible – you cant feel the shape of a
piece of software and its design can be hard to visualize. So, its
difficult for people to assess its quality and hard to understand
development effort.
Mass-production of duplicate pieces of software – Engineers
are very concerned about the cost of each item and labour to
manufacture it.
Untrained people can hack something together - It is too
easy for an inadequately trained software developer to create a
piece of software that is difficult to understand and modify.
Software is easy to modify - because of its complexity but it is
very difficult to make changes that are correct.
Software is easy to reproduce – Cost is in its development
42
43. Software Engineering and Testing By Dr.MK Jayanthi Kannan
STAKEHOLDERS IN SOFTWARE ENGINEERING
Four major roles:
1. Users - Those who use the software.
2. Customers - Those who pay for the software.
3. Software developers – design, testing, maintenance,
etc.
4. Development Managers – keep the team on track daily
basis, responsible for project delivery.
All four roles can be fulfilled by the same person.
43
44. Software Engineering and Testing By Dr.MK Jayanthi Kannan
44
SOFTWARE ENGINEERING PROJECTS
45. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING PROJECTS
Software engineering work is normally organized into projects.
For a small software system, there may only be a single team of
three or four developers working on the project.
For a larger system, the work is usually subdivided into many
smaller projects.
Software projects are divided into three major categories:
1) those that involve modifying an existing system;
2) those that involve starting to develop a system from scratch, and
3) those that involve building most of a new system from existing
components, while developing new software only for missing details.
45
46. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING PROJECTS (CONTD.)
Most projects are:
(a) Evolutionary or maintenance projects – modifying an
existing system.
(b) Green-field projects
(c) Projects that involve building on a framework or a set of
existing components.
46
47. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING PROJECTS (CONTD.)
(a) Evolutionary or maintenance projects
Corrective projects: fixing defects.
Adaptive projects: changing the system in response to
changes in environment:
Operating system
Database
Rules and regulations
Enhancement projects: adding new features for users
Reengineering or perfective projects: changing the system
internally so it is more maintainable.
47
48. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING PROJECTS (CONTD.)
(b) Green-field projects
Development of entirely new software system from scratch are less.
New development
The minority of projects
not constrained by the design decisions and errors
lot of work to build a complex system from scratch.
48
49. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE ENGINEERING PROJECTS (CONTD.)
(c) Projects that involve building on a framework or a set of
existing components.
The framework is an application that is missing some important
details.
E.g. Specific rules of this organization.
Some projects:
Involve plugging together components that are:
Already developed.
Provide significant functionality.
Benefit from reusing reliable software.
Provide much of the same freedom to innovate found in
green field development.
49
50. Software Engineering and Testing By Dr.MK Jayanthi Kannan
50
SOFTWARE ENGINEERING ACTIVITIES
51. Software Engineering and Testing By Dr.MK Jayanthi Kannan
ACTIVITIES COMMON TO SOFTWARE ENGINEERING
Seven Major Activities:
(i) Requirement & Specification
(ii) Design
(iii) Modeling
(iv) Programming
(v) Quality Assurance
(vi) Deployment
(vii) Managing the Process
51
52. Software Engineering and Testing By Dr.MK Jayanthi Kannan
ACTIVITIES COMMON TO SOFTWARE ENGINEERING
(i) Requirement & Specification:
Includes
Domain analysis
Defining the problem
Requirements gathering
Obtaining input from as many sources as possible
Requirements analysis
Organizing the information
Requirements specification
Writing detailed instructions about how the software
should behave
52
53. Software Engineering and Testing By Dr.MK Jayanthi Kannan
ACTIVITIES COMMON TO SOFTWARE ENGINEERING
(ii) Design:
Deciding how the requirements should be implemented, using
the available technology
Includes:
Systems engineering: Deciding what should be in
hardware and what in software
Software architecture: Dividing the system into
subsystems and deciding how the subsystems will interact
Detailed design of the internals of a subsystem
User interface design
Design of databases
53
54. Software Engineering and Testing By Dr.MK Jayanthi Kannan
ACTIVITIES COMMON TO SOFTWARE ENGINEERING
(iii) Modeling:
Creating representations of the domain or the software
Use case modeling
Structural modeling
Dynamic and behavioural modeling
(iv) Programming:
Integral part of software engineering.
It involves the translation of higher-level designs into
particular programming languages.
(v) Quality Assurance:
Reviews and inspections
Testing 54
55. Software Engineering and Testing By Dr.MK Jayanthi Kannan
ACTIVITIES COMMON TO SOFTWARE ENGINEERING
(vi) Deployment:
Deployment involves distributing and installing the software and
any other components of the system such as databases, special
hardware etc.
It also involves managing the transition from any previous
system.
(vii) Managing the Process:
Managing software projects is considered an integral part of
software engineering.
Estimating the cost of the system.
Planning.
55
57. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE QUALITY
Software Quality is the degree of conformance to explicit or
implicit requirements and expectations.
Explicit – clearly defined & documented.
Implicit – Not clearly defined and documented but indirectly
suggested.
57
58. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE QUALITY
Software Quality Five important attributes:
Usability: Users can learn it, fast and get their job done easily.
Efficiency: It doesn’t waste resources such as CPU time and
memory.
Reliability: It does what it is required to do without failing.
Maintainability: It can be easily changed.
Reusability: Its parts can be used in other projects, so
reprogramming is not needed.
58
59. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE QUALITY (CONTD.)
what quality means to each of the stakeholders?
59
QUALITY
SOFTWARE
Developer:
easy to design;
easy to maintain;
easy to reuse its parts
User:
easy to learn;
efficient to use;
helps get work done
Customer:
solves problems at
an acceptable cost in
terms of money paid and
resources used
Development manager:
sells more and
pleases customers
while costing less
to develop and maintain
60. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE QUALITY (CONTD.)
The different qualities can conflict
Increasing efficiency can reduce maintainability or reusability.
Increasing usability can reduce efficiency.
Setting objectives for quality is a key engineering activity
You then design to meet the objectives.
Avoids ‘over-engineering’ which wastes money.
Optimizing is also sometimes necessary
E.g. obtain the highest possible reliability using a fixed budget.
Internal Quality Criteria:
Characterize aspects of the design of the software.
Have an effect on the external quality attributes.
E.g: The amount of commenting of the code.
The complexity of the code. 60
61. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SHORT TERM VS. LONG TERM QUALITY
Short term:
Does the software meet the customer’s immediate needs?
Is it sufficiently efficient for the volume of data we have today?
Long term:
Maintainability
Customer’s future needs
61
62. Software Engineering and Testing By Dr.MK Jayanthi Kannan
DIFFICULTIES & RISKS IN SOFTWARE ENGINEERING
Complexity and large numbers of details
Uncertainty about technology
Uncertainty about requirements
Uncertainty about software engineering skills
Constant change
Deterioration of software design
Political risks
62
63. Software Engineering and Testing By Dr.MK Jayanthi Kannan
63
INTRODUCTION TO OBJECT
ORIENTATION
64. Software Engineering and Testing By Dr.MK Jayanthi Kannan
INTRODUCTION TO OBJECT ORIENTATION
The procedure of identifying software engineering
requirements and developing software specifications in
terms of a software system’s object model, which comprises
of interacting objects.
The primary tasks in object-oriented analysis (OOA) are:−
Identifying objects.
Organizing the objects by creating object model diagram.
Defining the internals of the objects, or object attributes.
Defining the behavior of the objects, i.e., object actions.
Describing how the objects interact.
64
65. Software Engineering and Testing By Dr.MK Jayanthi Kannan
BASIC CONCEPTS OF OBJECT-ORIENTED
(a) Classes
(b) Objects
(c) Inheritance
(d) Polymorphism
(e) Data Abstraction
(f) Data Encapsulation
65
OOP
Features
Objects
Classes
Inheritance
Polymorphism
Data
Abstraction
Data
Encapsulation
66. Software Engineering and Testing By Dr.MK Jayanthi Kannan
User-defined data types on which objects are created.
Objects with similar properties & methods are grouped
together to join a class.
Example:
66
(A) CLASSES
Book
S/w
Engineering S/w Testing S/w Quality
Object 1 Object 2 Object 3
Class
Class Name:
Book
Attributes:
Book Title: String
Language: English
Author Name: String
Operations:
addbook( )
deletebook( )
updatebook( )
view( )
67. Software Engineering and Testing By Dr.MK Jayanthi Kannan
NAMING CLASSES
Use capital letters
E.g. BankAccount not bankAccount
Use singular nouns
Use the right level of generality
E.g. Municipality, not City
Make sure the name has only one meaning
E.g. ‘bus’ has several meanings
67
68. Software Engineering and Testing By Dr.MK Jayanthi Kannan
Run-time entities that may represent a person, place or any
item.
Each object contains data & code to manipulate the data.
Data represents the attributes of that object and functions
represent the behaviour of that object.
Objects take up space in memory and have an associated
add like structure in C.
68
(B) OBJECTS
Data
Attributes
Functions
Data
Code
69. Software Engineering and Testing By Dr.MK Jayanthi Kannan
When a program is executed the object interact by sending
messages to one another.
69
(B) OBJECTS (CONTD.)
Object 1
Data
&
Functions
Object 2
Data
&
Functions
Object 3
Data
&
Functions
70. Software Engineering and Testing By Dr.MK Jayanthi Kannan
Class Object
Class is a data type. Object is an instance of class.
It generate objects. It gives life to class by adding
features.
Class doesn’t occupy memory
location.
Objects occupy memory
locations.
Class cannot be manipulated
since it is not available in
memory.
Objects can be manipulated.
70
DIFFERENCE B/W CLASS & OBJECT
71. Software Engineering and Testing By Dr.MK Jayanthi Kannan
Each derived class inherits the attributes of its base class & its
process is known as inheritance.
The existing classes are called the base classes/parent
classes/super-classes, and the new classes are called the derived
classes/child classes/subclasses.
Example:
71
(C) INHERITANCE
Class Name: Member
Attributes:
ID: long
Name: String
DOB: Date
Phone: long
addmem( )
deletemem( )
updatemem( )
view( )
Student
Rollno.:
School:
Faculty
ID.:
School:
Employee
ID.:
Division:
72. Software Engineering and Testing By Dr.MK Jayanthi Kannan
Inheritance is the process by which object of one class
acquire the properties of object of another class.
We can add additional features to an existing class without
modifying it.
The advantage of inheritance is:
It express commonality among class/objects.
Allows code reusability.
Highlights relationships.
Helps in code organization.
72
(C) INHERITANCE (CONTD.)
73. Software Engineering and Testing By Dr.MK Jayanthi Kannan
ORGANIZING CLASSES INTO INHERITANCE
Superclasses
Contain features common to a set of subclasses.
Inheritance hierarchies
Show the relationships among superclasses and subclasses
A triangle shows a generalization.
Inheritance
The implicit possession by all subclasses of features defined in its
superclasses.
73
74. Software Engineering and Testing By Dr.MK Jayanthi Kannan
EX: INHERITANCE HIERARCHY OF MATHEMATICAL OBJECTS
Rectangle
Quadrilateral
Circle
Ellipse Polygon Plane
Line
Shape3D
Shape2D
Matrix
Shape Point
MathematicalObject
74
75. Software Engineering and Testing By Dr.MK Jayanthi Kannan
Poly means ‘Many’, morphism means ‘forms’.
Representing any item in many forms.
Two types: compile-time & run-time.
Requires that there be multiple methods of the same name.
75
(D) POLYMORPHISM
76. Software Engineering and Testing By Dr.MK Jayanthi Kannan
INHERITANCE, POLYMORPHISM & VARIABLES
76
77. Software Engineering and Testing By Dr.MK Jayanthi Kannan
OBJECT ORIENTATED PARADIGMS
Two different paradigms:
Procedural paradigm
Object-oriented paradigm
An approach to the solution of problems in which all
computations are performed in the context of objects.
The objects are instances of classes, which:
are data abstractions.
contain procedural abstractions that operate on the objects.
A running program can be seen as a collection of objects
collaborating to perform a given task.
77
78. Software Engineering and Testing By Dr.MK Jayanthi Kannan
OBJECT ORIENTATION PARADIGMS
Procedural paradigm:
Software is organized around the notion of procedures
Procedural abstraction
Works as long as the data is simple
Adding data abstractions
Groups together the pieces of data that describe some entity
Helps reduce the system’s complexity.
Such as Records and structures
Object-oriented paradigm:
Organizing procedural abstractions in the context of data
abstractions
78
79. Software Engineering and Testing By Dr.MK Jayanthi Kannan
A VIEW OF TWO PARADIGMS
79
Procedural paradigm Object-oriented paradigm
81. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE PROCESS MODELS
o A simplified representation of a software process, presented from
a specific perspective.
Examples of process perspectives:
• Workflow perspective - represents inputs, outputs and
dependencies.
Data-flow perspective - represents data transformation
activities.
Role/action perspective - represents the roles/activities of
the people involved in software process.
A structured set of activities required to develop a
software system:
Specification
Design
Validation
Evolution
A software process model is the sequence of phases for the
entire lifetime of a product.
81
82. Software Engineering and Testing By Dr.MK Jayanthi Kannan
SOFTWARE PROCESS MODELS
(a) Waterfall Model
(b) Opportunistic Model
(c) Phased Released Model
(d) Spiral Model
(e) Evolutionary Model
(f) Concurrent Engineering Model
82
83. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(A) WATERFALL MODEL
Separate and distinct phases of specification and development.
83
84. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(A) WATERFALL MODEL (CONTD.)
Requirements gathering and analysis
System’s services, constraints, and goals are established by
consultation with system user.
Specification & System design
Partitions the requirement to either hardware or software system.
Establish the overall system architecture.
Software design involves in identifying the fundamental software system
abstractions and their relationships.
Implementation and unit testing
Software design is realized as a set of programs or program units.
Unit testing involves verifying that each unit meets its specification.
Integration and deployment
Individual program/s are integrated and tested as a complete system to
ensure that the product is deployed/released into the market.
Operation and maintenance
There are some issues which come up in the client environment. To
fix those issues, patches are released.
84
85. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(A) WATERFALL MODEL (CONTD.)
Inflexible partitioning of the project into distinct stages.
This makes it difficult to respond to changing customer
requirements.
Therefore, this model is only appropriate when the
requirements are well-understood.
Waterfall model describes a process of stepwise
refinement
Based on hardware engineering models.
Widely used in military and aerospace industries.
85
The drawback of the waterfall model is the
difficulty of accommodating change after the
process is underway.
86. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(A) WATERFALL MODEL (CONTD.)
Advantages of waterfall model:
Simple & Easy to understand and use.
Easy to manage.
Phases are processed & completed one at a time.
Requirements are very well understood.
Clearly defined stages.
86
87. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(A) WATERFALL MODEL (CONTD.)
Dis-advantages of waterfall model:
Once an application is in the testing stage, it is very difficult
to go back and change something that was not well-thought
out in the concept stage.
No working software is produced until late during the life
cycle.
High amounts of risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a
moderate to high risk of changing.
87
88. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(A) WATERFALL MODEL (CONTD.)
Examples: Waterfall model was used to develop enterprise
applications like:
Customer Relationship Management (CRM) systems,
Human Resource Management Systems (HRMS),
Supply Chain Management Systems,
Inventory Management Systems,
Point of Sales (POS) systems for Retail chains etc.
Development of Department Of Defense (DOD), military and
aircraft programs followed Waterfall model in many organizations.
This is because of the strict standards and requirements that
have to be followed.
88
89. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(B) OPPORTUNISTIC MODEL
Opportunistic model is what occurs when an organization does
not follow good engineering practices.
It does not acknowledge the importance of working out the
requirements and the design before implementing a system.
There is no explicit recognition of the need for systematic testing
and other forms of quality assurance.
The above problems make the cost of developing and maintaining
software very high.
Since there are no plans, there is nothing to aim towards this
approach, so it’s a bad approach mode.
89
90. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(C) PHASED - RELEASE MODEL
It introduces the notion of incremental development.
After requirements gathering and planning, the project should
be broken into separate subprojects, or phases.
Each phase can be released to customers when ready.
Parts of the system will be available earlier than when using a
strict waterfall approach.
It continues to suggest that all requirements be finalized at
the start of development.
90
91. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(C) PHASED - RELEASE MODEL (CONTD.)
91
92. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(D) SPIRAL MODEL
It explicitly embraces prototyping and an iterative approach to
software development.
Start by developing a small prototype.
Followed by a mini-waterfall process, primarily to gather
requirements.
Then, the first prototype is reviewed.
In subsequent loops, the project team performs further
requirements, design, implementation and review.
The first thing to do before embarking on each new loop is risk
analysis.
Maintenance is simply a type of on-going development.
92
94. Software Engineering and Testing By Dr.MK Jayanthi Kannan
Advantages of Spiral model:
High amount of risk analysis hence, avoidance of Risk is
enhanced.
Good for large and mission-critical projects.
Strong approval and documentation control.
Additional Functionality can be added at a later date.
Software is produced early in the software life cycle.
Disadvantages of Spiral model:
Can be a costly model to use.
Risk analysis requires highly specific expertise.
Project’s success is highly dependent on the risk analysis phase.
Doesn’t work well for smaller projects. 94
(D) SPIRAL MODEL(CONTD.)
95. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(E) EVOLUTIONARY MODEL
It shows software development as a series of hills, each
representing a separate loop of the spiral.
Shows that loops, or releases, tend to overlap each other.
Makes it clear that development work tends to reach a peak, at
around the time of the deadline for completion.
Shows that each prototype or release can take
different amounts of time to deliver,
differing amounts of effort.
95
96. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(E) EVOLUTIONARY MODEL (CONTD.)
96
Validation
Final
version
Development
Intermediate
versions
Specification
Initial
version
Outline
description
Concurrent
activities
97. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(E) EVOLUTIONARY MODEL (CONTD.)
Problems
Lack of process visibility
Systems are often poorly structured
Special skills (e.g. in languages for rapid prototyping) may be
required
Applicability
For small or medium-size interactive systems
For parts of large systems (e.g. the user interface)
For short-lifetime systems
97
98. Software Engineering and Testing By Dr.MK Jayanthi Kannan
Advantages:
In evolutionary model, a user gets a chance to experiment
partially developed system.
It reduces the error because the core modules get tested
thoroughly.
Disadvantages:
Sometimes it is hard to divide the problem into several versions
that would be acceptable to the customer which can be
incrementally implemented and delivered.
98
(E) EVOLUTIONARY MODEL (CONTD.)
99. Software Engineering and Testing By Dr.MK Jayanthi Kannan
(F) CONCURRENT ENGINEERING MODEL
It explicitly accounts for the divide and conquer principle.
Each team works on its own component, typically following a
spiral or evolutionary approach.
There has to be some initial planning, and periodic integration.
99
100. Software Engineering and Testing By Dr.MK Jayanthi Kannan
Module 1 Part 1 : Summary
So far in this Module 1 _Part 1, we discussed the followin
concepts..
Software Engineering Basics
Need & Characteristics of Software Engineering
Nature of Software Engineering
Types of Software
Software Engineering Projects & Activities
Software Quality
Introduction to Object-Orientation
Software Process Models
100
101. Software Engineering and Testing By Dr.MK Jayanthi Kannan
101
Be Courageous..
“ My message especially to
young peoples is
to
have courage to think
differently, courage to
invent, to travel the
unexplored path, courage
to discover the impossible
and to conquer the
problems and succeed ”.
Dr. A.P.J. Abdul Kalam
(1931 – 2015)