1 / 30

An Introduction to Software Engineering

An Introduction to Software Engineering. Zafar Saeed M.Phil Computer Science, Quaid-i-Azam University, Islamabad zafarsaeed@cs.qau.edu.pk. Historical Perspective. Term ‘Software Engineering’ was first coined in 1967.

Télécharger la présentation

An Introduction to Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. An Introduction to Software Engineering Zafar Saeed M.Phil Computer Science, Quaid-i-Azam University, Islamabad zafarsaeed@cs.qau.edu.pk

  2. Historical Perspective Term ‘Software Engineering’ was first coined in 1967. NATO Software Engineering Conference 1968 Garmisch, Germany. (Northern Atlantic Treaty Organization) Software Engineering is an engineering discipline whose goal is the cost-effective and in-time development of software systems. It is concerned with all aspects of software production and maintenance. 30-40 years back the quality of software was generally unacceptably low and the deadlines and cost limits were not being met. Engineering *Software Crisis* /Chronic affliction/ Turning point

  3. What is a Software? Software programs, Associated documents User docs System docs Config data Software updates, reports, bugs.

  4. rotate Software Characteristics • Software is engineered, it is not manufactured in the classical sense. • Software doesn’t wear out, but it does deteriorate. • Most of the softwares are custom built although industry is moving towards component based assembly. • Software is abstract and intangible. • Software is complex because: • Software goes through discrete states {changes states} • Maintenance is difficult. What will be the expected behavior of a Civil Engineer?

  5. Software Deterioration

  6. Information Transformer Software is used to produce, manage, acquire, modify, display, and transmit information anywhere in the world. • Why does software take so long to complete? • Why does it cost so much to produce? • Why can't all errors be found and removed before software is delivered to the customer? • Software Engineering is the discipline whose aim is the production of fault free software, delivered in timewithin budget, that satisfies user’s needs. • Technical and Managerial Skills Project Management

  7. Software Applications • System Software • Real Time Software • Business Software • Engineering and Scientific Software • Embedded Software • Personal Computer Software • Web-based Software • Artificial Intelligence Software

  8. Two Types of Software Products 1. Generic Products Shrink wrapped software • Bespoke Products Customized Examples and differences

  9. Software Engineering vs Computer Science & Systems Engineering • Computer Science is concerned with theory and fundamentals. • Software Engineering is concerned with the practicalities of developing and delivering useful software. • Systems Engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. • Software Engineering is part of this process. • Systems Engineers are involved in system specification, architectural design, integration and deployment.

  10. Example: Level of Professionalism If Software Engineers treated an operating system crash as seriously as Civil Engineers treat a bridge collapse, the overall level of professionalism within Software Engineering would rise. Software Engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the developmentconstraints and the resources available. “Press Ctrl+Alt+Del to reboot computer whenever it hangs up”. It is one of the famous example of lack of professionalism in software industry.

  11. Software Faults Examples • Computer Generated Bill $0.00 • During the 1991 Gulf War, a Scud missile penetrated the Patriot antimissile shield and struck barracks near Dahran, Saudi Arabia.

  12. 60-100 x Cost to change 1.5-6 x 1 x Definition Development After Release Cost to Detect and Correct a Fault

  13. Attributes of a Good Software Delivers the required functionalities • Maintainable • Dependable • Efficiency • Usable

  14. Software Economics The Computer Scientists investigates a variety of ways to produce software, some good some bad. But the Software Engineer is interested in only those techniques that make sound economic sense. Example: A new coding technique would result in code being produced in 9/10th of time.

  15. Language Independence and Paradigm Neutrality Software Engineering is language independent. Object oriented paradigm is superior to classical paradigm. (virtually unanimous agreement ??) Reasons for studying both paradigms • Not possible to fully appreciate without comparison . • Transfer is a slow process in organizations • Decision (Strengths/Weaknesses) When to use what? • Interactive systems • Real time systems

  16. SE Methods Methods are based on idea of developingmodels which may be represented graphically and using these methods as a specification or design. • Function Oriented • Data Oriented • Object Oriented Method Components • System Model Descriptions • Rules • Recommendations • Process Guidance Structured approach to software development by facilitating production of high quality software in a cost effective way.

  17. CASE Tools Upper CASE • Requirements analysis, system modeling, design Lower CASE • Implementation, code generator, debugger, program editors My CASE Tools Repository Key Point: Acquire your own CASE Tools and excel in their usage.

  18. Key Challenges Facing SE • Legacy Challenge • Old systems • Heterogeneity Challenge • Variations in systems • Delivery Challenge • Efficiency • Hardware dependent, system quality

  19. Professional and Ethical Responsibility • Confidentiality • Secure client data. • Competence • Correct estimation of skills for development • Intellectual Property Rights • Laws • Computer Misuse • Technical skills Ethical Dilemmas a company is responsible for developing a safety critical system and because of time pressure falsifies the safety validation records.

  20. Software Maintenance Corrective Enhancement Perfective Adaptive

  21. Easy Maintenance Example Declaring sales tax as a floating point constant. const float salesTax=6.0

  22. Relative Cost of Each Phase of Software Life Cycle

  23. Software Myths • My people have state-of-the-art software development tools, after all, we buy them the newest computers. • If we get behind schedule we can add more programmers and catch up. • A general statement of objectives is sufficient to begin with, we can fill details later. • Change can be easily accommodated because software is flexible.

  24. Once we write the program and get it to work our job is done. • Until I get the program running I have no way of assessing its quality. • The only deliverable work product for a successful project is the working program.

  25. An Overview of Course Contents Project Management Concepts, Planning, Estimation, Scheduling Software Quality Assurance Software Configuration Management Risk Management Product and Process Metrics Software Engineering Overview and Software Product Phases in Software Development Software Process and Process Models Concepts and Principles Analysis Phase Design Phase Object Oriented Software Engineering Software Testing CASE Tools Implementation Phase Integration Phase Maintenance Phase Reuse, Portability Interoperability Reengineering Case Studies SE Projects

  26. Concluding Remarks Software Engineering is the profession concerned with creating and maintaining software applications by applying Computer Science, Project Management, Domain Knowledge, and other skills and technologies. Whenever you think, we don’t have time for software engineering discipline, ask yourself: “Will we have time to do it over again”. Hence, Software Engineers must be committed to the concept of doing things right the first time.

  27. Software quality does not happen on its own after a product is finished. Quality must be built into every portion of the software development process. Software Engineers tend to be concerned with the technical elegance of their software products, whereas customers tend to be concerned only with whether or not a software product meets their needs and is easy to use. Software Engineering profession is big, important (even if imperfect), young (yet learning rapidly). Its practitioners continue improving their technologies and practices, and improving applications to better meet the needs of users.

  28. Computer Science theories are currently insufficient to act as a complete underpinning for Software Engineering. Outsourcing Practice of contracting software development work to a third party.

  29. When a computer software succeeds? • satisfies user needs • easy to use • flawless operation • easy to modify When a computer software fails? • users are dissatisfied • error prone • difficult to change • harder to use • Software failures receive a lot more publicity than software engineering success stories.

  30. Terms and Terminology ? • Software Quality • Software Crisis • Domain Engineering • Software Product • Embedded Software • Software Abstraction • Software Maintenance • Software Bugs • Manufacturing • Engineering

More Related