Course Introduction and Overview of Software Engineering. Richard N. Taylor Informatics 211 Fall 2007

Similar documents
No Silver Bullet. CSCI 5828: Foundations of Software Engineering Lecture 02 08/27/2015

About Software Engineering.

Computer Science: Disciplines. What is Software Engineering and why does it matter? Software Disasters

Lee, Joon-Sang LG Electronics Advanced Research Institute

Computer Science: Who Cares? Computer Science: It Matters. Computer Science: Disciplines

An introduction to software development. Dr. C. Constantinides, P.Eng. Computer Science and Software Engineering Concordia University

A FRAMEWORK FOR PERFORMING V&V WITHIN REUSE-BASED SOFTWARE ENGINEERING

Separation of Concerns in Software Engineering Education

Systems Engineering Overview. Axel Claudio Alex Gonzalez

Basics of SW Architecture

Thriving Systems Theory:

Introduction to Software Engineering

Reverse Engineering A Roadmap

SOFTWARE ARCHITECTURE

The Decision View of Software Architecture: Building by Browsing

Object-oriented Analysis and Design

Reconsidering the Role of Systems Engineering in DoD Software Problems

UNIT VIII SYSTEM METHODOLOGY 2014

Ivica Crnkovic Mälardalen University Department of Computer Science and Engineering

CSE 435: Software Engineering

Introduction to Systems Engineering

THE APPLICATION OF SYSTEMS ENGINEERING ON THE BUILDING DESIGN PROCESS

By the end of this chapter, you should: Understand what is meant by engineering design. Understand the phases of the engineering design process.

Introduction to Software Requirements and Design

Interoperable systems that are trusted and secure

The secret behind mechatronics

New Idea In Waterfall Model For Real Time Software Development

1 History of software engineering

Subsumption Architecture in Swarm Robotics. Cuong Nguyen Viet 16/11/2015

Where does architecture end and technology begin? Rami Razouk The Aerospace Corporation

Systems Engineering Presented at Stevens New Jersey Community College Strategic Partnership 27 th September, 2005

Engineering Autonomy

Component Based Mechatronics Modelling Methodology

The Evolution Tree: A Maintenance-Oriented Software Development Model

Model-Based Systems Engineering Methodologies. J. Bermejo Autonomous Systems Laboratory (ASLab)

A New - Knot Model for Component Based Software Development

UNIT-III LIFE-CYCLE PHASES

Computing Disciplines & Majors

Grundlagen des Software Engineering Fundamentals of Software Engineering

Proposed Curriculum Master of Science in Systems Engineering for The MITRE Corporation

Socio-cognitive Engineering

Code Complete 2: A Decade of Advances in Software Construction Construx Software Builders, Inc. All Rights Reserved.

in the New Zealand Curriculum

Requirements Gathering using Object- Oriented Models

Co-evolution of agent-oriented conceptual models and CASO agent programs

FM p.i-xxii 4/2/04 11:39 AM Page v. Preface

Testing in the Lifecycle

Requirements Analysis aka Requirements Engineering. Requirements Elicitation Process

Service-Oriented Software Engineering - SOSE (Academic Year 2015/2016)

Object-Oriented Design

Introduction to adoption of lean canvas in software test architecture design

TEACHING PARAMETRIC DESIGN IN ARCHITECTURE

A Knowledge-Centric Approach for Complex Systems. Chris R. Powell 1/29/2015

F. Tip and M. Weintraub REQUIREMENTS

Project Lead the Way: Civil Engineering and Architecture, (CEA) Grades 9-12

Activities: Integrating User Experience Activities in Agile Environments 1. Idea & Purpose

Domain: Computer Science and Information Technology Curricula for the First Year (2012/2013)

CSE 435: Software Engineering FYI

Scope of OOSE. A. Starts. CMPSC 487 Lecture 01 Topics: Schach - Chap 1. The Scope of Object-Oriented Software Engineering

AN INTERROGATIVE REVIEW OF REQUIREMENT ENGINEERING FRAMEWORKS

Designing Semantic Virtual Reality Applications

TOWARDS AN ARCHITECTURE FOR ENERGY MANAGEMENT INFORMATION SYSTEMS AND SUSTAINABLE AIRPORTS

Name of Customer Representative: n/a (program was funded by Rockwell Collins) Phone Number:

CHAPTER 1: INTRODUCTION TO SOFTWARE ENGINEERING DESIGN

An Integrated Simulation Method to Support Virtual Factory Engineering

Ingegneria del Software. 1: Concetti di base. Rif.: Ghezzi et.al., Ingegneria del software, II Ed.,Prentice Hall - Capitoli

Pure Versus Applied Informatics

The Study on the Architecture of Public knowledge Service Platform Based on Collaborative Innovation

Internet Engineering. Jan Nikodem, Ph.D. Software Engineering

This list supersedes the one published in the November 2002 issue of CR.

Map of Human Computer Interaction. Overview: Map of Human Computer Interaction

Models as a Foundation for Systems Engineering Should We Expect a Breakthrough? Brett Malone Vitech Corporation

Towards an MDA-based development methodology 1

Advanced Research Methodology Design Science. Sjaak Brinkkemper

Support of Design Reuse by Software Product Lines: Leveraging Commonality and Managing Variability

Out of the Ivory Tower: Tao Xie Peking University ( ), China North Carolina State University Raleigh, NC, USA

Empirical Research on Systems Thinking and Practice in the Engineering Enterprise

Avoiding the Problems

ISO ISO is the standard for procedures and methods on User Centered Design of interactive systems.

Code Complete 2: Realities of Modern Software Construction

BEYOND SHALL STATEMENTS: MODERNIZING REQUIREMENTS ENGINEERING

Practical issues. Why Software Engineering in general? Practical issues. Examen: Schriftelijk examen (70%) Materiaal: artikelen

1. Historical Development of SSDMs

A Theory about the Structure of GTSEs

Solutions to selected exercises

ACE3 Working Group Session, March 2, 2005

Industrial Experience with SPARK. Praxis Critical Systems

Usability vs. user experience

Ingegneria del Software Corso di Laurea in Informatica per il Management. Introduction to software engineering

Pervasive Services Engineering for SOAs

IS 525 Chapter 2. Methodology Dr. Nesrine Zemirli

HUMAN COMPUTER INTERFACE

Playware Research Methodological Considerations

Understanding DARPA - How to be Successful - Peter J. Delfyett CREOL, The College of Optics and Photonics

Introduction to Computer Engineering

Using VR and simulation to enable agile processes for safety-critical environments

EA 3.0 Chapter 3 Architecture and Design

CS Division of EECS Dept. KAIST

Concurrent Increment Sequencing and Synchronization with Design Structure Matrices in Software- Intensive System Development

Issues, Challenges and Opportunities for Research in Software Engineering

Transcription:

Course Introduction and Overview of Software Engineering Richard N. Taylor Informatics 211 Fall 2007

Software Engineering A discipline that deals with the building of software systems which are so large that they are built by a team or teams of engineers. [Ghezzi, Jazayeri, Mandrioli] Multi-person construction of multiversion software. [Parnas]

Software Engineering A discipline whose aim is the production of fault-free software, delivered on-time and within budget, that satisfies the user s needs. Furthermore, the software must be easy to modify when the user s needs change. [Schach] Difficult. [van der Hoek]

Software Engineering It s where you actually get to design big stuff and be creative. [Taylor]

Design, Science, Engineering, Management, Human Factors Design: concepts, methods, techniques Science: empirical studies; theories characterizing aggregate system behavior (e.g. reliability) Management: organizing teams, directing activities, correcting problems Human factors: user task understanding and modeling; ergonomics in user interface design Engineering: tradeoffs, canonical solutions to typical problems Tradeoffs and representative qualities Pick any two: Good, fast, cheap

Common Software Engineering Principles (CW* list) Rigor and Formality Separation of Concerns Modularity and Decomposition Abstraction Anticipation of Change Generality Incrementality Reliability *Conventional Wisdom

Software Lifecycle Context (Waterfall Model) (Old CW) Requirements Design Implementation Integration Validation Deployment

Software Lifecycle Context (Waterfall Model) Requirements Design Implementation Integration Validation Deployment

The Mythical Man-Month by Fred Brooks (I) Published 1975, Republished 1995 Experience managing the development of OS/360 in 1964-65 Central Argument Large programming projects suffer management problems different in kind than small ones, due to division of labor. Critical need is the preservation of the conceptual integrity of the product itself.

The Mythical Man-Month by Fred Brooks (II) Central Conclusions Conceptual integrity achieved through exceptional designer Implementation achieved through wellmanaged effort Brooks s Law: Adding personnel to a late project makes it later

No Silver Bullet by Fred Brooks Essence: the difficulties inherent in the nature of the software Accidents: those difficulties that today attend its production but that are not inherent Solution (?): Grow Great Designers

Accidental Difficulties Solutions exist Possibly waiting to be discovered Past productivity increases result of overcoming Inadequate programming constructs & abstractions Remedied by high-level programming languages Increased productivity by factor of five Complexity was never inherent in program at all

Accidental Difficulties (cont d) Past productivity increases result of overcoming (cont d) Viewing results of programming decisions took long time Remedied by time sharing Turnaround time approaching limit of human perception Difficulty of using heterogeneous programs Addressed by integrated software development environments Support task that was conceptually always possible

Essential Difficulties Only partial solutions exist for them, if any Cannot be abstracted away Complexity Conformity Changeability Intangibility

Complexity No two software parts are alike If they are, they are abstracted away into one Complexity grows non-linearly with size E.g., it is impossible to enumerate all states of program Except perhaps toy programs

Conformity Software is required to conform to its Operating environment Hardware Often last kid on block Perceived as most conformable

Changeability Change originates with New applications, users, machines, standards, laws Hardware problems Software is viewed as infinitely malleable

Intangibility Software is not embedded in space Often no constraining physical laws No obvious representation E.g., familiar geometric shapes

Pewter Bullets Ada, C++, Java and other high level languages Object-oriented design/analysis/programming Artificial Intelligence Automatic Programming Graphical Programming Program Verification Environments & tools Workstations

Promising Attacks On Complexity (In 1987) Buy vs. Build Requirements refinement & rapid prototyping Hardest part is deciding what to build (or buy?) Must show product to customer to get complete spec. Need for iterative feedback

Promising Attacks On Complexity (cont d) Incremental/Evolutionary/Spiral Development Grow systems, don t build them Good for morale Easy backtracking Early prototypes Great designers Good design can be taught; great design cannot Nurture great designers

Software Architecture (and Architects) Software Engineers have always employed software architectures Very often without realizing it! Address issues identified by researchers and practitioners Essential software engineering difficulties Unique characteristics of programming-in-thelarge Need for software reuse Many ideas originated in other (noncomputing) domains

Primacy of Design Software engineers collect requirements, code, test, integrate, configure, etc. An architecture-centric approach to software engineering places an emphasis on design Design pervades the engineering activity from the very beginning But how do we go about the task of architectural design?

The Software Industry Today Software Engineering is in Transition Component-Based Engineering and Integration Technological Heterogeneity Enterprise Heterogeneity Greater potential for Dynamic Evolution Internet-Scale Deployment Many competing standards Much conflicting terminology

Research Topics (The) Future of Software Engineering 2007 Publication venues Journals Conferences Variance of opinions

Publication Venues Good ones ICSE FSE ASE ACM TOSEM and IEEE-TSE Questionable ones: caveat reader COMPSAC (JSS)

Future of SE Process Requirements engineering Reverse engineering Testing Maintenance and Evolution Software architecture OO Modeling SE and Middleware Tools and environments Configuration management Databases and SE SE Education Software analysis Formal specification Mathematical foundations Reliability and Dependability Performance SE for Safety SE for security SE for mobility SE & the Internet Software economics Empirical studies of SE Software metrics