ATSBA: Advanced Technologies Supporting Business Areas



Similar documents
Why process models? Topic 3 Software process models. 3. Process models. What is a process model?

Sistemi ICT per il Business Networking

11.1 What is Project Management? Object-Oriented Software Engineering Practical Software Development using UML and Java. What is Project Management?

CS4507 Advanced Software Engineering

Chapter 8 Approaches to System Development

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Lecture Softwareengineering-Vertiefung

Test Cases Design for Software Database Provisioning Development

INTRODUCTION TO COMPUTER PROGRAMMING. Richard Pierse. Class 7: Object-Oriented Programming. Introduction

ATM Case Study Part 1

Course Goals. Solve Non-Technical Customer problem Server side: Ruby on Rails Client side: HTML, CSS, AJAX, JavaScript Deploy using cloud computing

Software Asset Management on System z

Chapter 13: Program Development and Programming Languages

Extending Desktop Applications to the Web

Chapter 13 Computer Programs and Programming Languages. Discovering Computers Your Interactive Guide to the Digital World

Frequently Asked Questions For Investors

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

Chapter 3 Methodology

Improving Software Development Economics Part II: Reducing Software Product Complexity and Improving Software Processes

Testing of safety-critical software some principles

Technical Documentation of Software and Hardware in Embedded Systems

Homework/Program #5 Solutions

Mobile Application Developer (.NET & Cross Platform)

Advanced Software Engineering FYI!

1. Overview of the Java Language

Computer Information Systems (CIS)

public class Craps extends JFrame implements ActionListener { final int WON = 0,LOST =1, CONTINUE = 2;

Kevin Lee Technical Consultant As part of a normal software build and release process

Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm

JOB DESCRIPTION APPLICATION LEAD

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

Michigan Criminal Justice Information Network (MiCJIN) State of Michigan Department of Information Technology & Michigan State Police

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

Object-Oriented Software Engineering

Comparing Plan-Driven and Agile Project Approaches

(Refer Slide Time: 01:52)

Java Application Developer Certificate Program Competencies

CMSC 435: Software Engineering Course overview. Topics covered today

SOFTWARE DESIGN TECHNIQUES. Nagalaxmi Telkar CSCI 5828 Presentation Slides

Achieving business benefits through automated software testing. By Dr. Mike Bartley, Founder and CEO, TVS

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

RAP Software Process Checklist

Preservation Handbook

APPLYING CASE BASED REASONING IN AGILE SOFTWARE DEVELOPMENT

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

Agile support with Kanban some tips and tricks By Tomas Björkholm

Description. Need Statement

Hochschule Esslingen University of Applied Sciences

LECTURE 1. SYSTEMS DEVELOPMENT

MOLA MOLA IDA Integrates ARIS Business Architect or ARIS Toolset with EMC Documentum. White Paper

Test Run Analysis Interpretation (AI) Made Easy with OpenLoad

Jim Boyd.NET Senior Software Engineer Independent Contractor

Getting started with API testing

Agile Projects 7. Agile Project Management 21

Oracle Business Rules Business Whitepaper. An Oracle White Paper September 2005

Agile Development Calls for an Agile Suite Solution

Getting Started with Kanban Paul Klipp

The Power to Take Control of Software Assets

Michigan Criminal Justice Information Network (MiCJIN) State of Michigan Department of Information Technology & Michigan State Police

An Intelligent Approach for Integrity of Heterogeneous and Distributed Databases Systems based on Mobile Agents

Testing Rails. by Josh Steiner. thoughtbot

How To Design An Information System

Agile Test-based Modeling

Introduction to Software Engineering

Midsize retailers can now relax the nightmare of trying to keep up with the

Protect Your Organization With the Certification That Maps to a Master s-level Education in Software Assurance

Introduction to Software Engineering. Adopted from Software Engineering, by Ian Sommerville

Using Simulation to teach project management skills. Dr. Alain April, ÉTS Montréal

Introduction to Software Paradigms & Procedural Programming Paradigm

Perspective. Best Practices Continuum Map for Newspaper Publishers. Abstract

Software Development Process and Activities. CS 490MT/5555, Fall 2015, Yongjie Zheng

Requirement Engineering

Best Practices for Implementing Software Asset Management

Software Process for QA

Statement on End of Life of

Enterprise Information Flow

Topics covered. An Introduction to Software Engineering. FAQs about software engineering Professional and ethical responsibility

Best Practices for Application Release & Deploy Success Integrating Datical and IBM UrbanCode Deploy. What is slowing my application releases?

Net Developer Role Description Responsibilities Qualifications

IT Infrastructure and Emerging Technologies

Taking the First Steps in. Web Load Testing. Telerik

Mobile and Web Applications Developer Track

What is a life cycle model?

License management service

Transcription:

ATSBA: Advanced Technologies Supporting Business Areas Software Engineering 1 Introduction 1

1 Introduction - What is Software Engineering? 1 Introduction - What is Software Engineering? 1.1 Definitions 1.2 Why is it so difficult to develop software? 1.3 Overview Software Engineering 2

1.1 Definitions Software: Software designates all non-physical function components of a computer. This covers above all computer programmes as well as the data intended for the use with computer programmes. Software is frequently put in contrast to hardware, which designates the physical carrier, on which software exists. Software can be differentiated in: System software, which is necessary for the tidy functioning of the computer (in particular the operating system and additional programs such as virus protection software), and Application software, which supports the user during the execution of his tasks and supplies thereby the actual, direct use. 3

1.1 Definitions Software Engineering / Software-Technique: The software technology (also software design, software engineering) as a subsection of computer science concerns itself with the standardised engineered production of software and the associated processes. There is a multiplicity of definitions for the term software engineering, here a quote from Helmut Balzert, from his text book on software technology: Software engineering is the goal-oriented supply and systematic use of principles, methods and tools for the engineered production and use of extensive software systems. Software engineering covers a multiplicity of subsections, which in their whole accompany the entire software development process, from planning up to testing and rollout. [Wikipedia; http://de.wikipedia.org; Stand: 19.10.04] [Helmut Balzert; Lehrbuch der Software-Technik: Software-Entwicklung; Band 1, 2. Auflage; Spektrum Akademischer Verlag, Heidelberg 2001.] 4

1.2 Why is software so difficult to develop? Important software errors: 1. Ariane 5, Explosion: Data conversion of a too large number, 1996 The Role of Software in Spacecraft Accidents, Nancy Leveson, http://sunnyday.mit.edu/papers.html, 2004 German toll system unusable, 2003 Due to a software problem euros could be taken off at all banks - with the exception of the postal bank -with arbitrary pin codes, without debiting the savings account with the sum taken off. ATM gives any amount of Euro for arbitrarily PINcode, 2002 Green Party Convent fails. By rounding error and erronous use of Excel the wrong number of delegates is computed, 2002 Mars Climate Orbiters, Loss; Mixture of pounds and kilograms, 1999 Pentium Prozessor, Division Algorithm; incomplete entries in a look-up-table, 1994 Sleipner Offshore Platform. Sinking caused by the wrong use of FE-code NASTRAN, 1991 AT&T long distance service fails for nine hours. Wrong BREAK statement in C-Code, 1990 Airbus downing during Iran-conflict. Pattern recognition software, 1988... See [T. Huckle; http://www5.in.tum.de/~huckle/bugse.html; dates 19.10.04/29.9.09] 5

1.2 Why is software so difficult to develop? It is disputed whether the developing process of software is so well understood as to allow an engineered production : Critics argue that software is nothing else than executable knowledge. Knowledge, however, cannot be manufactured (like for instance a bridge or a building), but is developed during a creative process. A direction of the software technology (Agile software development) uses very flexible methods, which stress the creativity of the individual developer and set aside the administrative aspects. Critics argue that above all the violently discussed procedural models (waterfall model, V-model etc.) and modelling languages (UML) in the software technique science hide the provisional, supporting ad-hoc-character and slow down the development process unnecessarily. Thus, these methods restrain, so the critics, the creativity and the problem solving capacity of the developer. It is disputed whether the software crisis can be solved by software technology or rather by more robust, more structured programming languages and development tools. [Wikipedia; http://de.wikipedia.org; Stand: 19.10.04] 6

1.2 Why is software so difficult to develop? Errors in software are not obviously recognizably, whereas in technical products they obviously are. public class Frame1 extends JFrame { JPanel contentpane; JButton fahrenheitbutton = new JButton(); JTextField fahrenheittextfield = new JTextField(); /**Construct the frame*/ public Frame1() { enableevents(awtevent.window_event_mask); try { jbinit(); } catch(exception e) { e.printstacktrace(); } } /**Component initialization*/ private void jbinit() throws Exception { fahrenheitbutton.settext("to Fahrenheit"); fahrenheitbutton.setbounds(new Rectangle(36, 104, 140, 27)); fahrenheitbutton.addactionlistene r(new java.awt.event.actionlistener() { public void actionperformed(actionevent e) { fahrenheitbutton_actionperformed(e); } }); 7

1.2 Why is software so difficult to develop? Reasons, why software is difficult to develop: Software and its functionality become more and more complex. The surrounding field and the software development actually become ever more agile. The requirements of the users regarding software often change already during its development. Software products become more and more complex with each new version. Big software products consists of several million programming lines. Software is often more easily and faster changeable than a technical product. Only the source text has to be changed. Software is an immaterial product, that means it is not tangible. 8

1.2 Why is software so difficult to develop? Reasons, why software is difficult to develop: Software ages differently fast, depending on its employment. That means it has to be renewed or exchanged after a certain time. The spare parts for software look differently and are differently used than in technical products, e.g. patches. Software has to be often downward compatible to most diverse versions, so that it becomes ever more complex. Software must run on most diverse platforms (PC, mobile phone, washing machine ). It is difficult to indicate fitting measures for software, thus to measure the software, its impact and its development. Software is not limited by physical laws. i.e. one can carry out arbitrary computations and simulations, which do no correspond to reality 9

1.3 Overview software engineering Requirements Phase Requirements Engineering Product requirement specifications Estimation of work load Specification / Analysis Phase Data analysis Process analysis System analysis Structured Analysis Object-oriented Analysis (OOA) Design Phase Object-oriented design (OOD) UML-Modelling Implementation / Programming Phase Structured programming Object-oriented programming (OOP) Test, Integration and Maintenance Phase Code review Unit tests Integration tests System tests Load test Software Management Project management Managing the life-cycle of software Life-cycle models Re-use and re-engineering Quality Management Software ergonomics Software metrics (measurement of characteristics of software) Documentation System documentation Operating instructions Business processes 10

1.3 Overview Software-Engineering This model is describing the phases in a software engineering project. Software development: In different phases the SW is developed gradually (ideal case). Requirements Specification Design Programming Software Idea Requirements Specification Functional Specification Specification / Analysis Phase Data analysis Process analysis System analysis Structured Analysis Object-oriented Analysis (OOA) Design: Technical Concepts - client/server - Distributed -Web -DBs... Documentation Documentation Rollout Deployment Finalized Software Documentation Programming Languages: Java, C, C++, C#... Software deployment Scripting: Software installation XML, HTML...... DB Languages: Testing SQL...... Testing Maintenance Installed Software Documentation Software Product Software management: A corresponding SW-project controls the individual steps of the SW development SW development project Software quality management: Corresponding processes guarantee the quality of the whole SW development Quality control of the SW development processes and the SW product 11

Learning Targets To be able to explain the meaning of the terms: software, system software, application software, etc. name the meaning of software and the difficulties in software development. explain what the discipline Software Engineering comprises. 12