+ All Categories
Home > Documents > Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to...

Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to...

Date post: 24-Dec-2015
Category:
Upload: georgina-mcdaniel
View: 216 times
Download: 0 times
Share this document with a friend
Popular Tags:
16
Software Engineering Introduction
Transcript
Page 1: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

Software Engineering

Introduction

Page 2: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

Why are you here?

• …alternatively, why do we think you need to be here?

• Why a course on software engineering?• How is real-world programming different than

what you have been doing so far?

Page 3: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

Barry Boehm paper

• Read it before next class• Make sure you study it for the exams• Take notes!

Page 4: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

What is SE?

• Software engineering (SE) is a profession “dedicated to designing, implementing, and modifying software so that it is of higher quality, more

affordable, maintainable, and

faster to build“

Page 5: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

What’s wrong with the previous definition?

• A better definition: “SE is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software” – IEEE– Have you been doing this in your classes so far?

• Parnas (super famous CS guy) defined software engineering as the “multiperson construction of multiversion software”– Your projects so far were (probably) neither

multipurpose nor multiversion

Page 6: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

Observations from/after Boehm

• Maintenance is expensive• Name three ways modern SW is different from

HW– Size, malleability, wear, novelty

• Fred Brooks– Accidental versus essential difficulties– No silver bullet; cannot be fixed by tools alone

Page 7: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

Software project failure

• “Most” software projects fail• This failure is almost never due to developer

incompetence (alone)• If we are late, we can just add more people!• Who needs requirements; just start coding!• Requirements are malleable anyway!• And documentation just slows us down!• Besides, once we ship, we’re done!

Page 8: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

No.

Page 9: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

How can SE help?

• A set of tools and ideas that can increase the likelihood of success

Page 10: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

So what are these tools/ideas?

• (things we will cover this semester)• A generic approach– Rigor and formality– Separation of concerns– Modularity– Abstraction– Anticipation of change– Generality– Incrementality

Page 11: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

Leading to a Generic Framework• (things we will cover this semester)• Communication

– Heavy collaboration with the customer, other stakeholders and encompasses requirements gathering and related activities

• Planning– Establish a plan for the work. Technical task to be conducted, risks, needed

resources, work products to be created, and a schedule• Modeling

– Creation of models to allow the customer and the developer to better understand the requirements and design that will achieve those requirements

• Construction– Combines code generation and testing required to uncover errors in the code

• Deployment– The software (as a complete entity or partially complete increment) is

delivered to the customer who evaluates it and provides feedback.

Page 12: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

And the framework is applied

• This is called the process model• The framework activities will always be

applied on every project ... BUT• The tasks (and degree of rigor) for each

activity will vary based on:– the type of project – characteristics of the project– common sense judgment; concurrence of the

project team

Page 13: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

Example

• Which activities would you spend the most time on for– Space shuttle controller?– Web-based calendar?– Embedded controller in your refrigerator?– Daily fortune text messenger?

Framework Activities Communication Planning Modeling

Analysis of requirements Design

Construction Code generation Testing

Deployment

Page 14: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

A basic model: Waterfall

• Benefit:– Easy to follow

• Limitation:– Often associated with project failure. Why might

that be?Communication

Planning

ModelingConstruction

Deployment analysis design code

test

project initiation requirement gathering estimating

scheduling tracking

delivery support feedback

Page 15: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

Model types

• Prescriptive Models (like waterfall):– Want to limit and change– Provide repeatability/consistency– Coordinate teams

• Agile models– Respond to change– Working software rather than documentation– Individuals and interaction

• Which would you use for {a large team, a webapp, the space shuttle controller}?

Page 16: Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.

Umbrella activities

• Software project management• Formal technical reviews• Software quality assurance• Software configuration management• Work product preparation and production• Reusability management• Measurement• Risk management


Recommended