How To Write Software



Similar documents
Outline. Definitions. Course schedule

SE 367 Software Engineering Basics of Software Engineering

Software Production and Lifecycle Models

Ingegneria del Software. Gabriele Monfardini - Corso di Ingegneria del Software

Engineering Process Software Qualities Software Architectural Design

Chap 1. Software Quality Management

Software Engineering. Objectives. Designing, building and maintaining large software systems

Software Engineering. Software Engineering. Software Costs

Introduction to Software Engineering. 8. Software Quality

Software Life Cycle Processes

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

Introduction and Overview

Requirements engineering

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Requirements engineering and quality attributes

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

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

SOFTWARE ENGINEERING OVERVIEW

ASSESSMENT OF SOFTWARE PROCESS MODELS

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Organizational Requirements Engineering

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

Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems

Software Engineering Compiled By: Roshani Ghimire Page 1

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

Software Engineering 9.1. Quality Control

The Role of the Software Architect

Software Process for QA

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Quality Management. Lecture 12 Software quality management

Software Development Life Cycle (SDLC)

Basic Testing Concepts and Terminology

Fundamentals of Measurements

Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Advanced Software Engineering. Software Development Processes

Exploratory Testing Dynamics

What is Automotive Software Engineering? What is Automotive Software Engineering? What is Automotive Software Engineering?

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

What do you think? Definitions of Quality

Configuration Management - The Big Picture

Software Development Processes. Software Life-Cycle Models

VDM vs. Programming Language Extensions or their Integration

Chapter 2 Software Processes

How To Validate Software

To introduce software process models To describe three generic process models and when they may be used

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Modelli di sviluppo software. Enrico Giunchiglia

Elite: A New Component-Based Software Development Model

Software Development Processes. Software Life-Cycle Models. Process Models in Other Fields. CIS 422/522 Spring

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Introduction. Software Development and Change Management Recommendations

Implementation of ANSI/AAMI/IEC Medical Device Software Lifecycle Processes.

EL Program: Smart Manufacturing Systems Design and Analysis

Process Models and Metrics

Basic Trends of Modern Software Development

Introduction to software architecture

CDC UNIFIED PROCESS JOB AID

The Configuration Management process area involves the following:

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

How To Manage Project Management

Software Engineering: Analysis and Design - CSE3308

A Comparison Between Five Models Of Software Engineering

Lecture 9: Requirements Modelling

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Scrum, User Stories, and More! CSCI 5828: Foundations of Software Engineering Lecture 22 11/06/2014

Foundations of software engineering

IEEE SESC Architecture Planning Group: Action Plan

Software Project Models

Parasoft and Skytap Deliver 24/7 Access to Complete Test Environments

R214 SPECIFIC REQUIREMENTS: INFORMATION TECHNOLOGY TESTING LABORATORY ACCREDITATION PROGRAM

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

Testing service-oriented architecture (SOA) applications and services. White paper

SEEM4570 System Design and Implementation Lecture 10 Software Development Process

Implement a unified approach to service quality management.

ENTERPRISE ARCHITECTUE OFFICE

Lecture 17: Requirements Specifications

IV. Software Lifecycles

Prof. Paolo Nesi. Lab: DISIT, Sistemi Distribuiti e Tecnologie Internet

An Overview of Challenges of Component Based Software Engineering

A Comparison between Five Models of Software Engineering

CMSC 435: Software Engineering Course overview. Topics covered today

Information Systems Analysis and Design CSC340. I. Introduction

CS 1632 SOFTWARE QUALITY ASSURANCE. 2 Marks. Sample Questions and Answers

ISO/IEC Software Product Quality Model

Software Engineering Question Bank

PROJECT MANAGEMENT PLAN TEMPLATE < PROJECT NAME >

The Software Lifecycle. Software Lifecycles

How To Improve Software Quality

What is a life cycle model?

MANAGING USER DATA IN A DIGITAL WORLD

How Silk Central brings flexibility to agile development

Kunal Jamsutkar 1, Viki Patil 2, P. M. Chawan 3 (Department of Computer Science, VJTI, MUMBAI, INDIA)

International Journal of Advance Research in Computer Science and Management Studies

Revision History Revision Date Changes Initial version published to

Specification and Analysis of Contracts Lecture 1 Introduction

PROGRAM MANAGER S GUIDE

Software Development: The Waterfall Model

Transcription:

Overview of Software Engineering Principles 1 Software Engineering in a Nutshell Development of software systems whose size/ complexity warrants a team or teams of engineers multi-person construction of multi-version software [Parnas 1987] SCOPE: study of software process, development principles, techniques and notations GOAL: production of quality software, delivered on time, within budget, satisfying users needs Software engineers must posses a broad range of skills mathematics computer science economics management psychology Overview of Software Engineering Principles 2 Software Programming Software Engineering single developer developer teams multiple roles toy applications complex systems short lifespan long, indefinite lifespan single or few stakeholders developer = user multiple stakeholders developer user user customer one-of-a-kind systems system families built from scratch reuse to amortize costs minimal maintenance maintenance is 60+% of total development costs

Overview of Software Engineering Principles 3 Software Engineering Is a Unique Brand of Engineering Software is malleable Software construction is human-intensive Software is intangible Software problems are unprecedentedly complex Software directly depends upon the hardware it is at the top of the system engineering food chain Software solutions require unusual rigor Software has discontinuous operational nature Overview of Software Engineering Principles 4 Economic and Management Aspects Software production = development + maintenance Maintenance costs > 60% of all development costs 20% corrective 30% adaptive 50% perfective Quicker development is not always preferable higher up-front costs may defray downstream costs poorly designed/implemented software is a critical cost factor

Overview of Software Engineering Principles 5 Software Development Lifecycle (1) Problem Definition Requirements Design Implementation Module Testing Integration System Testing Operation/Maintenance Overview of Software Engineering Principles 6 Software Development Lifecycle (2) Problem Definition Requirements Design Implementation Module Testing Integration System Testing Operation/Maintenance

Overview of Software Engineering Principles 7 Software Development Lifecycle (3) Determine objectives, alternatives, constraints Evaluate alternatives, identify, resolve risks, develop prototypes Plan next phases Develop, verify next-level product Overview of Software Engineering Principles 8 Requirements Problem Definition Requirements Specification determine exactly what the customer and user want develop a contract with the customer specifies what the software product is to do Difficulties client asks for wrong product client is computer/software illiterate specifications are ambiguous, inconsistent, incomplete Verification extensive specification reviews with the customer identify ambiguity, inconsistency, incompleteness ascertain feasibility, testability develop system/acceptance test plan

Overview of Software Engineering Principles 9 Design Requirements Specification Design high-level: decompose software into modules with interfaces detailed: develop module specifications (select algorithms and data types) maintain a record of design decisions and traceability specifies how the software product is to do its tasks Difficulties miscommunication between module designers design may be inconsistent, incomplete, ambiguous Verification extensive design inspections to establish conformance to requirements check module interactions develop integration test plan Overview of Software Engineering Principles 10 Implementation and Integration Design Implementation implement modules; verify that they meet their specifications combine modules according to the design specifies how the software product does its tasks Difficulties module interaction errors order of integration may influence quality and productivity Verification extensive code reviews to establish conformance to requirements and design check module interactions develop unit test plan: focus on individual modules test on unit, integration (focus on module interfaces) and acceptance (focus on requirements) test plans

Overview of Software Engineering Principles 11 Operation and Maintenance Operation Change maintain software during/after user operation determine whether the product still functions correctly Difficulties rigid design lack of documentation personnel turnover Verification extensive reviews to ensure correct changes and updates to documentation test to determine that change is correctly implemented regression testing: ensure that no inadvertent changes are made to compromise system functionality Overview of Software Engineering Principles 12 Software Engineering Principles Rigor and formality Separation of concerns modularity abstraction Anticipation of change Generality Scalability Compositionality

Overview of Software Engineering Principles 13 From Principles to Tools TOOLS METHODOLOGIES METHODS AND TECHNIQUES PRINCIPLES Overview of Software Engineering Principles 14 Software Qualities Qualities (a.k.a. ilities ) are goals in the practice of software engineering External vs. Internal qualities external qualities are visible to the user reliability, efficiency, usability Internal qualities are the concern of developers they help developers achieve external qualities verifiability, maintainability, extensibility, evolvability, adaptability Product vs. Process qualities product qualities concern the developed artifacts maintainability, understandability, performance process qualities deal with the development activity products are developed through process maintainability, productivity, timeliness

Overview of Software Engineering Principles 15 Some Software Qualities (1) Correctness ideal quality established w.r.t. the requirements specification absolute Reliability statistical property probability that software will operate as expected over a given period of time relative Robustness reasonable behavior in unforeseen circumstances subjective a specified requirement is an issue of correctness; an unspecified requirement is an issue of robustness Overview of Software Engineering Principles 16 Some Software Qualities (2) Usability ability of end-users to easily use software extremely subjective Understandability ability of developers to easily understand produced artifacts internal product quality subjective Verifiability ease of establishing desired properties performed by formal analysis or testing internal quality

Overview of Software Engineering Principles 17 Some Software Qualities (3) Performance equated with efficiency assessable by measurement, analysis, and simulation Evolvability ability to add or modify functionality addresses adaptive and perfective maintenance problem: evolution of implementation is too easy evolution should start at requirements or design Reusability ability to construct new software from existing pieces must be planned for occurs at all levels: from people to process, from requirements to code Overview of Software Engineering Principles 18 Some Software Qualities (4) Interoperability ability of software (sub)systems to cooperate with others easily integratable into larger systems common techniques include APIs, plug-in protocols, etc. Scalability ability of a software system to grow in size while maintaining its properties and qualities assumes maintainability and evolvability goal of component-based development

Overview of Software Engineering Principles 19 Some Software Qualities (5) Heterogeneity ability to compose a system from pieces developed in multiple programming languages, on multiple platforms, by multiple developers, etc. necessitated by reuse goal of component-based development Portability ability to execute in new environments with minimal effort may be planned for by isolating environment-dependent components necessitated by the emergence of highly-distributed systems (e.g., the Internet) an aspect of heterogeneity Overview of Software Engineering Principles 20 Software Process Qualities Process is reliable if it consistently leads to high-quality products Process is robust if it can accommodate unanticipated changes in tools and the environments Process performance is productivity Process is evolvable if it can accommodate new management and organizational techniques Process is reusable if it can be applied across projects and organizations

Overview of Software Engineering Principles 21 Assessing Software Qualities Qualities must be measurable Measurement requires that qualities be precisely defined Improvement requires accurate measurement Currently most qualities are informally defined and are difficult to assess Overview of Software Engineering Principles 22 Software Engineering Axioms Adding developers to a project will likely result in further delays and accumulated costs Basic tension of software engineering better, cheaper, faster pick any two! functionality, scalability, performance pick any two! The longer a fault exists in software the more costly it is to detect and correct the less likely it is to be properly corrected Up to 70% of all faults detected in large-scale software projects are introduced in requirements and design detecting the causes of those faults early may reduce their resulting costs by a factor of 100 or more