1 ANDRES PICO USE SLIDESHOW OR PRESS F5 FOR BETTER EXPERIENCE! GIFS USED!

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

System Development Life Cycle (SDLC)
Lecture # 2 : Process Models
Basic guidelines for the creation of a DW Create corporate sponsors and plan thoroughly Determine a scalable architectural framework for the DW Identify.
Chapter 1 4th Edition What is Software Engineering Shari L. Pfleeger
Lab/Sessional -CSE-374. SYSTEM DEVELOPMENT LIFE CYCLE.
System Design and Analysis
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne. – Times: –See noticeboard outside.
CSC230 Software Design (Engineering)
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Design, Implementation and Maintenance
Introduction to Computer Technology
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Chapter 1 Database Systems. Good decisions require good information derived from raw facts Data is managed most efficiently when stored in a database.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
SYSTEM ANALYSIS AND DESIGN
Introduction to Systems Analysis and Design Trisha Cummings.
The Software Development Life Cycle: An Overview
CIS 321—IS Analysis & Design Chapter 1: The World of the Modern Systems Analyst.
Computers & Employment By Andrew Attard and Stephen Calleja.
What is Software Engineering? the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”
Chapter 8: Systems analysis and design
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
Chapter 1 What is Software Engineering Shari L. Pfleeger Joanne M. Atlee 4 th Edition.
CS 474 Database Design and Application Terminology Jan 11, 2000.
Introduction To System Analysis and Design
OBJECT ORIENTED SYSTEM ANALYSIS AND DESIGN. COURSE OUTLINE The world of the Information Systems Analyst Approaches to System Development The Analyst as.
CSE 219 Computer Science III Program Design Principles.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
CS 111 – Nov. 22 Chapter 7 Software engineering Systems analysis Commitment –Please read Section 7.4 (only pp ), Sections –Homework #2.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Computers Are Your Future Tenth Edition Chapter 13: Systems Analysis & Design Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall1.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Modeling system requirements. Purpose of Models Models help an analyst clarify and refine a design. Models help simplify the complexity of information.
What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,
1 EE29B Feisal Mohammed EE29B: Introduction to Software Engineering Feisal Mohammed Ph: x3156.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Software Engineering Requirements + Specifications.
CSE 303 – Software Design and Architecture
第 11 組 MIS 報告. Phases of any information system ~ recognition of a business problem or opportunity ~ recognition of a business problem or opportunity.
IS2210: Systems Analysis and Systems Design and Change Twitter:
Oman College of Management and Technology Course – MM Topic 7 Production and Distribution of Multimedia Titles CS/MIS Department.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Modern Systems Analysis and Design Third Edition Chapter 2 Succeeding as a Systems Analyst 2.1.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Observing the Current System Benefits Can see how the system actually works in practice Can ask people to explain what they are doing – to gain a clear.
1 CEN 4020 Software Engineering PPT4: Requirement analysis.
Introduction to System Analysis and Design MADE BY: SIR NASEEM AHMED KHAN DOW VOCATIONAL & TECHNICAL TRAINING CENTRE.
Procedural programming Procedural programming is where you specify the steps required. You do this by making the program in steps. Procedural programming.
Chapter 1 SOFTWARE ENGINEERING What is Software Engineering.
1 Advanced Computer Programming Project Management: Basics Copyright © Texas Education Agency, 2013.
 System Requirement Specification and System Planning.
MANAGEMENT INFORMATION SYSTEM
Information Systems Development
CompSci 280 S Introduction to Software Development
Component 1.6.
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Unified Modeling Language
Tools of Software Development
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software life cycle models
PPT1: Basics of software engineering
CS385T Software Engineering Dr.Doaa Sami
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Presentation transcript:

1 ANDRES PICO USE SLIDESHOW OR PRESS F5 FOR BETTER EXPERIENCE! GIFS USED!

2 SOFTWARE In the 21 st century software is found everywhere, almost every aspect of life in this century requires software engineering! From our breakfast when we retrieve food from the fridge that uses code from an embedded chip To fulfill our duties like work, homework, classes, paying debts

3 And sometimes we take if for granted..

4 Now software is so complex that we even have self driving cars! But every day it keeps evolving.. Less than two decades ago we had boring phones that didn’t have colored screens  2000’s NOKIA 3310!!!

5 Problem solving But there is something crucial we mustn’t forget! Not every problem we will face out in the industry will be as easy as the ones confronted in our programming concepts class. From time to time we will find very hard to solve problems that will require lots of thought.

6 For this reason, it is always great to have a good approach when solving problems. A first good step is to apply the process of analysis. Which is very similar to a well known concept in our career: “Divide and Conquer” -During the analysis process we must divide the problem into smaller pieces. -Then we solve the subproblems, which eventually help us to solve the big problem.

7 But solving a problem does not stop there, as the process of ‘synthesis’ is quite challenging.. The process of synthesis consists on bringing all the pieces together(remember the subproblems you solved in the analysis process?). This requires lots of thought and planning.

8 Lucky for us, there are problem solving tools that make our job easier. For example: A specific compiler or programming language that meets our system’s needs. This would be known as a tool. Or the use of functions and classes as procedures to keep consistency in the way we do something. Nonetheless, there is not an absolute best tool or approach, there are specific tools that are best for some specific tasks. This is known as the paradigm.

9 Software Engineering Computer science and Software Engineering may be related but there are certainly some differences we should remember. Computer science deals with theories, algorithms, the creation of new tools. While software engineering has to do with the efficient use of the computer as a tool to create software solutions to problems. A software engineer is a person with the skill, understanding, and experience to develop and maintain code in the most robust, simple, and efficient way possible. But just as any other person (YOU!), software engineers also make mistakes. NASA’s 1999 orbiter project is an example of such. The orbiter was worth 327 million dollars and crashed upon arriving into Mars. The reason? English metrics were used by the programmer… The IRS lost millions of dollars for several years after obtaining an inadequate tax form processing system.

10 Good Quality Software As any other product, quality is certainly expected in software systems. The factors that determine the quality of the product varies according who you ask, and what the functionality of the system is. The quality of the process can also affect the quality of the product, as this is the moment when mid-project decisions and changes are made. It is good to keep in mind that although some software engineers might determine quality by a program’s technical attributes, the customers in the business environment determine it in a return on investment way(ROI). At the same time it is very hard to agree on the qualities that define the return on investment. The ROI varies from client to client. Some consider client’s satisfaction as the ROI, others consider return of capital, maintenance costs, saved time.

11 As stated before, software engineers might measure quality of technical attributes. The picture below shows many of the common ‘attributes’ that software engineers look for.

12 Participants in the Software Process The process of generating software comprehends 3 types of entities: Customer: The person or group of people that pay for and request the product. User: The person or group of people that will use the product. Developer: The person or group of people that develops the product and does software engineering. At the same time the developers can hire subcontractors which will provide them with tools to make their work easier

13 A Systems Approach We have met with the term software system a few times, but what is a system in the systems approach? A system is a collection of things or set of activities with defined borders. An activity is an action of something that happens in the system, and it is composed of objects. An object is an element that the activity uses. For example if a table in a database is created, that is an activity. Then each record found in the table would be an element. The postal office system can be used of an example: Letters and packages come in They are processed They are sent to delivery to the right addresses

14 Interrelated Systems We should keep in mind though that when we refer to a system, in many occasions it is a small piece of a bigger system. Still, we’d rather work with the smaller systems of a bigger systems sometimes to make the task easier and simpler for us. This is why we must define boundaries correctly. Not only when creating systems this approach is useful but when modifying them. Let’s consider incremental development for instance. Incremental development consists of marking stages of changes, that slowly are incorporated one by one. Keep in mind that each stage must be fully incorporated to the system before considering the next stage. With time, the different stages incorporated one at a time will result in the desired new system. It may be a relatively slow process, but it reduces bugs and failures when done correctly.

15 Incremental development example USF used to work with blackboard a few semesters ago. -Teachers inputted grades, files, and assignments to the software system. -Then, students had access to them. USF then made the decision to work with canvas. So USF decided to make the transition in stages(Similar to incremental development). -Before removing blackboard, it added canvas. -Then, it allowed one semester for professors and staff to familiarize with canvas. -Professors then had to transport things to canvas. -After making sure that canvas could be fully integrated and that it would replace blackboard successfully. -It proceeded to remove blackboard, resulting in the same system’s functionality but with a different tool. A great change overall, but accomplished in stages.

16 The Engineering Approach In the production of a system software there are some crucial steps that must occur to achieve success: Establish requirements with the clients based on their needs. Design of the system software based on the requirements agreed. Documentation and outline of components to be made (planning phase). Building of components. Integration of components (Joining all the pieces together). Changes in design which may occur at any time during the production. Maintenance of product. Of course success could not be achieved without a good development team. There are some key roles that must be fulfilled in order to be as effective as possible: Requirement analysts: determines requirements of the project. Designers: determines where changes should be made. Programmers: implement the designs. Testers: make sure system runs properly. Trainers: explain users the system’s functionality

17 Change in Software Development As software engineers we must be very susceptible to change. It is not an uncommon case to have the client making changes in the design in the middle of the production. And when this happens, the initial requirements and tools that were established for use might not be the best. Although this may be unpleasant sometimes, because our clients may not fully understand what they want. Experience has shown that it is better to make these changes while the system software is being produced than when it has been finished. Programming tools themselves change from time to time(upgrades) to provide more features than before. And these new features will help us most of the times to generate better quality products. For this reason, we must be familiarized with both the past, and the future to make the best choices when mid-production changes occur.

18 But what drives these unending software changes? Many factors in fact. -Object Oriented Design that simplifies the problem solving challenges -Waterfall effect -Time to market and the race software companies face with each other -Economics -Friendly user interfaces that allow easier access to users -Network securities, speeds, and constraints -Desktop computing capabilities and limitations

19 Discipline of Software Engineering Abstraction  View of the problem in a more general, understandable way. (Ex: Object Oriented Design) Analysis methods and notation  Consistency in notation results in better communication. User interface prototyping  Small similar examples of what the product will look like at the end. Software architecture  Software architecture should be the easiest to change: modularity and individualism of elements are a good approach. The software process  Not set in stone.. It depends on the situation. Small to large scale software development  Large scale systems require more tools, testing, and analysis. Software reuse  Reuse previously made software when beneficial. Measurements: quantifying design  We need measurable quantities to be able to set new goals for the product. Tools and integrated environments  Understand the interoperability and capabilities of our tools is crucial for designing systems.

20 Is There a Software Crisis? Although software errors have been underestimated for their consequences, they can certainly produce disastrous outcomes and even claim lives. These systems are best known as safety critical systems. Which are systems that can injure or kill people when malfunctioning. In 1995 there was a nitrogen leak killed 2 engineers. The leak was determined to happen due to software errors. The Therac-25 is another example of a safety critical system error. A software error caused the machine to give high doses of radiation to clients that didn’t need them, causing their death. So with this in mind, what is the best software practice? It really depends, once again there is not such thing as a best practice… But a good software practice may be to apply the engineering approach which we discussed in slide# 15.

21 Examples Databases can be thought of as simple software systems: Its boundaries keep communication with the developers(modify them), users(use the data), and clients(provide the data). It receives inputs to add, modify and delete records mostly. And outputs them to the users as they need them. Lastly, we should not conclude without talking about context diagrams for system boundaries. These context diagrams are high level views of the system at hand, and the relationship it maintains with external entities. These are very useful to keep in mind the system’s purpose.

22 THE END

23 SOURCES PPT1: PPT2: PPT3: PPT4: PPT6: PPT10: PPT11: jpg?cb=

24 PPT12: PPT16: PPT17: jpg?cb= PPT20: PPT21: MAIN IDEAS SOURCE: Software Engineering 4 th edition, Shari Lawrence & Joanne Atlee.