Introduction to Software Engineering

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

Engineering Process Software Qualities Software Architectural Design

ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science

(Refer Slide Time: 01:52)

Programming Languages

Module 10. Coding and Testing. Version 2 CSE IIT, Kharagpur

MEng, BSc Applied Computer Science

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

02-201: Programming for Scientists

Professional Organization Checklist for the Computer Science Curriculum Updates. Association of Computing Machinery Computing Curricula 2008

The Service Revolution software engineering without programming languages

Custom Web Development Guidelines

MEng, BSc Computer Science with Artificial Intelligence

SE 367 Software Engineering Basics of Software Engineering

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

CS Standards Crosswalk: CSTA K-12 Computer Science Standards and Oracle Java Programming (2014)

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

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

White Paper: 5GL RAD Development

The course assumes successful completion of CSCI E-50a and CSCI E-50b, i.e. at least two semesters of programming, with a grade of C- or better.

Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective

CS4507 Advanced Software Engineering

[Refer Slide Time: 05:10]

Masters in Information Technology

Software Engineering. Hans van Vliet Vrije Universiteit Amsterdam, The Netherlands

Course Description. Prerequisites. CS-119/119L, Section 0137/0138 Course Syllabus Program Design & Development - Fall 2015

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

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

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

Lecture Slides for Managing and Leading Software Projects. Chapter 1: Introduction

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur

Masters in Human Computer Interaction

2. Analysis, Design and Implementation

Masters in Advanced Computer Science

COMPUTER SCIENCE. FACULTY: Jennifer Bowen, Chair Denise Byrnes, Associate Chair Sofia Visa

POL 204b: Research and Methodology

Masters in Artificial Intelligence

2. Analysis, Design and Implementation

Sistemi ICT per il Business Networking

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

MATH 2 Course Syllabus Spring Semester 2007 Instructor: Brian Rodas

POLS Introduction to Political Science

Masters in Networks and Distributed Systems

Lecture 20: Software Evolution

22C:22 (CS:2820) Object-Oriented Software Development

School of Computer Science

Canisius College Computer Science Department Computer Programming for Science CSC107 & CSC107L Fall 2014

Challenges and Opportunities for formal specifications in Service Oriented Architectures

Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students

S Y L L A B U S F O R C H E M G E N E R A L C H E M I S T R Y I, 4 C R, G R E A T B A S I N C O L L E G E

ABET General Outcomes. Student Learning Outcomes for BS in Computing

ISTQB Certified Tester. Foundation Level. Sample Exam 1

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

Verification and Validation of Software Components and Component Based Software Systems

IT3205: Fundamentals of Software Engineering (Compulsory)

FACULTY of MANAGEMENT MARKETING MGT 2020 Z Fall 2015

How To Pass Onliner College Algebra 1314 Online Online Online Online Online

Digital Industries Trailblazer Apprenticeship. Software Developer - Occupational Brief

ITNW1392 Special Topics in Computer Systems Networking and Telecommunications COURSE SYLLABUS

How To Understand The Concept Of A Distributed System

Beyond Virtualization: A Novel Software Architecture for Multi-Core SoCs. Jim Ready September 18, 2012

Architecture Artifacts Vs Application Development Artifacts

Foundations for Systems Development

How To Develop Software

Hermantown High School CIS Psychology Course Syllabus This course is in conjunction with Lake Superior College

SAMPLE SUBJECT TO CHANGE University of Toledo Department of Criminal Justice CRIM 1010 Criminal Justice (3 credits) Section 901 Fall Semester, 2014

Computer and Information Sciences

ONLINE EXERCISE SYSTEM A Web-Based Tool for Administration and Automatic Correction of Exercises

Real-World Object-Oriented Design Experience for Computer Science Students

EMC ACADEMIC ALLIANCE

School of Computer Science

CHAPTER 1 INTRODUCTION

Syllabus. MANAGEMENT 4210: Advertising and Promotions Spring 2010 T/Th 12:15-13:30, Room D631

Masters in Computing and Information Technology

Fall Lecture: MWRF: 12 noon - 12:50 p.m. at Moulton 214. Lab at Moulton 217: Sec. 2: M 9 a.m. - 11:50 a.m.; Sec. 3: M 2 p.m. - 4:50 p.m.

CMSC 435: Software Engineering Course overview. Topics covered today

School of Computer Science

Office Location: #100 in the Communications Building on the Levelland campus

FACULTY OF COMPUTER SCIENCE AND INFORMATION TECHNOLOGY AUTUMN 2016 BACHELOR COURSES

More precisely, upon successful completion of this course you can expect to be able to:

JOUR 340 Online Journalism

CS Master Level Courses and Areas COURSE DESCRIPTIONS. CSCI 521 Real-Time Systems. CSCI 522 High Performance Computing

Online Computer Science Degree Programs. Bachelor s and Associate s Degree Programs for Computer Science

Software Production and Lifecycle Models

FEAWEB ASP Issue: 1.0 Stakeholder Needs Issue Date: 03/29/ /07/ Initial Description Marco Bittencourt

Announcements. SE 1: Software Requirements Specification and Analysis. Review: Use Case Descriptions

Faculty: Sabine Seymour, Office hours by

University of Dayton Department of Computer Science Undergraduate Programs Assessment Plan DRAFT September 14, 2011

Verifying Semantic of System Composition for an Aspect-Oriented Approach

Master Degree Program in Computer Science (CS)

DOVER-SHERBORN HIGH SCHOOL PROGRAM OF STUDIES

through d2l Phone: Office: Ewing 240 Office Hours: Online "Office Hours": Friday 11:00-12:00

Agile Software Development Methodologies and Its Quality Assurance

Telecommunication (120 ЕCTS)

Transcription:

Introduction to Software Engineering Lecture 1 Introduction to Software Engineering Dewayne E Perry Office: ACE 5.124 Hours MW 11-12:00 Phone: +1.512.471.2050 perry @ ece.utexas.edu www.ece.utexas.edu/~perry/education/se-intro/ 1

You Just Made the Wrong Choice 2

Sometimes 3

Course Information www.ece.utexas.edu/~perry/education/se-intro Syllabus Lists papers to be read in preparation for each lecture Online: at www.ece.utexas.edu/perry/education/ All papers are there to be downloaded Class is discussion! Preparation: read the papers Will provide study/thought questions to consider while reading In class excercises Grades: weekly (possibly more) quizzes; 2 exams (no final exam) At the beginning of class for that day s readings NO make-up quizzes will drop lowest two scores NO make-up exams except under dire circumstances 90%, 80%, 70%, 60%, 50% grade structure Grad students project with incremental schedule Concepts and principles are the point in this course Details are there to help understand the concepts and principles will not hold you to remembering all the details See the handout on how to read papers Sample test there to give you an idea for quizzes & exams Standard ECE and UT no cheating policies 4

Other Matters Class attendance Do not take attendance BUT will call on you to answer questions BUT weekly (or more) quizzes and two (1 st half; 2 nd half) exams Generally, no PPT slides class will be devoted to discussion Missing quizzes and exams You are expected to be here for tests IF you are going to miss, get to me first Has to be a significant reason There are phones with answer machines (office: 471-2050) There is email (perry @ ece.utexas.edu) And there is personal contact (I am usually around mornings) The only excuse for not getting to me ahead of time is a death in the family yours! Interviews for jobs are not sufficient excuses. Your class comes first!! You will get out of this as much as you put into it! 5

To Help You Do Well Improve comprehension WSJ: report on studies for improving comprehension Look at ART Go visit the Blanton Museum Take an art class Stimulates the part of the brain related to comprehension Improve retention WSJ: report on study for improving retention Writing longhand notes versus typing (eg on you laptop) Writing longhand exercises that part of the brain associated with retention Typing does not. If all else fails, eat dark chocolate See proof on next slide 6

Proof of Dark Chocolate 7

Reading Assignments Classic and seminal papers The underlying concepts and principles are critical! You will be thankful when you go to interview for a software position your interviewers will like what you can say about engineering software systems I am going to be a CE/EE why is SE relevant? Software is invading every aspect of our lives For CE (and even EE) you will build software systems The concepts and principles are just as relevant for CE/EE All engineering is about design, measurement and evaluation etc Building software systems is Fun! One of the most creative and intellectually challenging fields today The papers provide examples and lessons 8

The Joys and Sorrows Joys Sheer joy of making things Delight in working in a hackable medium Thought stuff Limits: imagination, logic and complexity Fashioning complex puzzle-like objects Creativity grand concepts Always learning new things Making things useful for/to other people Sorrows Other people often set the objectives and boundaries Has to work perfectly Finding bugs is hard work Debugging has linear convergence, or worse Make progress by finding our silly and not so silly mistakes What we build may be obsolete before completed 9

The Gospel according to BC We are here to learn about software engineering We have a book and papers for basic understanding There are libraries, internet sites, colleagues, and me to supplement your basic knowledge 10

Overview of Course Overview of Software Engineering Life-Cycle Phases ½ semesster Requirements Architecture & design Construction Deployment & Maintenance Integral Activities ¼ semester Documentation Measurement & evaluation Management of objects Teamwork Evolution Process Life-Cycle & Integral activities ¼ semester Project Management week before 2 nd exam 11

SE Life-Cycle Product Requirements Architecture & Design Construction Deployment & Maintenance Documentation Measurement & Evaluation Manage Objects Teamwork Evolution Phases Integral to all phases 12

Software Engineering (SE) Software Engineering is about building, maintaining and evolving software systems Fundamentally, SE is a set of problem solving skills, methods, techniques and technology applied in a variety of domains to create & evolve useful software systems that solve practical problems Programming is just one of these basic problem solving skills Brooks: Software entities are more complex for their size than perhaps any other human construct Wulf & Shaw: Large programs, even not so large programs, are among the most complex creations of the human mind Why? Need more memory? Add more memory cards replicate In SE, add new distinct components, generally little replication. Basic Job of a Software Engineer Discover, create, build and evolve abstractions, behaviors and representations Effectively evaluate and decide among alternative solutions 13

SE and Other Engineering Disciplines Two major components in engineering systems Design Manufacture Engineering is applied to both design and manufacture Significant part of an engineering discipline is the manufacturing process Have mathematics, for example, for optimization of processes Engineer manufacturing and fabrication equipment SE: engineering is applied to both as well, BUT Manufacture is Trivial (by comparison sometimes complex and time-consuming) Mundane Automated Much larger emphasis on engineering applied to DESIGN Building a software product is a DESIGN process General design approaches/principles applied to diverse domains 14

Essential Characteristics of Software Systems Main Message of Brooks No Silver Bullet paper:... no single development, in either technology or management technique, that by itself promises even an order of magnitude improvement in productivity, reliability or simplicity! Brooks distinguishes between Essential characteristics Accidental characteristics Basic fact (and first important lesson): Building software systems is just plain hard Essence of software systems A construct of interlocking constructs: data sets, relations between/among data, algorithms and invocations Abstract 15

Essential Characteristics of Software Systems Essential characteristics Complexity Conformity Changeability Invisible Implicit Evolution Accidental Characteristics Inadequate modes/means of expressions Inadequate abstractions Inadequate support Resource limitations 16

Dilbert & Brooks 17

Essential Characteristics of Software Systems Complexity Basic issues No two parts alike - ie, all parts distinct Scale up by addition, not replication Very large number of states hard to conceive, understand 2 kinds of complexity Intricacy Particularly true of algorithms Like a Bach 4 voice fugue Horizontal and vertical relationships Hard to change one note without severe repercussions Wealth of detail Nothing very deep, just masses of details Like a Strauss tone poem, or Mahler symphony Massive number of notes on a page provide texture Missing one would hardly be noticed Makes very hard to comprehend the entire system (eg, 10M lines) 18

Complexity: Intricacy (Bach) 19

Complexity: Wealth of Detail (Strauss) 20

Essential Characteristics of Software Systems Conformity There are complex objects in physics BUT they have uniformity Not so in software systems eg, interfaces Often arbitrary complexity Changeability Thought stuff infinitely malleable Hence, soft Invisible Not inherently embedded in space No inherent geometric representation Multi-dimensional relationships 21

Essential Characteristics of Software Systems Implicit Explicit part Code a desiccated relic of a long intellectual process Very large design space Narrow to code thru large number of design decisions Various architectural, design and implementation decisions Numerous and various trade-offs Syntax represents gross and obvious dependencies BUT, not the logical or semantic dependencies Evolution Not a matter of getting it right the first time Though sometimes that needs to be done Changes in the world forces evolution Context Use Technology 22

Accidental Characteristics of Software Systems Inadequate modes/means of expression Languages are important: Wittgenstein: the limits of my language are the limits of my world Johnson: language is the dress of thought High Level Languages Frees us from accidental complexity Provides useful abstractions that can be automatically checked Eg, Ada Modularity, abstraction, concurrency BUT, still just an incremental improvement Eg, OO Abstract data types + hierarchical types with inheritance Reduces syntactic stuff with no information content BUT, type underbrush is not 9/10ths of the work we do 23

Accidental Characteristics of Software Systems Inadequate abstractions AI heuristics rules of thumbs But much doesn t apply Graphical programming not convincing An exception: Kramer & Magee s state simplification work Helps to find faults and reduces accidental complexity Automatic programming: higher level language + generator Need well understood domain Relatively few parameters Known methods for alternatives Explicit rules for selecting solution techniques Program verification: verify instead of test No magic hard work Programming hard, Specifications harder, proofs harder yet Very hard to debug the specifications Virtually all published proofs of programs have bugs 24

Accidental Characteristics of Software Systems Inadequate support Programming environments Libraries, structures, standard formats Eg, language oriented editors Never did make it Useful: integrated data base for impact details Resource limitations Time-sharing systems Immediacy, availability, continuity Workstations Think time still dominant Cloud just servers on steroids Expands availability But still possible connection problems 25

Brooks Recommendations Buy not build Will see later there are flaws in the ointment Requirements, refinement, prototypes Incremental development Grow, don t build, software systems Use great designers Good design practices good designs Can be taught Great designs need great designers Creative (the difference between Salieri and Mozart) Achieve conceptual integrity The right mix of simplicity and functionality 26