Practical Software Engineering Fundamentals

Practical Software Engineering Fundamentals Practical Software Engineering Fundamentals - Start

Added : 2016-04-24 Views :40K

Download Presentation

Practical Software Engineering Fundamentals




Download Presentation - The PPT/PDF document "Practical Software Engineering Fundament..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.



Presentations text content in Practical Software Engineering Fundamentals

Slide1

Practical Software Engineering Fundamentals

Software Development Practices and Methodologies

Svetlin Nakov

Telerik Corporation

www.telerik.com

Slide2

Agenda

Software engineering overviewRequirementsDesignConstructionTestingProject managementDevelopment methodologies overviewThe waterfall development processHeavyweight methodologiesAgile methodologies, SCRUM and XP

Slide3

Software Engineering

Requirements, Design, Construction, Testing

Slide4

What is Software Engineering?

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software

Definition by IEEE

Slide5

Software Engineering

Software engineering is:An engineering discipline that provides knowledge, tools, and methods for:Defining software requirementsPerforming software designSoftware constructionSoftware testingSoftware maintenance tasksSoftware project management

Slide6

Software Development Activities

Software development always includes the following activities (to some extent):Requirements analysisDesignConstructionTesting (sometimes)These activities do not follow strictly one after another (depends on the methodology)!Often overlap and interact

Software Project Management

Slide7

Software Requirements

Functional, Non-functional Requirements, SRS

Slide8

Software Requirements

Software requirements define the functionality of the systemAnswer the question "what?", not "how?"Define constraints on the systemTwo kinds of requirementsFunctional requirementsNon-functional requirements

Slide9

Requirements Analysis

Requirements analysis

starts from a vision about the system

Customers don't know what they need!

Requirements come roughly and are specified and extended iteratively

Prototyping

is often used, especially for the user interface

The outcome is the Software Requirements Specification (SRS)

Slide10

Software Requirements Specification (SRS)

The Software Requirements Specification (SRS) is a formal requirements documentIt describes in details:Functional requirementsBusiness processesActors and use-casesNon-functional requirementsE.g. performance, scalability, constraints, etc.

Slide11

Software Requirements

It is always hard to describe and document the requirements in comprehensive

way

Good requirements save time and money

Requirements always change during the project!

Good software requirements specification reduces the changes

Prototypes significantly reduce

changes

Agile methodologies are flexible to changes

Slide12

Software

Requirements Specifications (SRS) and UI Prototypes

Live Demo

Slide13

Software Architecture and Software Design

Slide14

Software Architecture and Software Design

Software design is a technical description (blueprints) about how the system will implement the requirementsThe system architecture describes:How the system will be decomposed into subsystems (modules)Responsibilities of each moduleInteraction between the modulesPlatforms and technologies

Slide15

System Architecture Diagram – Example

Slide16

Software Architecture Diagram – Example

16

Slide17

Software Design

Detailed Design

Describes the internal module structure

Interfaces, data design, process design

Object-Oriented Design

Describes the classes, their responsibilities, relationships, dependencies, and interactions

Internal Class Design

Methods,

responsibilities, algorithms and interactions between them

Slide18

Software Design Document (SDD)

The Software Design Document (SDD)Formal description of the architecture and design of the systemIt contains:Architectural designModules and their interaction (diagram)For each moduleProcess design (diagrams)Data design (E/R diagram)Interfaces design (class diagram)

Slide19

Software Design

Document

Live Demo

Slide20

Software Construction

Implementation, Unit Testing, Debugging, Integration

Slide21

Software Construction

During the software construction phase developers create the softwareSometimes called implementation phaseIt includes:Internal method designWriting the source codeWriting unit tests (sometimes)Testing and debuggingIntegration

Slide22

Writing the Code

Coding is the process of writing the programming code (the source code)The code strictly follows the designDevelopers perform internal method design as part of codingThe source code is the output of the software construction processWritten by developersCan include unit tests

Slide23

Testing the Code

Testing checks whether the developed software conforms to the requirementsAims to identify defects (bugs)Developers test the code after writing itAt least run it to see the resultsUnit testing is even betterUnits tests can be repeated many timesSystem testing is done by QA engineersUnit testing is done by developers

Slide24

Debugging

Debugging aims to find the source of already identified defect and to fix itPerformed by developersSteps in debugging:Find the defect in the codeIdentify the source of the problemIdentify the exact place in the code causing itFix the defectTest to check if the fix is working correctly

Slide25

Integration

Integration is putting all pieces togetherCompile, run and deploy the modules as single systemTest to identify defectsIntegration strategiesBig bang, top-down and bottom-upContinuous integration

Slide26

Coding != Software Engineering

Inexperienced developers consider coding the core of development

In most projects coding is only

20

% of the project activities!

The important decisions are taken during the requirements analysis and design

Documentation, testing, integration, maintenance, etc. are often disparaged

Software engineering is not just coding!

Programmer

!=

software engineer

Slide27

Software Verification and Testing

Slide28

Software Verification

What is software verification?It checks whether the developed software conforms to the requirementsPerformed by the Software Quality Assurance Engineers (QA engineers)Two approaches:Formal reviews and inspectionsDifferent kinds of testingCannot certify absence of defects!Can only decrease their rates

Slide29

Software Testing

Testing

checks whether the developed software conforms to the requirements

Testing aims to find defects (bugs)

Black-box

and

white-box

tests

Unit tests, integration tests, system tests, acceptance tests

Stress tests, load tests, regression tests

Tester engineers can use automated test tools

to record and execute tests

Slide30

Software Testing Process

Test planningEstablish test strategy and test planDuring requirements and design phasesTest developmentTest procedures, test scenarios, test cases, test scriptsTest executionTest reportingRetesting the defects

Slide31

Test Plan and Test Cases

The

test plan

is a formal document that describes how tests will be performed

List of test activities to be performed to ensure meeting the requirements

Features to be tested, testing approach, schedule, acceptance criteria

Test scenarios and test cases

Test scenarios

– stories to be tested

Test cases

– tests of single function

Slide32

Test Plans and Test Cases

Live Demo

Slide33

Software Project Management

Slide34

What is Project Management?

Project management is the discipline of organizing and managing work and resources in order to successfully complete a projectSuccessfully means within defined scope, quality, time and cost constraintsProject constraints:

Scope

Time

Cost

Quality

Slide35

What is Software Project Management?

Software project management

Management discipline about planning, monitoring and controlling software projects

Project planning

Identify the scope, estimate the work involved, and create a project schedule

Project monitoring and control

Keep the team up to date on the project's progress and

handle problems

Slide36

What is Project Plan?

The

project plan

is a document that describes how the work on the project will be organized

Contains tasks, resources, schedule, milestones, etc.

Tasks have start, end, assigned resources (team members), % complete, dependencies, nested tasks,

cost, etc

.

Project management tools simplify creating and monitoring project plans

Slide37

Project Plan – Example

Slide38

Development Methodologies

Waterfall, Extreme Programming, Scrum

Slide39

What is a Development Methodology?

A

development methodology

is a set of practices and procedures for

organizing the software development process

A set of rules that developers have to follow

A set of conventions the organization decides to follow

A systematical, engineering approach for organizing

and managing software

projects

Slide40

Development Methodologies

The "Waterfall" Process

Old-fashioned, not used today

Rational Unified Process (RUP)

Very formal, lots of documentation

Microsoft Solutions Framework (MSF)

Formal heavyweight approach

Agile Development

Processeses

E.g. Extreme

Programming (XP), SCRUM, etc.

Slide41

The Waterfall Development Process

Slide42

The Waterfall Process

Software

Requirements

Software

Design

Implementation

(Coding)

Verification

(Testing)

Operation

(Maintenance)

The waterfall development process:

Slide43

Requirements

SystemRequirements

Formal Methodologies

Formal methodologies are heavyweight!

SoftwareRequirements

Analysis

Coding

Testing

Operations

Design

Analysis

DetailedDesign

PreliminaryDesignDocument

UI Design Document

TestPlan

Preliminary

Design

Software

Requirements

Specification

Program

Design

Design Review

Operating

Instructions

Coding

Integration

Testing

Usage

Code Review

Final

Design

Set of documents,

diagrams, etc.

Prelim.

Review

Slide44

Agile Development

Slide45

The Agile Manifesto

“Our highest priority is to satisfy the customer through early and continuousdelivery of valuable software“

Manifesto for Agile

Slide46

IncrementalWorking software over comprehensive documentationCooperationCustomer collaboration over contract negotiationStraightforwardIndividuals and interactions over processes and toolsAdaptiveResponding to change over following a plan

The Agile Spirit

Slide47

Agile Methodologies

eXtreme Programming (XP)ScrumFeature-Driven Development (FDD)Crystal family of methodologiesAdaptive Software Development (ASD)Dynamic System Development Model (DSDM)Agile Unified Process (AUP)

Slide48

Extreme Programming:The 12 Key Practices

The Planning GameSmall ReleasesMetaphorSimple DesignTest-Driven DevelopmentRefactoringPair ProgrammingCollective OwnershipContinuous Integration40-Hour WorkweekOn-site CustomerCoding Standards

Slide49

Scrum

Scrum is an iterative incremental framework for managing complex projectsScrum roles:Scrum Master – maintains the Scrum processesProduct Owner – represents the stakeholders Team – a group of about 7 peopleThe team does the actual development: analysis, design, implementation, testing, etc.

49

Slide50

Scrum Terminology

SprintAn iteration in the Scrum developmentUsually few weeksProduct BacklogAll features that have to be developedSprint BacklogAll features planned for the current sprint

50

Slide51

The Scrum Process Framework

51

Slide52

Scrum Practices

Sprint Planning MeetingAt the beginning of the sprint cycleEstablish the Sprint backlogDaily Scrum stand-up meetingEach day during the sprint – project status from each team memberTimeboxed to 15 minutesSprint Review MeetingReview the work completed / not completed

52

Slide53

Software Engineering Fundamentals

Questions?

?

?

?

?

?

?

?

?

?

?

http://academy.telerik.com

Slide54

Slide55

Slide56

Slide57

Slide58


About DocSlides
DocSlides allows users to easily upload and share presentations, PDF documents, and images.Share your documents with the world , watch,share and upload any time you want. How can you benefit from using DocSlides? DocSlides consists documents from individuals and organizations on topics ranging from technology and business to travel, health, and education. Find and search for what interests you, and learn from people and more. You can also download DocSlides to read or reference later.
Youtube