Software Development of Large Systems F1cs.lth.se/fileadmin/cs/ETSN05/PUSS_Lecture1_2015.pdf ·...
Transcript of Software Development of Large Systems F1cs.lth.se/fileadmin/cs/ETSN05/PUSS_Lecture1_2015.pdf ·...
Software Development of
Large Systems F1HENRIK COSMO
Course teachers
http://cs.lth.se/ETSN05
Henrik Cosmo
Course leader, lectures
Anders Bruce,
Project, labs, ePuss-guru,
design expert
Hussan Munir
Exercises, project, test
expert
Alma Orucevic-Alagic
Project, labs, technical
expert
Lena Ohlsson
Course secretary
About me
• Q-Labs 1989-1996 Software engineering• Lic, LTH, 1991-1994 Software engineering• ENEA 1997 Software engineering• Ericsson 1998-2001 SW manager• Sony Ericsson 2001-2012 SW management team• Asurion 2012-2014 SW responsible APAC • Mobile Heights 2012-present Internet of Things• MAPCI 2012-present Internet of Things
• Have worked in most parts of software engineering.
• Mobile: 0720 23 56 09• Email: [email protected]• LinkedIn: https://se.linkedin.com/pub/henrik-cosmo/a/549/11
My research interests
• Internet of Things
• Servitization
• Software engineering
Course background
Agenda of todays lecture
Part one:
• introduction
• course/project objectives
• course program
• course/project overview
• project roles
Part two:
• the product
• the task
• development model
Question
• How many lines of “production” code does the average
software engineer write per day?
Answer
• How many lines of “production” code does the average
software engineer write per day?
• Only between 10 to 20 lines of code
What does a software engineer do every
day in office?
What does a software engineer do every
day in office?
• Code maintenance
• Testing
• Writing new code
• Fixing bugs
• Understanding
existing code
• Working with clients
• Research
• Code reviews
• Design reviews
• Deployment
• Team meetings
• Documentation
• White boarding
• Monitoring
• Thinking
• Time writing
What is this course about?
• This course will teach you about the things a software
engineer is doing when not coding
Skills needed for software engineering
• Patience
• Communication
• Curiosity
• Listening
• Self driven
• Math/logic
• Enjoys challenges
• Experimental
• Organized
Software project failures
• Swedish police system – PUST 123 million SEK
• http://computersweden.idg.se/2.2683/1.547909/polisen-lagger-ner-pust
• 10 biggest ERP software failures of 2011
• http://www.computerworld.com/article/2500604/technology-law-regulation/10-biggest-erp-
software-failures-of-2011.html
• Only 3 of 10 IT projects are successful
• http://computersweden.idg.se/2.2683/1.15441/stort-missnoje-med-it-projekt---bara-3-av-10-
anses-lyckade
• How to recognize a failing IT project
• http://chef.se/sa-kanner-du-igen-ett-misslyckat-it-projekt/
• Swedish failing IT projects
• http://cio.idg.se/2.1782/1.326833/darfor-floppade-projektentre-svenska-it-fiaskon-under-
lupp
History – Waterfall 1970
• Huge problems with software disasters led to the study of
how high-quality software could be developed on a
predictable schedule and budget
• That resulted in a the definition of the first Plan-and-
document model called Waterfall model
• W. W. Royce defined the Waterfall model in 1970
• Steps
1. Requirements
2. Architectural design
3. Implementation and integration
4. Verification
5. Operation and Maintenance
Spiral model 1986
• It is easier for customers to understand what they want
once they see a prototype
• Engineers to understand how the system works after they
have done it once
• This lead Barry Boehm 1986 to define the Spiral model
• Steps
1. Determine objectives and constraints of this
iteration
2. Evaluate alternatives and identify and resolve risks
3. Develop and verify prototype for this iteration
4. Plan the next iteration
Rational Unified Process (RUP) 2003
• Inception: makes the business case for the software and
scopes the project to set the schedule and budget.
• Elaboration: works with stakeholders to identify use
cases, designs a software architecture, sets the
development plan, and builds an initial prototype.
• Construction: codes and tests the product, resulting in the
first external release.
• Transition: moves the product from development to
production in the real environment, including customer
acceptance testing and user training.
Agile models
• Agile software development is a group of software
development methods in which solutions evolve through
collaboration between self-organizing, cross-functional
teams.
– It promotes adaptive planning, evolutionary
development, early delivery, continuous improvement,
and encourages rapid and flexible response to
change.
• The Manifesto for Agile Software Development, also
known as the Agile Manifesto, first introduced the
term agile in the context of software development in 2001.
Agile manifesto - based on 12 principles1. Customer satisfaction by rapid delivery of useful software
2. Welcome changing requirements, even late in development
3. Working software is delivered frequently (weeks rather than
months)
4. Close, daily cooperation between business people and
developers
5. Projects are built around motivated individuals, who should be
trusted
6. Face-to-face conversation is the best form of communication
(co-location)
7. Working software is the principal measure of progress
8. Sustainable development, able to maintain a constant pace
9. Continuous attention to technical excellence and good design
10.Simplicity—the art of maximizing the amount of work not
done—is essential
11.Self-organizing teams
12.Regular adaptation to changing circumstance
Extreme Programming (XP)• Is intended to improve software quality and responsiveness to
changing customer requirements.
• It advocates frequent "releases" in short development cycles.
• Other elements of extreme programming include: – programming in pairs or doing extensive code review,
– unit testing of all code,
– avoiding programming of features until they are actually needed,
– a flat management structure,
– simplicity and clarity in code,
– expecting changes in the customer's requirements as time
passes and the problem is better understood,
– and frequent communication with the customer and among
programmers.
Scrum
• Is an iterative and incremental agile software
development methodology for managing product development.
• A development team works as a unit to reach a common goal",
encouraging physical co-location, as well as daily face-to-face
communication among all team members and disciplines in
the team.
Kanban
• Is a method for managing knowledge work with an
emphasis on just-in-time delivery while not overloading
the team members.
• In this approach, the process, from definition of a task to
its delivery to the customer, is displayed for participants to
see.
• Team members pull work from a queue.
Waterfall vs. Agile
• Pure waterfall models have gotten a lot of criticism due to
lack of customer communication through out development
• Agile methods are one answer to this criticism, but they
have other problems.
• Most projects in industry are still waterfall based
development. Very often a mix of the two is used.
• You have to choose the model that fits your needs.
– Start ups - Agile
– Large military projects – Waterfall with agile
influences
This course teaches Waterfall
• This course teach a waterfall model that can be tailored to
become more agile
• Due to
– That it is a good basis to understand all development
methods.
– Is the most used in industry.
– The trend is to move towards a mix of the two main
methods.
What is this course about?
Course and project objectives
Prepare you for large-scale, industrial software
development in teams.
Knowledge of:
• development processes
• project management
• central concepts from large-scale development
Experience with:
• problems in large projects
• possible solutions to problems
• experience one particular project role (hands-o
Important areas that you should know
about after the course
• Development models
• Requirements engineering
• Configuration management
• Test and quality management
• Project management
– Planning and follow-up
• Some basic software engineering terminology
Pedagogical approach
• Learning by doing: Case-based learning
• Simulate a real project in a typical large software
organization.
• Having issues is good for learning. Some issues may only
appear in some teams.
• Apply approaches used in current software engineering
practice, such as project management, process model,
milestones, reviews, etc.
Support
Compendia:
• project guide (PH)
• base system see course website
Lectures (4+1)
Exercises (3), Tool labs (2)
Experts (3+1): requirements, design, test
Section manager
Reviews (2+1)
Course compendium
Lectures, exercises, labs and reviews
Week 1 2 3 4 5 6 7
Lecture FÖ1 FÖ3 FÖ6
FÖ2 FÖ4
Exercise Ö1 Ö3
Ö2 Ö4
Labs TÖ1 TÖ2
Reviews Gr1 Gr2 Acc-test
Other deadlines and meetingsWeek 1 2 3 4 5 6 7
PG PSU,ESU LSU
PrM PrM PrM PrM PrM PrM PrM
KOM SMM SMM SMM SMM SMM
SG PSU,ESU LSU
PrM PrM PrM PrM PrM PrM PrM
KOM EM EM EM EM EM
UG PSU,ESU LSU
PrM PrM PrM PrM PrM PrM PrM
EM EM EM EM EM
TG PSU,ESU LSU
PrM PrM PrM PrM PrM PrM PrM
KOM EM EM EM EM EM
Project meetings = PrM PM, All
Section manager meeting = SMM PM
Expert meeting = EM PM, SG, UG, TG
Kick-off möten = KOM PG, SG, TG
Exercise sign-up = ESU All
Lab sign-up = LSU All
Project sign-up = PSU All
Document Timeline
Week 1 2 3 4 5 6 7
PG
SG
UG
TG
SDDD
SSD
PFR
PFR
PFR
PFR
SVVI
SDP
SRS
SRS
SVVS
STLDD
STLDD
SDDD
SVVR
Review: SSR
Baseline: SpecificationReview: PDR
Baseline: Design&Test
Review: PR
Baseline: Product
Reports
Week 1 2 3 4 5 6 7
PG TiR,WR,IA TiR,WR,IA TiR,WR,IA TiR,WR,IA TiR,WR,IA TiR,WR,IA TiR,WR,IA
RR RR RR
SG TiR, IA TiR, IA TiR, IA TiR, IA TiR, IA TiR, IA TiR, IA
PR PR PR PR PR PR
UG TiR, IA TiR, IA TiR, IA TiR, IA TiR, IA TiR, IA TiR, IA
TG TiR, IA TiR, IA TiR, IA TiR, IA TiR, IA TiR, IA TiR, IA
TeR TeR TeR
Time report = TiR All
Status report = SR SG
Weekly report = WR PG
Review report = RR PG
Test report = TeR TG
Problem report = PR SG
Indivudual assignment = IA All
Lecture 5 in week 6
• Seminar on problems in large projects
• Discussions based on your input
• You can submit your discussions-points (will be kept
anonymous if preferred) as input to the lecture during
week 6 to
• More information later
Assessment model
Project
What are we going to do on the course?
Development project
Development project
• Project managers
• Software architects
• Software developers
• Software testers
80 students have registered for the course
80/4 = 20 students per project
Build new software system
from a legacy system
Fundamental software engineering principlesDefining requirements, CCB, configuration management,
quality assurance, project planning, project follow up,
defining processes, roles and responsibilities, …
Development modelsPlan-and-document
Agile
The project task
• The course will be split into 4 teams to solve an Internet
of Things project task together
• Development of Android apps
The product
Some basic Use cases to be
implemented
• Turn on/off the lamp
• Change color of the lamp
• Activate/deactivate that the sensor sends data.
• Get sensor data for different sensor types (humidity,
temperature…) within chosen time intervals.
Project organization
• Project managers (PG)
• System Architects (SG)
• Developers (UG)
• Test Groups (TG)
”External” roles
Project management group (2 persons)
• Responsible for the group producing a result
• Plan, put together group, assign (and re-assign) tasks
• Identify configuration items
• Collect and report metrics data
• Report to the Section manager
• Put together the Software Development Plan (SDP),
• The System Specification Document (SSD) and the
Project Final Report (PFR)
Kick-off project managers:
Wednesday 02/09 17:00 (after the lecture) with Henrik Cosmo in
E:2405
System group (3 persons)
• Responsible for coordinating the technical work
• Handle the base system and interfaces
• Responsible for program library and error- and change reports
• Put together the
Software Requirements Specification (SRS),
Software Top Level Design Document (STLDD)
Software Detailed Design Document (SDDD)
• Do time reporting
Kick-off architects:
Thursday 03/09 12:15 with Anders Bruce and Alma Orucevic-Alagic in
E:2405
Developers (2 persons/team)
• Develop the requested new functionality
• Produce parts of the
Software Requirements Specification (SRS),
Software Top Level Design Document (STLDD)
Software Detailed Design Document (SDDD)
• Do time reporting
NO kick-off for your Group
Test group (2 persons/team)
• Responsible for testing
• Build new versions of the system before testing
• Create test files and carry out testing
• Produce the
Software Verification and Validation Specification (SVVS),
Software Verification and Validation Instruction (SVVI)
Software Verification and Validation Report (SVVR)
• Responsible for coordinating appendices
• Time reporting and error reporting
• A test manager must be appointed
Kich off with Hussan Munir on Wednesday 02.09 at 12:15 in E:2405
Experts and Section Manager
• Section manager -- SDP and PFR
• Requirements expert -- SRS
• Design expert -- STLDD and SDDD
• Test expert -- SVVS, SVVI and SVVR
• ePUSS-guru – Internet of Things system
People from Computer Science are experts and the Section
manager, customer (via the Section manager) and quality
evaluators (through reviews)
From requirements to code
Development model
Some software engineering concepts
(PH:1.2)
• Process, development model
• Configuration management, change management
• Requirements engineering
• Specification, analysis, design, implementation
• Review/inspection, validation ("Are you building the right
thing?"), verification ("Are you building it right?") and test
• Product documentation
• Project management, time planning, costs, resources
• Quality assurance
• Metrics (Metrics planning, -collection and -analysis)
• Characteristics, e.g. reliability
• Support system, CASE-tool
Administration
Signing up for the project
If you have doubts about taking the course – make up your
mind NOW!
Choose group via the homepage until Tuesday at 23.59
https://sam.cs.lth.se/LabsSelectSession?occasionId=3
84
Check your email often Tuesday/Wednesday, as your
project managers will call for the first group meeting
Sign up for exercises
• Exercises: no later than today at 18:00
• Labs: next week – check the course website for news
Lectures, exercises, labs and reviews
Week 1 2 3 4 5 6 7
Lecture FÖ1 FÖ3 FÖ6
FÖ2 FÖ4
Exercise Ö1 Ö3
Ö2 Ö4
Labs TÖ1 TÖ2
Reviews Gr1 Gr2 Acc-test
Sign up system
https://sam.cs.lth.se/LabsSelectSession?occasionId=384
To do before exercise session 1
• Mandatory preparation and participation on
exercises!
• Bring your computers if you have. This will help you
a lot during the exercise. If you do not have computer
with internet connection, please a print out of the
exercise!
• Prepare according to exercise preparation instructions.
Tentative project plan week1 (PH:C)
We are looking for project managers
We are looking for project managers!
The job requires: persistence, will to carry through,
discipline
The jobs gives:
• experience, overview, satisfaction
Previous experience not required, but merits are
appreciated. Talk to the Section manager during the break.
Email application to: [email protected]
• No later than this afternoon at 18:00 !!!
Good to do this today!
• Read PH chap. 1 through 4.4 (before exercise 1)
– study carefully the tasks of all roles (PH:3)
• Get an overview of the development model (PH:A)
• Check out the course home page:
http://cs.lth.se/ETSN05
• Before your first project meeting
– check email often (project managers may call for
meetings)
• Give comments on what you would like to discuss on
lecture 5