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/