210 likes | 468 Views
IS F341 : Software Engineering. Dr. Yashvardhan Sharma Assistant Professor, CSIS Department, BITS-Pilani. Today’s Agenda. Introduction and Overview to the Course Why we study Software Engineering? What is Software Engineering?. Course Administration.
E N D
IS F341 : Software Engineering Dr. Yashvardhan Sharma Assistant Professor, CSIS Department, BITS-Pilani Software Engineering
Today’s Agenda • Introduction and Overview to the Course • Why we study Software Engineering? • What is Software Engineering? Software Engineering
Course Administration Instructor – Incharge: Dr. Yashvardhan Sharma Email : yash@pilani.bits-pilani.ac.in Chamber : 6120-I (Visit any time after dropping an email) Course website : http://csis/faculty/yash/SE TextBook 1:Pressman, R.S., Software Engineering: A Practitioner’s Approach, MGHISE, 7th Ed. 2010. TextBook 2:Larman, C., Applying UML and Patterns: An Introduction to Object-Oriented Analysis & Design and the Unified Process, Pearson Education, 3rd Ed., 2004. Evaluation Components Mid Sem Test (25%) Closed Book Assignments(35%) Research Paper (G) (15%) Problems/Exercises (I) (10%) Project (G) (10%) Comprehensive Exam (40%) 03/12(FN) Partly Open Software Engineering
Why Study Software Engineering? • The “software crisis” (NATO, ’68) “We build [software] systems like the Wright brothers built airplanes -build the whole thing, push it off the cliff, let it crash, and start over again." --From the 1968 NATO conference report. • software hard to create well • budget over runs • time over runs • faulty products • e.g. billing • SE is an attempt to apply engineering principles to software development • more process than art? Software Engineering
Software Crisis • Effort spent on software maintenance escalated high. • Worse yet, the personalized nature of many programs made them virtually un-maintainable. Software Engineering
Software: A Crisis on the Horizon • The problems are not limited to software that does not function properly. • Rather, the affliction encompasses problems associated with how we develop software, how we maintain a growing volume of existing software, and how we can expect to keep pace with a growing demand for more software. Software Engineering
Software Crisis • Pressman states that software development costs are in excess of $200 Billion per annum. • Sommerville states that world figures are in excess of $435 Billion and growing at 12% per annum. • Software engineering drove $1 trillion of economic and productivity growth over the last decade. • Technology is changing rapidly and software lifespan is a major problem. • Any small improvement in our processes will have major gains. Software Engineering
IBM Consultancy Group Included 24 leading companies • 55% of projects cost more than expected, • 68% overran their schedules, • 88% had to be substantially redesigned • For every six new large scale projects that are put into operation 2 others are cancelled • The average software development project overshoots its schedule by half. Big projects do worse • 75% of all large systems have operating failure that do not function as intended or are not used at all • Software engineers in the same company at the same level can have productivity differences of 100 times. They also vary from project to project. Software Engineering
Why Study Software Engineering? (1) • To acquire skills to develop large programs. • Exponential growth in complexity and difficulty level with size. • The ad hoc approach breaks down when size of software increases: --- “One thorn of experience is worth a whole wilderness of warning.” Software Engineering
Why Study Software Engineering? (2) • Ability to solve complex programming problems: • How to break large projects into smaller and manageable parts? • Learn techniques of: • specification, design, interface development, testing, project management, etc. Software Engineering
Why Study Software Engineering? (3) • To acquire skills to be a better programmer: • Higher Productivity • Better Quality Programs Software Engineering
Software Crisis • Software products: • fail to meet user requirements. • frequently crash. • expensive. • difficult to alter, debug, and enhance. • often delivered late. • use resources non-optimally. Software Engineering
Software Crisis • Software projects: • Over budgets. • Over Schedules. • Large number of Cancellation. • Uncontrolled and unmanaged. Software Engineering
Questions for Software Programmers • Why does it take so long to get software finished? • Why are development costs so high? • Why can’t we find all errors before we give the software to our customers? • Why do we spend so much time and effort maintaining existing programs? • Why do we continue to have difficulty in measuring progress as software is being developed and maintained? Software Engineering
What is Software Engineering? • Your thoughts • My thoughts • programming in the large • many people, more complex systems • disciplined development • repeatable practices • full life-cycle of activities Software Engineering
Software Engineering • The term was first used in the 1960s implying that software development SHOULD be engineered. • Engineering implies designing, thinking about requirements and users, planning development, testing and generally providing a quality system. A problem – what is quality? Quality is difficult to define, but you know when you haven’t got it! Software Engineering
What is Software Engineering? • Engineering approach to develop software. • Building Construction Analogy. • Systematic collection of past experience: • techniques, • methodologies, • guidelines. Software Engineering
Engineering Practice • Heavy use of past experience: • Past experience is systematically arranged. • Theoretical basis and quantitative techniques provided. • Many are just thumb rules. • Tradeoff between alternatives • Pragmatic approach to cost-effectiveness Software Engineering
What is Software Engineering? IEEE : Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). Software Engineering
Definition of SE • Software engineering is a discipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the user’s needs • Software engineering is concerned with theories, methods and tools for professional software development. Software Engineering
Software Engineering • Broad definition: The methods, processes, and technologies via which software systems are developed and maintained. • Encompasses many areas: – Planning and managing software projects – Requirements Analysis and Specification – System Modeling and Design – System Implementation – Testing and quality assurance – Maintenance Software Engineering