software engineering introduction is a gateway of engineer

rajajacobc 27 views 36 slides Aug 20, 2024
Slide 1
Slide 1 of 36
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36

About This Presentation

introduction to software engineering


Slide Content

‹#› SOFTWARE ENGINEERING – 21CS1303 UNIT I SOFTWARE PROCESS MODELS Introduction to Software Engineering, Software Process, Perspective and Specialized Process Models – Waterfall model – Spiral Model – V shaped model – RAD model – Iterative Model – Prototype model. UNIT-II REQUIREMENTS ANALYSIS AND SPECIFICATION Software Requirements: Functional and Non-Functional, User requirements, System requirements, Software Requirements Document – Requirement Engineering Process: Feasibility Studies, Requirements elicitation and analysis, requirements validation, requirements management-Classical analysis: Structured system Analysis, Petri Nets- Data Dictionary.

‹#› SOFTWARE ENGINEERING – 21CS1303 UNIT-III SOFTWARE DESIGN Design process – Design Concepts-Design Model– Design Heuristic – Architectural Design - Architectural styles, Architectural Design, Architectural Mapping using Data Flow- User Interface Design: Interface analysis, Interface Design –Component level Design: Designing Class based components, traditional Components. UNIT-IV TESTING AND MAINTENANCE Software testing fundamentals-Internal and external views of Testing-white box testing - basis path testing-control structure testing-black box testing- Regression Testing – Unit Testing – Integration Testing – Validation Testing – System Testing and Debugging –Software Implementation Techniques: Coding practices-Refactoring-Maintenance and Reengineering-BPR model-Reengineering process model-Reverse and Forward Engineering – Software Configuration Management.

‹#› SOFTWARE ENGINEERING – 21CS1303 UNIT-V PROJECT MANAGEMENT Software Project Management: Estimation – LOC, FP Based Estimation, Make/Buy Decision COCOMO I & II Model – Project Scheduling – Scheduling, Earned Value Analysis Planning – Project Plan, Planning Process, RFP Risk Management – Identification, Projection - Risk Management-Risk Identification-RMMM Plan-CASE TOOLS-Introduction to Agility: Extreme programming, Scrum, DevOps TEXT BOOKS Roger S. Pressman, Bruce R.Maxim―Software Engineering – A Practitioner’s Approach, Eight Edition, McGraw-Hill International Edition, 2015. 2. IanSommerville, ―Software Engineering, 9th Edition, Pearson Education Asia, 2011. 3. Gene Kim, Jez Humble, Patrick Debois, and John Willis, The DevOps Handbook- How to Create World-Class Agility, Reliability, & Security in Technology Organizations, IT Revolution Press,2nd Edition,2016

‹#› Introduction to Software Engineering

‹#› Activity Think about all the devices and systems that you encounter in your everyday life which have software controlling them… List as many as you can Virtually all countries depend on complex computer-based systems.

‹#› Software Software is: Instructions (computer programs) that when executed provide desired features, function, and performance; Data structures that enable the programs to adequately manipulate information, Descriptive information in both hard copy and virtual forms that describes the operation and use of the programs.

‹#› What is Software? System Documentation User Documentation

‹#› Attributes of good software Functional attributes (performance; what the system does). Non-functional attributes (quality; how the system does it). Product Characteristic Description Maintainability Evolution qualities such as Testability, extensibility. Dependability Reliability, security, safety. Efficiency Response time, processing time, memory utilization. Usability Easy to learn how to use the system by target users. Efficient to use the system by users to accomplish a task. Satisfying to use by intended users.

‹#› Activity What are the key attributes for.. Interactive game Banking system Cardiac monitor in an ICU unit Players, score, scenes, theme. Client accounts, stocks bonds, money transfers. heart rate, temperature, blood pressure.

‹#› Software Development Crises Projects were : Late. Over budget. Unreliable. Difficult to maintain. Performed poorly.

‹#› Software errors…. the cost Errors in computer software can have devastating effects.

‹#› Software Crisis Example 1: 2009,Computer glitch delays flights Saturday 3 rd October 2009-London, England (CNN) Dozens of flights from the UK were delayed Saturday after a glitch in an air traffic control system in Scotland, but the problem was fixed a few hours later. The agency said it reverted to backup equipment as engineering worked on the system. The problem did not create a safety issue but could cause delays in flights. Read more at: http://edition.cnn.com/2009/WORLD/europe/10/03/uk.flights.delayed

‹#› Software Crisis Example 2: Ariane 5 Explosion European Space Agency spent 10 years and $7 billion to produce Ariane 5. Crash after 36.7 seconds. Caused by an overflow error.  Trying to store a 64-bit number into a 16-bit space. Watch the video: http://www.youtube.com/watch?v=z-r9cYp3tTE

‹#› Software Crisis Example 3: 1992, London Ambulance Service Considered the largest ambulance service in the world. Overloaded problem. It was unable to keep track of the ambulances and their statuses. Sending multiple units to some locations and no units to other locations. Generates many exceptions messages. 46 deaths.

‹#› Therefore… A well-disciplined approach to software development and management is necessary. This is called engineering.

‹#› Software Engineering “An engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use .” Sommerville, pg.7 The IEEE definition: Software Engineering: The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

‹#› QUICK LOOKS What is it? Who does it? Why is it important? What are the steps? What is the work product? How do I ensure that I’ve done it right?

‹#› Why is Software Engineering important? Complex systems need a disciplined approach for designing, developing and managing them. you can have it fast, you can have it right, or you can have it cheap. Pick two!”

Software is developed or engineered, it is not manufactured in the classical sense. Software is custom built Software should achieve a good quality in design and meet all the specifications of the customer. Software does not wear out i.e. it does not lose the material. ‹#› Characteristics of software

Software should be inherently complex. Software must be efficient i.e. the ability of the software to use system resources in an effective and efficient manner. Software must be integral i.e. it must prevent from unauthorized access to the software or data ‹#› Characteristics of software

‹#› Types of Software Seven Broad Categories of software are challenges for software engineers • System software- System software is a collection of programs written to service other programs. System software: such as compilers, editors, file management utilities. • Application software : stand-alone programs for specific needs. This software are used to controls business needs. Ex: Transaction processing. • Artificial intelligence software- Artificial intelligence (AI) software makes use of nonnumeric algorithms to solve complex problems. Application within this area include robotics, pattern recognition, game playing .

‹#› Types of Software Engineering and scientific software -Engineering and scientific software have been characterized by "number crunching" algorithm. Embedded software resides within a product or system. (key pad control of a microwave oven, digital function of dashboard display in a car) Product-line software focus on a limited marketplace to address mass consumer market. (word processing, graphics, database management) WebApps (Web applications) network centric software. As web 2.0 emerges, more sophisticated computing environments is supported integrated with remote database and business applications.

‹#› Software engineering - Layered technology Software engineering is a fully layered technology. To develop a software, we need to go from one layer to another. All these layers are related to each other and each layer demands the fulfillment of the previous layer.

‹#› Software engineering - Layered technology Quality focus The characteristics of good quality software are: Correctness of the functions required to be performed by the software. Maintainability of the software Integrity i.e. providing security so that the unauthorized user cannot access information or data. Usability i.e. the efforts required to use or operate the software .

‹#› Software engineering - Layered technology Quality focus The characteristics of good quality software are: Correctness of the functions required to be performed by the software. Maintainability of the software Integrity i.e. providing security so that the unauthorized user cannot access information or data. Usability i.e. the efforts required to use or operate the software .

‹#› Software engineering - Layered technology 2. Process It is the base layer or foundation layer for the software engineering. The software process is the key to keep all levels together. It defines a framework that includes different activities and tasks. In short, it covers all  activities, actions and tasks required to be carried out for software development.

‹#› Software engineering - Layered technology 3. Methods The method provides the answers of all 'how-to' that are asked during the process. It provides the technical way to implement the software. It includes collection of tasks starting from communication, requirement analysis, analysis and design modelling, program construction, testing and support.

‹#› Software engineering - Layered technology 4. Tools The software engineering tool is an automated support for the software development. The tools are integrated i.e the information created by one tool can be used by the other tool. For example:  The Microsoft publisher can be used as a web designing tool.

Case Study – An Insulin Pump Control System A personal insulin pump An embedded system in an insulin pump used by diabetics to maintain blood glucose control. Insulin pump control system Collects data from a blood sugar sensor and calculates the amount of insulin required to be injected. Calculation based on the rate of change of blood sugar levels. Sends signals to a micro-pump to deliver the correct dose of insulin. Safety-critical system as low blood sugars can lead to brain malfunctioning, coma and death; high-blood sugar levels have long-term consequences such as eye and kidney damage. 17

Insulin pump hardware architecture 22

Activity model of the insulin pump 19

Case Study An Embedded System for Smart Card ‹#›

‹#› The Cost of Software Engineering Depends on: The process used, and The type of software being developed. Each generic approach has a different profile of cost distribution. Roughly 60% of costs are development costs, 40% are testing costs. For custom software , evolution costs often exceed development costs.

‹#› Challenges facing software engineering Challenge Why? Software needs to .. Heterogeneity Different computers, different platforms, different support systems. Cope with this variability. Delivery Businesses are more responsive 🡪 supporting software needs to evolve as rapidly. Be delivered in shorter time without compromising quality. Trust Software is a part of many aspects of our lives (work, study, leisure). Demonstrate that it can be trusted by users.

‹#› Question Answer 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. What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable. What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production. What are the fundamental software engineering activities? Software specification, software development, software validation and software evolution. What is the difference between software engineering and computer science? Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software. What is the difference between software engineering and system engineering? System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process. Frequently asked questions about software engineering

‹#› Frequently asked questions about software engineering Question Answer What are the key challenges facing software engineering? Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software. What are the costs of software engineering? Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. What are the best software engineering techniques and methods? While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. You can’t, therefore, say that one method is better than another. What differences has the web made to software engineering? The web has led to the availability of software services and the possibility of developing highly distributed service-based systems. Web-based systems development has led to important advances in programming languages and software reuse.
Tags