Clase 1 Ingenieria de Software

32
Software Engineering Class 1

Transcript of Clase 1 Ingenieria de Software

SoftwareEngineering

Class 1

Goals of this courseIntroduce industrial-strength softwaredevelopment: formal processes/artifacts for planning, specifying, designing,

implementing, and verifying Individual and team-based development life-cycle issues and “umbrella” activities

Introduce key foundations underlying theseactivitiesE.g., requirements engineeringE.g., software modelingE.g., assurance

How “different” is this course?Quite!Not a “programming course”Exercises aim to facilitate problem understanding, solutions, tradeoffs, and sensitivity to challenges that affect industrial software developmentWritten and oral communication skills will be exercised, improved, and assessedThe work is individual and will be assessed

What is SoftwareEngineering ???

The study of systematic and effectiveprocesses and technologies for supportingsoftware development and maintenanceactivitiesImprove qualityReduce costs

Historical Perspective1940s: computers invented

1950s: assembly language, Fortran

1960s: COBOL, ALGOL, PL/1, operating systems

1969: First conference on Software Eng

1970s: multi-user systems, databases, structuredprogramming

Historical Perspective (cont.)1980s: networking, personal computing,embedded systems, parallel architectures1990s: information superhighway, distributedsystems, OO in widespread use.2000s: virtual reality, voice recognition, videoconferencing, global computing, pervasivecomputing...2010s: EMRs, autonomous vehicles, new securityawareness, ...2015s: ubiquitous computing

Hardware Costs vs SoftwareCosts (% of overall costs)

s/w costsh/w costs

Time

Why is software so expensive?Hardware has made great advances

But, software has made great advances ...

We do the least understood tasks in software.When task is simple & understood, encode it in hardwareWhy?

Demand more and more of softwareConsider your cell phone

Size of programs continues to grow

Trivial: 1 month, 1 programmer, 500 LOC, Intro programming assignments

Very small: 4 months, 1 programmer, 2000 LOC Course project

Small: 2 years, 3 programmers, 50K LOC Nuclear power plant, pace maker

Medium: 3 years, 10s of programmers, 100K LOC Optimizing compiler

New ScaleUltra-Large Scale SW-Intensive Systems

Healthcare Infrastructure

© 2007 Carnegie Mellon UniversityUltra-Large-Scale SystemsLinda Northrop, ICSE 2007

New ScaleIntelligent Transportation and Vehicle Systems

Ultra-Large-Scale Systems Linda Northrop, ICSE 2007© 2007 Carnegie Mellon University

The ULS EcosystemKey elements:Computing devicesBusiness and organizational policiesEnvironment (including people)

Forces:Competition for resourcesUnexpected environmental changesDecentralized controlDemand for assurance

Context: ‘’Sufficient’’ System HealthHigh-level Objective:How to design a safe adaptive system with incomplete information and

evolving environmental conditions

Execution environmentHow to model environmentHow to effectively monitor changing conditionsAdaptive monitoring

Decision-making for dynamic adaptationDecentralized controlAssurance guarantees (functional and non-functional constraints)

Adaptation mechanisms:Application levelMiddleware level

What’s the problem?Software cannot be built fast enough tokeep up withH/W advancesRising expectationsFeature explosion

Increasing need for high reliability software

What’s the problem?Software is difficult to maintain “aging software”

Difficult to estimate software costs and schedulesToo many projects failArianne MissileDenver Airport Baggage SystemTherac

Why is software engineering needed?

To predict time, effort, and costTo improve software qualityTo improve maintainabilityTo meet increasing demandsTo lower software costsTo successfully build large, complex softwaresystems

To facilitate group effort in developing software

Show’s model of engineeringevolution [Shaw-IEEE-Computer90]

Production

CommercialCraft

Science

Engineering

Characteristics: CraftVirtuosos and talented amateursIntuition and brute forceHaphazard progressCasual transmission of knowledgeExtravagant use of available materialsManufacture for use rather than sale

Examples: woodworking, artists, hobbies

Characteristics: Commercial productionSkilled craftsEstablished procedurePragmatic refinementTraining in specific domain (e.g., mechanics--automotive technicians, structures-- constructionworker, electricians)Economic concern for cost and supply of materialsManufacture for sale

Examples: automotive parts, chip manufacturing

Characteristics: Professional engineering

Educated professionalsAnalysis and theoryProgress relies on scienceEducated professional classNew applications enabled through analysisMarket segmentation by product variety

Examples: civil engineering (bridges, buildings), automotiveengineers (electronics, mechanical engineering)

Evolution of Civil Engineering

ProductionCommercial

Craft

ScienceEngineering

1st century:Romans

1750: MateriaL Properties 1850: Bridg Analysis

1700: Statics, strengthof materials

Civil EngineeringBasis in theory.Actually two theories:oStatics: composition of forces.oMaterial strength: bending of a beam.Theories preceded real CE by 150 years!

Underlying science emerged 1700 yearsafter commercial production evolved!

Software Engineering Evolution(circa 1990)

Science: algorithms, logic, databases, languages

Production

Craft

Commercial

Engineering

1980’s: DevelopmentMethodologies

1965-70: algorithms1980-85: ADTs

Isolated Examples (5ESS, Shuttle)

Science

Two “pillars” of SE educationBasis in:production processes and process frameworksrigorous theories addressing design problems thatattend to the various phases of these processes

This course:organized around first pillarstructured so that process issues will motivateintroduction of theoretical content

Software Engineering Phases

Definition: What?

Development: How?

Maintenance: Managing change

Umbrella Activities: Throughout lifecycle

DefinitionRequirements definition and analysisDeveloper must understand

oApplication domain

oRequired functionality

oRequired performance

oUser interface

Definition (cont.)

Project planningAllocate resourcesEstimate costsDefine work tasksDefine schedule

System analysisAllocate system resources to

o Hardwareo Softwareo Users

DevelopmentSoftware designUser interface designHigh-level designoDefine modular componentsoDefine major data structuresDetailed designoDefine algorithms and procedural detail

Development (cont.)

CodingDevelop codefor each module

Unit testing

IntegrationCombine modulesSystem testing

MaintenanceCorrection - Fix software defectsAdaptation - Accommodate changesNew hardwareNew company policiesPrevention - make more maintainableEnhancement - Add functionality

Umbrella Activities

Reviews - assure quality

Documentation - improvemaintainability

Version control - track changes

Configuration management - integrityof collection of components

Software Engineering Costs