This document provides an introduction to software engineering. It defines software engineering as the application of a systematic, disciplined approach to software development, operation, and maintenance. The document discusses what software is, important attributes of good software like maintainability and dependability, and characteristics of software like its engineered nature and ability to change without wearing out. It also outlines some key aspects of software engineering like the importance of processes, methods, tools, and a quality focus.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
51 views31 pages
Introduction To Software Engineering
This document provides an introduction to software engineering. It defines software engineering as the application of a systematic, disciplined approach to software development, operation, and maintenance. The document discusses what software is, important attributes of good software like maintainability and dependability, and characteristics of software like its engineered nature and ability to change without wearing out. It also outlines some key aspects of software engineering like the importance of processes, methods, tools, and a quality focus.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 31
Introduction
Introduction to software engineering
Computer Science Software Engineering Slide 1
Objectives To introduce software engineering and to explain its importance To set out the answers to key questions about software engineering
Computer Science Software Engineering Slide 2
What is Software ? instructions that when executed provide desired features, function and performance. data structures that enable the programs to adequately manipulate information documents that describe the operation and use of the programs. Software products may be • Generic - developed to be sold to a range of different customers • Custom - developed for a single customer according to their specification
Computer Science Software Engineering Slide 3
What are the attributes of good software? The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable Maintainability • Software must evolve to meet changing needs Dependability • Software must be trustworthy, reliable and secured Efficiency • Software should not make wasteful use of system resources Usability • Software must be usable by the users for which it was designed
Computer Science Software Engineering Slide 4
Some more Software Characteristics
Software is engineered or developed, not
manufactured in the traditional sense. Software does not wear out in the same sense as hardware. But it does deteriorate due to change. Although Industry is moving toward component based construction, most software continues to be custom built.
Computer Science Software Engineering Slide 5
Evolving Role Of Software Software is both a product and a vehicle for delivering a product.
Computer Science Software Engineering Slide 6
Changing Nature of Software Categories of Computer Software : System Software Application Software Embedded Software Product-line Software Web Applications Distributed computing Net Sourcing Open source
Computer Science Software Engineering Slide 7
Software Succeeds when meets the needs of the people who use it( achieve customer satisfaction) performs flawlessly over a long period of time. on-time delivery and developed within the budgeted cost easy to modify and even easier to use. it can and change things for the better. Fails when users are dissatisfied. error prone. difficult to change and harder to use. Computer Science Software Engineering Slide 8 Introduction to Software engineering To succeed we need discipline, when software is designed and built. Engineering approach is needed Software community has continually attempted to develop technologies that will make it easier and less expensive and build and high quality computer programs.
Computer Science Software Engineering Slide 9
Introduction to Software engineering Software engineering is a framework that encompasses a process, theories, set of methods and tools for professional software development. “In modern society, its role is to provide systems and products that enhance the material aspects of human life, thus making life easier, faster and more enjoyable.” Richard Fairley and Mary Willshire
Computer Science Software Engineering Slide 10
What is software engineering? Software engineering is an engineering discipline which is concerned with all aspects of software production 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 development constraints and the resources available
Computer Science Software Engineering Slide 11
Software Engineering- Realities It follows that a concerted effort should be made to understand the problem before a software solution is developed. It follows that design becomes a pivotal activity. It follows that software should exhibit high quality. It follows tat software should be maintainable. Conclusion:-“Software in all of its forms and across all Application Domains should be Engineered”
Computer Science Software Engineering Slide 12
Software Myths • Erroneous beliefs about software and the process that is used to build it. • Reasonable statements of facts
Management Myths We already have a book that’s full of standards and procedures for building software. Won’t that provide my people with everything they need to know? If we get behind the schedule, we can add more programmers and catch up (“Mongolian Horde concept”) If I decide to outsource the software project to a third party, I can just relax and let that firm build it.
Computer Science Software Engineering Slide 14
Customer Myths A general statement of objectives is sufficient to begin writing programs - we can fill in the details later. Software requirements continually change, but change can be easily accommodated because software is flexible.
Computer Science Software Engineering Slide 15
Practitioners Myths 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. Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down.
Recognition of software realities is the first step toward formulation of
practical solutions for software engineering
Computer Science Software Engineering Slide 16
Definitions of Software engineering “Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.” - Fritz Bauer “The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is the application of engineering to software”. -IEEE[IEEE93a] The study of approaches of above -IEEE[IEEE93a]
Computer Science Software Engineering Slide 17
Software Engineering-Layered Technology A quality focus:- Any engineering approach must rest on an organizational commitment to quality. Total quality management, Six sigma philosophies foster a continuous process improvement culture. Process It enables rational and timely development. It defines framework that must be established for effective delivery of SE technology. It forms the basis for management control of software projects.
Computer Science Software Engineering Slide 18
Software Engineering-Layered Technology Methods Provide the technical how-to’s for building software. It encompass broad array of tasks that include communication, requirement analysis, design modelling ,program construction, testing and support. Rely on a set of basic principles, include modelling activities other descriptive techniques. Tools Provide automated and semi automated support for the process and the methods. Tools are integrated so that information created by one tool can be used by other tool
Computer Science Software Engineering Slide 19
What is a software process? A process defines “who is doing what, when and how to reach a certain goal” A process is a collection of activities, actions and tasks that are performed when product is to be created. An Activity strives to achieve a broad objective and is applied to all applications. An Action encompasses a set of tasks that produce a major work product. A task focuses on a small, but well-defined objective.
Computer Science Software Engineering Slide 20
What is a software process? A process is not a rigid prescription, rather it is an adaptable approach. The intent is to deliver software in timely manner and with sufficient quality. A process framework establishes the foundation for a complete SE process by identifying small number of framework activities.
Computer Science Software Engineering Slide 21
5 generic framework activities Communication Planning Modelling Construction Deployment
Computer Science Software Engineering Slide 22
Umbrella activities Software project tracking and control Risk management. Software quality assurance Technical Reviews Measurement Software configuration management Reusability management Work product preparation and production.
Computer Science Software Engineering Slide 23
How do process model differ from another? Overall flow of activities, actions, and tasks and the interdependencies among them. Degree to which actions and tasks are defined within each framework activity Degree to which work products are identified and required Manner in which quality assurance activities are applied. Manner in which project tracking and control activities are applied Overall degree of detail and rigor with which the process is described Degree to which the custom and other stakeholders are involved with the project Level of autonomy given to the software team. Degree to which team organisation and role are prescribed.
Computer Science Software Engineering Slide 24
Process models Prescriptive process models - stress on detailed definition, identification and application of process activities and tasks. Agile process models -emphasize project “agility" and follow set of principles that lead to more informal and adaptable approach to software process.
Computer Science Software Engineering Slide 25
Software Engineering Practice Its Essence Understand the problem( communication and analysis). Plan a solution( modelling and software design). Carry out the plan( code generation). Examine the result for accuracy (testing and quality assurance).
Computer Science Software Engineering Slide 26
Software Engineering Practice Understand the problem( communication and analysis). Who has a stake in the solution to the problem? What are the unknowns? What data, functions and features are required to properly solve the problem? Can the problem be compartmentalized? Can the problem be represented graphically? Can an analysis model be created?
Computer Science Software Engineering Slide 27
Software Engineering Practice Plan a solution( modelling and software design). Have you seen similar problems before? Are there patterns that are recognizable in a potential solution? Is there existing software that implements the data, functions and features that are required? Has a similar problem been solved? If so, are elements of the solution reusable? Can sub problems be defined? If so, are solution readily apparent for the sub problems ? Can you represent a solution in a manner that leads to effective implementation? Can a design model be created?
Computer Science Software Engineering Slide 28
Software Engineering Practice Carry out the plan( code generation). Does the solution conform to the plan? Is source code traceable to the design model? Is each component part of the solution provably correct? Have the design and code been reviewed, or better, have correctness proofs been applied to the algorithm?
Computer Science Software Engineering Slide 29
Software Engineering Practice Examine the result for accuracy (testing and quality assurance). Is it possible to test each component part of the solution? Has a reasonable testing strategy implemented? Does the solution produce results that conform to the data, functions, and features that are required? Has the software been validated against all stakeholder requirements?
Computer Science Software Engineering Slide 30
General Principles Principle is “ An important law or assumption required in a system of thought.” The Reason It All Exists Keep it Simple, Stupid! Maintain the vision What You Produce, Others Will Consume Be Open to the Future Plan Ahead for Reuse Think!