ECNG3023: Introduction to Software Engineering Kevon Andrews Rm. 329 Ph: 662-2002 x3156 Open Hours:

Slides:



Advertisements
Similar presentations
1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
Advertisements

Object-Oriented Software Development CS 3331 Fall 2009.
What is Software Design?. Systems Development Life- Cycle Planning Analysis Design Implementation Design.
Chapter 2 – Software Processes
ISNE101 Dr. Ken Cosh. Recap  We’ve been talking about Software…  Application vs System Software  Programming Languages  Vs Natural Languages  Syntax,
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Chapter 1 4th Edition What is Software Engineering Shari L. Pfleeger
© Prentice Hall CHAPTER 9 Application Development by Information Systems Professionals.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
What is software engineering?
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.
SDLC. Information Systems Development Terms SDLC - the development method used by most organizations today for large, complex systems Systems Analysts.
CSC230 Software Design (Engineering)
Configuration Management
Software Life Cycle Model
Introduction to Computer Technology
OHT 3.1 Galin, SQA from theory to implementation © Pearson Education Limited 2004 Software Quality assurance (SQA) SWE 333 Dr Khalid Alnafjan
Introduction to Systems Analysis and Design Trisha Cummings.
1COM6030 Systems Analysis and Design © University of Sheffield 2005 COM 6030 Software Analysis and Design Lecture 2- Software Process Models and Project.
Managing Software Quality
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
What is Software Engineering? the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”
1 Chapter 2 Socio-technical Systems (Computer-based System Engineering)
CSI315 Web Applications and Technology Overview of Systems Development (342)
Chapter 2 The process Process, Methods, and Tools
1 BTEC HNC Systems Support Castle College 2007/8 Systems Analysis Lecture 9 Introduction to Design.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
What is software? Software is a set of items or objects that form a configuration that includes: –Programs –Documents –Data.
An Introduction to Software Architecture
Software System Engineering: A tutorial
CSE 303 – Software Design and Architecture
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
Software Requirements Engineering CSE 305 Lecture-2.
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
Configuration Management (CM)
Software Engineering Management Lecture 1 The Software Process.
OBJECT ORIENTED SYSTEM ANALYSIS AND DESIGN. COURSE OUTLINE The world of the Information Systems Analyst Approaches to System Development The Analyst as.
Basic of Software Testing Presented by The Smartpath Information System An ISO 9001:2008 Certified Organization
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
What is Software Engineering? The discipline of designing, creating, and maintaining software by applying technologies and practices from computer science,
Chapter 1 Quality terminology Error: human mistake Fault: result of mistake, evidenced in some development or maintenance product Failure: departure from.
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.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Software Prototyping Rapid software development to validate requirements.
Chapter 13: Software Quality Project Management Afnan Albahli.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
An Introduction to Software Engineering (Chapter 1 from the textbook)
CSE 303 – Software Design and Architecture
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Chapter 4 Automated Tools for Systems Development Modern Systems Analysis and Design Third Edition 4.1.
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
Foundations of Information Systems in Business. System ® System  A system is an interrelated set of business procedures used within one business unit.
An Introduction to Software Engineering. Objectives  To introduce software engineering and to explain its importance  To set out the answers to key.
IS444: Modern tools for applications development Dr. Azeddine Chikh.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
Chapter 1 SOFTWARE ENGINEERING What is Software Engineering.
CASE Tools and their Effect on Software Quality
 System Requirement Specification and System Planning.
Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
Software Project Configuration Management
Modern Systems Analysis and Design Third Edition
The Development Process of Web Applications
Software Processes (a)
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Modern Systems Analysis and Design Third Edition
CS310 Software Engineering Lecturer Dr.Doaa Sami
Presentation transcript:

ECNG3023: Introduction to Software Engineering Kevon Andrews Rm. 329 Ph: x3156 Open Hours:

EE29B: Introduction to Software Engineering This course is examined by coursework (40%) and by examination (60%) There will be three mini-projects, the first one will be an individual project and the rest done in groups. Groups are to be 3-4 students.

What is Software Engineering? The IEEE Computer Society defines software engineering as: The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. The study of approaches as above.

Problem solving (Analysis) We typically solve a problem by analysing it, that is by breaking it down into pieces. Problem

Problem solving (Synthesis) Once we have analysed the problem, we must construct our solution from components that address the problem's various aspects Solution

How are software projects different? Invisibility –No physical presence Flexibility –After all it's software Complexity –no physical constraints

The Software Iceberg The Product What the customers see Compilers, Operating Systems, Utilities DBMS CASE Configuration Management Code Data Definitions Databases Specifications Plans Standards & Procedures Manuals Simulators Development Systems Automatic test Equipment

Key Issues facing Software Developers Unfulfilled demand Increasing complexity Greater customer expectations Rapid obsolescence Increasing competition Shorter product cycle times Producing more with less Evolving methods and tools

Terminology for describing “bugs” A fault occurs when a human makes a mistake, called an error in performing some software activity. A failure is a departure from the systems required behaviour It can be discovered before or after system delivery or during operation and maintenance. Since requirements documents can contain faults, failures can exist even though the system is performing as specified!

What does project failure mean? Late delivery? No delivery at all? Not delivering what was agreed to or what was announced? Over budget? Not meeting revenue expectations? Quality below expectations?

Some reasons projects fail Not understanding what the product must do Uncontrolled changes Optimistic thinking Insufficient resources Lack of disciplined development Confusion about what needs to be done Ineffective teamwork Failure to consider business needs

Some reasons products fail Price Mature market Lack essential capabilities Difficult to use Unreliable Poor developer reputations Poor product support

Some reasons projects succeed Good understanding of the problem to solve Good planning and execution Extraordinary effort and commitment by individuals Luck

Some reasons products succeed Satisfy an unfulfilled need Novelty Value Marketing strategy

What is good software? Quality of the product? Quality of the process? Quality in the context of the Business Environment?

Quality of the product Correctness Reliability Efficiency Integrity Usability Maintainability Testability Flexibility Portability Reusability Interoperability

Quality of the product Correctness –extent to which program fulfils its specification Reliability –systems ability not to fail Efficiency –use of resources, e.g. processor time, storage Integrity –protection of program from unauthorised access Usability –ease of software Maintainability –effort required to locate and fix a fault in program within its operating environment Testability –ease of testing program, to ensure it is error-free and meets its specification Flexibility –Ease of making changing required by changes in the operating environment

Quality of the product Portability –Effort required to transfer a program from one environment to another Reusability –Ease of reusing software in a different context Interoperability –Effort required to couple system to another system

Quality of the process many activities can affect ultimate product quality By modelling a process, we can examine it and look for improvements –Where and when are we likely to find a particular kind of fault? –How can we find faults earlier in the development process? –How can we build in fault tolerance so that we can minimize the likelihood that a fault will become a failure? –Are there alternative activities that can make our process more effective or efficient at assuring quality?

Quality in the context of the business environment A view in terms of the products and services being provided by the business in which the software is embedded. –i.e., we look at the business value. –can be as simple as Return On Investment (ROI) or some more elaborate measure.

Who does software engineering? Customer Sponsors system development Developer Builds system User Uses system Needs Software system

Systems Approach Elements of a system: –Activities and Objects –Relationships and the System Boundary –Consider nested systems and system interrelationships

Activities and Objects Distinguish between activities and objects: –activity is something that happens in a system. Usually described as event initiated by trigger Transforms one thing to another by changing a characteristic, e.g. data element moved from one location to another data element is changed from one value to another data element is combined with other data to supply input for yet another activity –object or entity is element involved in the activity. Usually related in some way: arranged in a table or grouped as records with pre-defined format

Relationships and the System Boundary A system is defined as a collection of things: –a set of entities, –a set of activities, –a description of the relationships among entities and activities, –and a definition of the boundary of the system. Boundary states what is included and what is not Examples: the human respiratory system, a paycheck production system

Nested systems It is possible for one system to exist within another system, e.g. sensor system –One can have various functions of the sensors nested within each other. Boundary of system is important to see what is: –within the system –outside of the system –what crosses the boundary of the system

An analogy of software engineering Determining and analysing requirements Producing and documenting the design Detailed specifications Identifying and designing components Requirements analysis and definition System design Program design

Analogy... Building components Testing components Integrating components Making final modifications Continuing maintenance Writing programs Unit testing Integration testing System testing System delivery Maintenance

7 Factors Altering S/ware Engineering

Key factors that changed SWE 1.Criticality of time to market for commercial products Business must ready their new products and services before their competitors do 2.Shifts in the economics of computing Lower hardware costs and greater development and maintenance costs 3.Availability of powerful desktop computing More development power in hands of users, therefore software engineers are likely to be building more complex systems than before 4.Extensive networks available Makes it easier for users to find information without special applications e.g. searching WWW is quick, easy and effective

Key factors that changed SWE 5.Availability and adoption of object-oriented technology Makes available reusable modules for immediate and speedy inclusion in new applications 6.Graphical User Interfaces (GUIs) Helps to put a friendly face (appearance) on complicated applications 7.Unpredictability of the waterfall method Developing subsystems in parallel requires development process very different from waterfall model

Discipline of Software Engineering Abstraction Analysis and Design methods and Notations User Interface Prototyping Software Architecture Software Process Reuse Measurement Tools and Integrated Environments

Abstraction Abstraction is a description of the problem at some level of generalisation that allows us to concentrate on the key aspects of the problem without getting involved in the difficulties of the details. Typically involves identifying classes of objects that allow us to group items together so we: –Can deal with fewer things, and –Concentrate on the commonalities of items in each class

Analysis and Design Methods and Notations These offer a Communication medium –Communication and documentation of decisions among development team Ability to build models Ability to check models for completeness and consistency Reuse requirements and design components from previous projects

User interface Prototyping Prototyping is building a small version of a system, usually with limited functionality Prototypes can be used to: –Help the user/customer identify the key requirements of a system –Demonstrate feasibility of a design or approach Usually an iterative process: –Build prototype –Evaluate it with user and customer feedback –Consider how changes might improve product or design –Build another prototype OR iteration ends when developer and customer are satisfied with solution

Software architecture Importance of overall architecture of system is: –ease of implementation and testing –speed and effectiveness of maintenance and change. The quality of the architecture can make or break a system. System’s architecture describes system in terms of: –set of architectural units, and –map of how units relate to each other

Software architecture (continued) Five ways of decomposing a system Modular: based upon assigning functions to modules Data-oriented: based upon external data structures Event-oriented: based upon events that the system must handle Outside-in: based upon user inputs to the system Object-Oriented: based upon identifying classes of objects and their interrelationships

Software process

Reuse We take advantage of commonalities across applications by reusing items from previous development. Reuse pertains not only to code but to design, test data, requirements etc.

Measurement Measurement is a driving force in software engineering research: –improving our processes, resources and methods so that we produce and maintain better products. –But sometimes we express measurements generally, with no quantitative description. We would like to quantify: –where we can and what we can, –describe our actions and outcomes in a common mathematical language that allows us to compare progress across disparate projects.

Tools and integrated environments Issues in tool integration Platform: the ability of tools to interoperate on a heterogeneous network Presentation: commonality of the user interface Process: linkage between the tools and the development process Data: the way the tools share data Control: the ability of one tool to notify and initiate action in another.

Therac-25 (from IEEE Computer July 1993) Computers are increasingly being introduced into safety-critical systems and as a consequence, have been involved in accidents. Some of the most widely cited software-related accidents in safety- critical systems involved a computerized radiation therapy machine called the Therac-25. Between June 1985 and January 1987, six known accidents involving massive overdoses by the Therac with resultant deaths and seriious injuries.

Therac-25 routines (from IEEE Computer July 1993)