System Engineering

3 downloads 83 Views 30MB Size Report
h3p://www.uio.no/studier/emner/matnat/ifi/INF1050/. • O. Widder. (2013). geek&poke. Available: h3p://geek-‐and-‐poke.com. • B. Lund. (2013). Lunch. Available:.
Software Engineering

B. Lund. (2013). Lunch. Available: http://www.lunchstriper.no, http://www.dagbladet.no/tegneserie/lunch/

Hans-Petter Halvorsen

Software Development

Software Hardware and software are deeply integrated

Hardware 2

iPhone 1: Development period 2004-2007, 1000 Apple employees worked with the device. Estimated cost: $150 mill.

Planning, Requirements, Design, Implementation, Testing, Deployment, Maintenance, etc.

Software Development

User

Who are going to use the software?

Application

Desktop, Web, Mobile?

Operating System

Windows, OS X, Linux, Android, iOS, etc.

Hardware

PC, Mac, Smartphone, Tablet, SmartTV, etc.

Windows Server 2008/2012

Clients

Windows 7/8

Wi-Fi Server Ethernet

OPC Server

LAN Router

Intern et

Typical Network & Infrastructure used in System Development

Web Server Database Server IIS

SQL Server

Software Trends The Cloud

Apps Virtualization

Cloud Computing

Mobil e

Softwear BYOD Wearable Computing

Bring Your Own Device 6

Software Trends

System Engineering The process of analyzing and designing an entire system, including the hardware and the software

Software Engineering The discipline for creating software applications. A systematic approach to the design, development, testing, and maintenance of software

Software Engineering Databases

Requirements Cost Estimation

Project Management Developmen t Processes

Design Quality Control

Testing

Law and Ethics

Architecture

Programming

9

Deployment

Planning

Maintenance Testing

Implementation

The Software Development Lifecycle (SDLC)

Design

Requirements Analysis

Planning

Requirements

Design

Implementation

Testing

Deployment

Application Lifecycle Management (ALM) • ALM Tools: Tools that facilitate and integrate: – – – – – –

Requirements management, Architecture, Coding, Testing, Tracking, And Release Management (-> Software Development!)

• There exist a lot of such tools (TFS, Jita, etc…) • We will use Team Foundation Server (TFS) from Microsoft, since it is tightly integrated with Visual Studio http://en.wikipedia.org/wiki/Application_lifecycle_management

13

Your Toolbox

Learned in previous courses

Focus in this Course

• PC • Programming and Programming Languages (e.g., C#) • IDE (Integrated Development Environment) (e.g., Visual Studio) • Software Frameworks (e.g., .NET) • SCC Tool (Source Code Control) (e.g., Team Foundation Server, TFS) • ALM Tool (Application Lifecycle Management) (e.g., Team Foundation Server, TFS) • Knowledge about basic Software Engineering (Requirements, Planning, Testing,

and Development Processes like Agile, Scrum, etc.) You cannot do a good job as a software developer without some proper tools!

“Chicken and the egg” Documentation

The documentation is useless without good software

Software

The software becomes/is useless without good documentation

How to work in the project period Project Management

Working with Project Tasks

Documentation (Report, etc.)

Start

Finish

Important: Work with these activities in parallel!!!

16

O. Widder. (2013). geek&poke. Available: http://geek-and-poke.com

Why Software Engineering is needed!

17

Software History

O. Widder. (2013). geek&poke. Available: http://geek-and-poke.com

Hans-Petter Halvorsen

Who´s Who – The Software Industry

Software Companies • Microsoft (1975), Bill Gates, Paul Allen – MS DOS (1981), Office, Windows (1985), … – Employees (2012): 94.000, Revenue (2012): $74 bill. • Apple (Software and Hardware) (1976), Steve Jobs, Steve Wozniak – Machintosh (1984), iPhone (1097), iPad (2012), iOS – Employees (2012): 72.800, Revenue (2012): $158 bill.

• Google (1986), Larry Page, Sergey Brin • Facebook (2004), Mark Suckerberg – More than 1 bill. users 20

O. Widder. (2013). geek&poke. Available: http://geek-and-poke.com

Facebook

21

Mac OS

The beginnning Mac

Windows

LabVIEW for Mac

Today (Some examples)

iPhone OS X Yosemite

Windows 8.1/Windows 10

23

Software Development is a never ending story! MS-DOS (1981)

Windows 1.0 (1985) Windows 3.0 (1990), …, Windows NT (1993) , …, Windows XP (2001), Windows 7 (2009), …

Windows 8 (2012) (DOS is still available)

24

Example: Windows Timeline/Lifecycle

25

Software Releases Before the software is released • Alpha Release(s) • Beta Release(s) • RC - Release Candidate(s) • RTM – Release To Manufactoring Maintenance (after the software is released) • Patches (small fixes) • SP - Service Packs (lots of small fixes and pathes bundle together) … Start Planning next release 26

Example - Windows 8 • Start planning and development of Windows 8, 2008/2009 (the planning started before Windows 7 was released)

– – – – –

Internal Builds xxxx…xxxx Internal Alpha versions, Alpha 1, 2, 3 Internal Builds xxxx…xxxx Internal Milestone1 Release (build 7850), 2010.09.22 Internal Milestone2 (build 7955), Milestone3 (build 7989)

• Developer Preview (build 8102), 2011.09.13 – Internal Builds xxxx…xxxx

• Consumer Preview (build 8250), 2012.02.29 – Internal Builds xxxx…xxxx

• Release Preview (build 8400), 2012.05.28 – Internal Builds xxxx…xxxx

• RTM Release (build 9200), 2012.08.01

major.minor.maintenance.build

It is normal to build the software automatically every night, ready for internal tester the day after

App Development

The “New Thing” in Programming!

Slik blir du Apputvikler: [http://www.hardware.no/artikler/slik-blir-du-apputvikler/108560] 3.årig bachelor uttdanning Mobil apputvikling – NITH: [http://nith.no/bachelor/studieprogrammer/mobil-apputvikling]

28

Norge vil gå tom for unike fødselnummer rundt år 2040 hvis ikke noe gjøres. Etter en lengre utredning foreslår Skattedirektoratet derfor en ny nummerserie som bare skal gjelde for nyfødte og nye borgere. Flere tusen ulike informasjonssystemer må justeres, med oppdrag IT-bransjen kan glede seg til.

Software Engineering

B. Lund. (2013). Lunch. Available: http://www.lunchstriper.no, http://www.dagbladet.no/tegneserie/lunch/

Hans-Petter Halvorsen

31

http://www.digi.no/912578/dette-kostet-125-millioner

Project Planning and Management is also important in Software Development!

32

Software Engineering • Software Engineering (SE) - a systematic approach to the design, development, testing, and maintenance of software • Sofware Development in a structured way • Other Names: – Software development, Application development, software design, designing software, software application development, enterprise application development, or platform development 33

Motivation • Windows 7: A Team with 1000 Developers • Number of Code Lines: Real systems may have millions of code lines • Big money: 100+ million Development Projects • Combination of Hardware and Software • iPhone 1: Development period 2004-2007, 1000 Apple employees worked with the device, Estimated cost: $150 mill. è Some kind of structure is needed!! - Software Engineering is the Answer! 34

Software Engineer/Software Developer What kind of skills are needed by a Software Engineer? What does actually a Software Engineer do?

A kid in his room programming?

Here is the answer:

http://www.youtube.com/watch?v=zKD07mruL5M

35

Why System Engineering? • Understand Customer Requirements

– What does the customer neeeds (because they may not know it!) – Transform Customer requirments into working software

• Planning – – – –

How do we reach our goals? Will we finish within deadline? Resources What can go wrong?

• Implementation

– What kind of platforms and architecture should be used? – Split your work into manageable pieces

• Quality and Performance

– Make sure the software fulfill the Customers needs 36

Software Engineer/Software Developer Job Ads Examples (in Norway):

37

Software Engineer/Software Developer

38

Software Engineer/Software Developer

Software Engineering Databases

Requirements Cost Estimation

Project Management Developmen t Processes

Design Quality Control

Testing

Law and Ethics

Architecture

Programming

40

What is software engineering? https://www.youtube.com/watch?v=Wg0s1XCfISs

Teams and Roles • • • • • • •

Customer/Stakeholders

Customer/Stakeholders Project Manager Software Architect Collaboration! UX Designer Software Architect Software Tester Developer Tester Project Manager etc. UX Designer

Programmer 42

Software Team Stakeholders

Project Manager Software Tester

UX Designer System Engineer Programmer/Developer Software Architect A System Engineer is a general person that could be a Programmer, Architect, Designer, Tester in different phases in the project, or he could be a tester in one project and a programmer in another project – all in one person. That is usually the case in small companies, while in larger companies these roles (designer, tester, programmer) could be a full-time job.

43

Development Process

The Development Process involves different phases, e.g.: The Requirements may be given by the Customer

Requirements

Design

In this case the overall Requirements are given by the Teacher in the Assignment. The details are written by you!

The Design phase is important, but make sure you have time left for all the other tasks as well)

Are the Design wrong? Go back and correct it!

Implementation Errors? Improve your code and fix the bugs

Testing When you are finished, you deploy and test the solution on the Customer Site

Deployment

Make sure everything work as expected

44

Development Phases

45

Software Development Methods Traditional Plan-driven Methods

Agile Methods eXtreme Programming (XP)

Waterfall Method

Scrum Feature Driven Development (FDD)

V-Model Spiral model

Lean Software Development

Test Driven Development (TDD)

Even if we use different software development methods, we deal with the same phases like Requirements, Design, Coding, Testing and Deployment – but they may have different priority and may be done in different manners and order, etc.

46

Agile Software Development Agile Software Development methods (e.g. Scrum, XP) have become very popular

We will also use Agile Software Development and Scrum in our Project Assignment 47

Scrum

A Framework for Software Development Working Software at all times!

Iterative approach

Scrum at Microsoft: http://www.youtube.com/watch?v=YR84qH6d7QE&feature=youtu.be

Scrum Overview Daily Scrum Meetings Sprint

Sprint Review

Product Owner Sprint Backlog

Developers Product Backlog Stakeholders

Scrum Master

Development Team 3-9 persons

You will learn more about Agile Software Development (and Scrum) later 49

Summary We will learn how to build good (i.e. high quality) software, which includes: • Requirements Specification • Technical Design • Good User Experience (UX) • Improved Code Quality and Implementation • Testing • System Documentation • User Documentation • etc. 50

References • • • • • • • • • • • •

I. Sommerville, Software Engineering: Pearson, 2010. E. J. Braude and M. E.Bernstein, Software Engineering. Modern Approaches, 2 ed.: Wiley, 2011. F. Tsui, O. Karam, and B. Bernal, Essentials of Software Engineering, 3 ed.: Jones & Barlett Learning, 2014. Wikipedia. (2013). Software Development Process. Available: http://en.wikipedia.org/wiki/Software_process NTNU. (2013). TDT4140 Systemutvikling. Available: http://www.ntnu.no/studier/emner/TDT4140 UiO. (2013). INF1050 - Systemutvikling. Available: http://www.uio.no/studier/emner/matnat/ifi/INF1050/ O. Widder. (2013). geek&poke. Available: http://geek-and-poke.com B. Lund. (2013). Lunch. Available: http://www.lunchstriper.no, http://www.dagbladet.no/tegneserie/lunch/ S. Adams. Dilbert. Available: http://dilbert.com S. Sveinbjørnsson. (2013). Koding må bli like viktig som sløyd. Available: http://www.digi.no/915063/koding-maa-bli-like-viktig-som-sloyd NTNU. (2013). Studieteknikk. Available: http://www.ntnu.no/studier/studieveiledning/studieteknikk A. Skretting. (2012). Slik blir du apputvikler. Available: http://www.hardware.no/artikler/slik-blir-du-apputvikler/108560 51

Hans-Petter Halvorsen, M.Sc. University College of Southeast Norway www.usn.no E-mail: [email protected] Blog: http://home.hit.no/~hansha/