Software Engineering D7032E

Slides:



Advertisements
Similar presentations
Configuration Management
Advertisements

Chapter 7: Key Process Areas for Level 2: Repeatable - Arvind Kabir Yateesh.
Sixth Hour Lecture 10:30 – 11:20 am, September 9 Framework for a Software Management Process – Artifacts of the Process (Part II, Chapter 6 of Royce’ book)
Version Control Systems Phil Pratt-Szeliga Fall 2010.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Configuration Management
Release & Deployment ITIL Version 3
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
RMsis – v Simplify Requirement Management for JIRA
Configuration Management Managing Change. Points to Ponder Which is more important?  stability  progress Why is change potentially dangerous?
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Software Configuration Management
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
Rational Unified Process Fundamentals Module 4: Disciplines II.
Software Configuration Management (SCM)
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
1 Lecture 19 Configuration Management Software Engineering.
Configuration Management (managing change). Starter Questions... Which is more important?  stability  progress Why is change potentially dangerous?
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
Version control Using Git Version control, using Git1.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
Software Project Management
Quick Recap Monitoring and Controlling. Lesson 11: Monitoring and Controlling Project Work Topic 11A: Identify the Monitor and Control Project Work Process.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
University of Southern California Center for Systems and Software Engineering Configuration Management: Concepts and Tools Pongtip Aroonvatanaporn CSCI.
Version Control and SVN ECE 297. Why Do We Need Version Control?
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
Virtual Lab Overview 5/21/2015 xxxxxxxxxx NWS/MDL/CIRA.
Review for Eclipse Release Review | © 2012 by Review for Eclipse Committers, made available under the EPL v1.0 1 Review for Eclipse (R4E) 0.11 Release.
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
Git workflows: using multiple branches for parallel development SE-2800 Dr. Mark L. Hornick 1.
Anjana & Shankar September,2010 Introduction to Programming Tools.
OSLC PLM Workgroup1 Towards detailed use cases and alignment to OSLC V0.1 Gray Bachelor 18 th July 2011.
Tools and technology usage in PFMS application lifecycle management process LEPL Financial-Analytical Service, Ministry of Finance October, 2015 Dimitri.
Version Control Systems
CompSci 230 Software Construction
CS5220 Advanced Topics in Web Programming Version Control with Git
Configuration Management
Software Configuration Management
Software Configuration Management
Software Project Configuration Management
Open Source Software Development Environment
Chapter 11: Software Configuration Management
LECTURE 2: Software Configuration Management
Source Control Dr. Scott Schaefer.
Version control, using Git
Configuration Management
CS5220 Advanced Topics in Web Programming Version Control with Git
Software Configuration Management
CVS revisions UML diagram
Version Control Systems
Concurrent Version Control
Configuration Management (managing change)
Software Configuration Management
LECTURE 3: Software Configuration Management
X in [Integration, Delivery, Deployment]
Software Engineering D7032E
Software Engineering Lecture 14 - Software Lifecycle 2
Introduction to Software Testing
Design and Programming
Simplified Development Toolkit
Introducing ISTQB Agile Foundation Extending the ISTQB Program’s Support Further Presented by Rex Black, CTAL Copyright © 2014 ASTQB 1.
Chapter 11: Software Configuration Management
LESSON 01 Hands-on Training Execution
CS5123 Software Validation and Quality Assurance
Chapter # 6 Software Configuration Management
Software Configuration Management
Presentation transcript:

Software Engineering D7032E Teacher: Josef Hallberg

About me Josef Hallberg PhD in Media Technology Research interests: Smart homes E-health Gamification Room: A2588 Phone: 0920 49 31 77 Mail: josef.hallberg@ltu.se

Outline of this course Practical Software Engineering Software Architecture Quality Attributes Working with large software Tools-of-the-trade Best practices

Changes and Prerequisites On Changes and Prerequisites

Course information http://www.sm.luth.se/courses/d7032e https://fronter.com/ltu

I would like discussions I encourage you to ask questions I will try to prepare questions to discuss Beehive discussions 3-4 people Learn from each other

Software development lifecycle

Aims of this course To turn you into capable software engineers Understand and able to design good software architectures Able to work with large software projects Able to work in large scale development teams Able to maintain high standard/quality of code Understand the importance of software engineering principles

Design

Design – Software Architecture Module structures Responsibilities of each module? What access to other software elements? Dependencies? Relationships?

Design – Software Architecture Component-and-connector structures Major executing components and interaction at runtime? Major shared data stores? Progress through the system? What can run in parallel? Dynamic behavior? Changes at runtime?

Design – Software Architecture Allocation structures What processor does elements execute on? In what directories or files are things stored? What software elements are assigned to which team?

Discussion points What aspects should be considered when designing a software architecture? What is the role of a software architect? Why is software architecture important?

Quality Software, On Time, and Within Budget

Why is software architecture important? Will inhibit or enable driving quality attributes Allows management of change as it evolves Early prediction of a system’s qualities Enhance communication among stakeholders Fundamental design decisions Constraints on subsequent implementation Dictates the structure of an organization Basis for evolutionary prototyping

Why is software architecture important? Allows reasoning about cost and schedule Transferable, reusable model that form the heart of a product line Assembly of components, rather than simply on their creations Channels the creativity of developers, reducing design and system complexity Foundation for training a new team member

Implementation

Implementation Understanding a design Version management Configuration management Error handling Coding / Debugging / Testing Documentation

Configuration Management important? Why is Versioning / Configuration Management important?

Software Configuration Management (SCM) Changes that are made to the requirements drive the design Design changes affect the code

Motivation What if a fully tested program doesn’t work? What if a difficult bug that was fixed reappears?

Without control Simultaneous updates Shared code Common code Versions Problems Leads to wasting an enormous amount of time

Control the system To answer the questions What is my current software configuration? What is its status? How do I control changes to my configuration? What changes have been made to the software? Do anyone else’s changes affect my software? What tests go together with this version?

Configuration Management Overview Initial development Establish / Update Baseline Validate Baseline Baseline Changes Requirements / Design / Use Authorize change Implement change Validate change Approve change

Change Request Form

Configuration Control Only one official copy of the code Baseline Not the same as version management Changes to the baseline must be approved

The version confusion “The user-interface crashes when I press this button” “But you told me you added this feature… I don’t see it” “There is an interface mismatch between these components”

Versioning Revisions Branches Merge Trunk (subversion) = Master (Git) saved changes Branches the main projects is branched to enable simultaneous development Merge a point where branches are merged to form a new baseline Trunk (subversion) = Master (Git) The main branch of the project Baseline = Labels = Tags An approved version for all to work on Checkout, Commit, Conflict - Resolve, Delta compression (only retain the differences between successive versions of files), Repository where the current historical data is stored, working copy (local copy)

Versioning In some cases: Odd-numbered versions for development releases Version 1.0 as a milestone major.minor[.build[.revision]] Or major.minor[.maintenance[.build]]

Tools Versioning / Change management tools Bug tracking CVS Subversion Git Bug tracking Bugzilla Mantis Redmine

Testing

Testing Understanding and testing use-cases Writing automated test-cases White box / Black box / Grey box testing Regression / Integrated / Test driven / Unit testing

Assignments Made to reflect the content Understand a design and implications of design choices Identify and understand design-patterns Identify stakeholders and requirements Design a feature according to requirements Implement a feature according to a design Version control Create test-cases and verify functionality Document code

Assignments A0: Groups of 2-3 people A0: Select a GitHub project to work on > 200 forks Automated test suite Something that inspires you Make sure there is a feature/change request you can implement A1: Reverse engineer A2: Identify design patterns A3: Implement Change/Feature request A4: Test and deploy A5: Presentation and demo A6: Home Exam

Examination Assignments: Pass or Fail Home Exam: Fail, 3, 4, 5 Do not cheat Always reference/cite source material Collaboration is fine, but provide your own answers

Mail filtering I will use D7032E in the subject, please do the same For A0, please add the email of all members in the TO or CC fields. Make sure your group number or name is in the subject. I reply to this email with my feedback

Privacy Can I add your results to the webpage? Can I put the first part of your email on the webpage (without the @something.xx)? It saves a little confusion / time for me.

Questions?

Find yourself a group Exchange contact information Start on Assignment 0 Register on the course Notify me if you can’t find a group