 Hello everyone, myself, M.A. Mahant, working in computer science and engineering department as an assistant professor in Vulture Institute of Technology, S.O.L.A.P. Today we are going to discuss the topic software engineering challenges and approach. Learning outcomes are, at the end of this session, students will be able to describe the problem domain in software engineering and describe software engineering challenges and approach. First, we are going to see the definition of software engineering. Software engineering is a systematic approach of developing the software. It is a set of phases or activities. The end product is developed software. So, the importance of software engineering. Software engineering plays an important role in education, commercial organization, research, social media, military and government organization. Mainly, softwares can be classified into two types, application software and system software. See, actually, in software engineering, there are a number of phases, such as required analysis specification, first phase, designing is the second phase, coding is the third phase, testing is the fourth phase, and maintenance and operational is the fifth phase of software engineering. So, the application software is nothing but the software which is used in the commercial organization that is called the application software. For example, Microsoft Visual Basic, VB.NET, these are the examples of application software and the system software. System software is nothing but the software which can be used to develop another software that is called the system software. For example, C++, VC++, Java, these are all the system software. There are some problem domains which arise in software engineering. There are a number of problems in problem domain of software engineering. The first is comparison of student software and industry strength of software. For student software, no need of scheduling, costing and documentation. So, effort estimation is not required. See, the problem statement is given to the student and student is solving that problem statement by using some programming languages. So, there is no need of any scheduling, costing or documentation, also effort estimation. So, there is no need of quality factors such as reliability, portability, efficiency, maintainability and usability in student-led software. But these all things are needed for industrial strength of software. So, for the industrial strength of software, the scheduling, costing, documentation and all quality factors such as reliability, portability, efficiency and maintainability and usability is required. So, this is used in business routine to solve the problems of clients and used by clients of that organization. The second problem domain is software is expensive. See, software development is labor intensive. So, productivity means total number of lines of code developed for that specific software product. So, $20 per thousand lines of codes per month. Now, software cost is 80% and hardware cost is 20%. So, consider all these things for the software is expensive. So, this is the labor intensive job and considering the cost of hardware and software, this software is more expensive. The third problem domain is deployment of software is late and reliable. See, after development of software, it is deployed to the client. But for some projects are running out of schedule and cost. Due to some reason, the delivery is late such as inaccuracy and problem in software, due to failure of electrical and mechanical systems, due to bugs and errors occurred in design and development phase, due to lack of physical and skillful human resources. So, there is so many reasons that the delure of software gets failure, due to the lack of non-skillful human resources or due to hardware failure, software failure, or due to bugs and errors in the software. Then, for next problem domain is maintenance and reworks. After the development of software, it is deployed to the client. If client faces any problems or errors while operating that software, then developer bring that software in their office and repair the software by removing bugs and errors. This is called regression testing and rework can be done. Again, repaired software deployed to the clients, maintenance take 30 to 40% efforts and cost that development cost of that software. So, in maintenance rework, the problem which arises at the client side, they are repaired at the development office and that errors are removed and bugs are removed by a big modification that software. So, the rework can be done here. So, this is also one part of the problem domain that is maintenance and reworks. There are two types of maintenance, are corrective maintenance, adaptive maintenance. The corrective, the errors from the software is called corrective maintenance. We are removing the error from the program that is called as the corrective errors. And removing the errors or convenience of the software in the latest version or modification or upgrading the software to adaptive maintenance. So, in adaptive maintenance, we are updating the software. At that time, some testing can be done. That is, some maintenance can be done by converting the software to the latest in latest version or some modification can be done that is called as the adaptive maintenance. So, there are two types of maintenance, corrective maintenance, adaptive maintenance. So, commonly, removing the error from the program is called corrective maintenance. And the adaptive maintenance means a conversion of software into the latest version. The next part is the software engineering challenges. The first part, satisfy all the needs of a requirement from the developed software. So, this is one of the challenge. Means, whatever the requirements you have specified in SRS, it means software required specific in document, which is the output of first phase. That is, required analysis and specification. So, when you are developing your software, you have to see that all the requirements of the customer are satisfied by that software. You are converting all the customer requirement into the automation. So, this is one of the challenge that you have to satisfy all the customer requirements by using that software. So, the second software challenge is scale. Scale means as the size of the project increases, then we are moving from some informal method of development to formal method of development. So, more resources, methods, tools, and techniques, and management activity are required for software development. See, scaling means what, as the size of the project goes on increasing. Definitely, you are moving from informal to formal method of development. So, more number of resources, methods, tools, techniques are required for developing that software. The scaling is one of the softening challenges. The next is quality and productivity. If quality of the software is high, then productivity of that software is high. Cost, schedule, and quality are important factors in software development. Productivity means development of thousand lines of code per person, per month for that software. So, maintaining quality and productivity is one of the softening challenge. The quality attributes can be defined as the functionality, means the capability to provide functions which meets stated implied needs when the software is used. Second quality attribute is reliability, means failure-free operation of that software, the capability to maintain the special level of performance. Third quality attribute is usability, the capability to understood, learned, and used. The next softening challenge is consistency and repeatability. So, high quality software being developed with high productivity, poor quality software being developed with poor productivity. It is a challenge in the software in the ring. How to ensure that successful results can be repeated? And there can be some degree of consistency in quality and productivity. Deferring quality and productivity for different projects is an issue. So, maintaining consistency and the repeatability is one of the software in the ring challenges. So, providing consistency in quality, productivity, improving in their processes, techniques, tools, and methods use some frameworks for software development such as ISO 9001 and CMM Capability Maturity Model used by an organization. So, some frameworks are available for providing quality to that software, that is ISO 9001 and Capability Maturity Model which consists of different quality criteria and quality attributes. By using this, we are maintaining the quality to that software. The next challenge is changes. Changes in the business rapid. So, software will not be rigid. It accepts all the changes. It accepts modification. Number of changes in software. It accommodates all the changes and solves few problems. That the changes are resistant. Software is ready to accept any modification after development. So, changes due to business requirements or changes due to some modifications at the client side, changes due to some requirement of the programs or some change in the requirements. So, the changes can be made in the software. So, that is one of the software challenge. Now, I am going to ask one question to all the students. You have to answer that question. Dash means total number of lines, of course, developed for that specific software product. Option A, productivity, option B, portability, option C, efficiency, option D, reliability. Choose any one of the option from the given options. Pause the video and write the answer. The answer is productivity. So, productivity means total number of lines, of course, developed for that specific software product. The next part is the eye and triangle. See, for maintaining the quality and productivity, you have to provide some technology, some processes, and some people who are working that organization. So, in software development, what they are saying that you have to always use the recent technology, the recent software, hardware for developing that software. These are the references. Thank you.