Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

49
Software Software Engineering Engineering Fundamentals Fundamentals Svetlin Nakov Svetlin Nakov National Academy for National Academy for Software Development Software Development academy.devbg.org
  • date post

    21-Oct-2014
  • Category

    Documents

  • view

    256
  • download

    1

description

 

Transcript of Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Page 1: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software EngineeringSoftware EngineeringFundamentalsFundamentals

Svetlin NakovSvetlin NakovNational Academy for Software National Academy for Software DevelopmentDevelopment

academy.devbg.org

Page 2: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

AgendaAgendaAgendaAgenda

1.1. Software engineering overviewSoftware engineering overview• RequirementsRequirements

• DesignDesign

• ConstructionConstruction

• TestingTesting

• Project managementProject management

2.2. Development methodologies overviewDevelopment methodologies overview• The Waterfall development processThe Waterfall development process

• Heavyweight methodologiesHeavyweight methodologies

• Agile methodologies and XPAgile methodologies and XP

1.1. Software engineering overviewSoftware engineering overview• RequirementsRequirements

• DesignDesign

• ConstructionConstruction

• TestingTesting

• Project managementProject management

2.2. Development methodologies overviewDevelopment methodologies overview• The Waterfall development processThe Waterfall development process

• Heavyweight methodologiesHeavyweight methodologies

• Agile methodologies and XPAgile methodologies and XP

Page 3: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

About The SpeakerAbout The SpeakerAbout The SpeakerAbout The Speaker

• Svetlin NakovSvetlin Nakov

• Founder and Chairman of BASDFounder and Chairman of BASD

• Director training and consulting Director training and consulting activities, National Academy for activities, National Academy for Software Development (NASD)Software Development (NASD)

• 15 15 years of developer experienceyears of developer experience

• 8 8 year as a professional software year as a professional software engineer, trainer and consultantengineer, trainer and consultant

• Author of 4 books, 20 articles, and Author of 4 books, 20 articles, and 50 seminar lectures50 seminar lectures

• Lecturer in Sofia University and NBULecturer in Sofia University and NBU

• Svetlin NakovSvetlin Nakov

• Founder and Chairman of BASDFounder and Chairman of BASD

• Director training and consulting Director training and consulting activities, National Academy for activities, National Academy for Software Development (NASD)Software Development (NASD)

• 15 15 years of developer experienceyears of developer experience

• 8 8 year as a professional software year as a professional software engineer, trainer and consultantengineer, trainer and consultant

• Author of 4 books, 20 articles, and Author of 4 books, 20 articles, and 50 seminar lectures50 seminar lectures

• Lecturer in Sofia University and NBULecturer in Sofia University and NBU

Page 4: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software EngineeringSoftware EngineeringRequirements, Design, Requirements, Design, Construction, TestingConstruction, Testing

Page 5: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

What is Software What is Software Engineering?Engineering?What is Software What is Software Engineering?Engineering?

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

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

Definition by IEEEDefinition by IEEEDefinition by IEEEDefinition by IEEE

Page 6: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software EngineeringSoftware EngineeringSoftware EngineeringSoftware Engineering

• Software engineering is:Software engineering is:

• An engineering discipline that provides An engineering discipline that provides knowledge, tools, and methods for:knowledge, tools, and methods for:

• Defining software requirementsDefining software requirements

• Performing software designPerforming software design

• Software constructionSoftware construction

• Software testingSoftware testing

• Software maintenance tasksSoftware maintenance tasks

• Software project managementSoftware project management

• Software engineering is:Software engineering is:

• An engineering discipline that provides An engineering discipline that provides knowledge, tools, and methods for:knowledge, tools, and methods for:

• Defining software requirementsDefining software requirements

• Performing software designPerforming software design

• Software constructionSoftware construction

• Software testingSoftware testing

• Software maintenance tasksSoftware maintenance tasks

• Software project managementSoftware project management

Page 7: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Development Software Development ActivitiesActivities

• Software development always includes Software development always includes the following activities (to some extent)the following activities (to some extent)::

• Requirements analysisRequirements analysis

• DesignDesign

• ConstructionConstruction

• Testing (sometimes)Testing (sometimes)

• These activities do not follow strictly one These activities do not follow strictly one after another!after another!

• Often overlap and interactOften overlap and interact

Software Software Project Project

ManagementManagement

Software Software Project Project

ManagementManagement

Page 8: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software RequirementsSoftware RequirementsFunctional, Non-functional Functional, Non-functional

Requirements, SRSRequirements, SRS

Page 9: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software RequirementsSoftware Requirements

• Software requirementsSoftware requirements define the define the functionality of the systemfunctionality of the system

• Answer the question "what?", not Answer the question "what?", not "how?""how?"

• Define constraints on the systemDefine constraints on the system

• Two kinds of requirementsTwo kinds of requirements

• FunctionalFunctional requirements requirements

• Non-functionalNon-functional requirements requirements

Page 10: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Requirements AnalysisRequirements Analysis

• Requirements analysisRequirements analysis starts from a starts from a vision about the systemvision about the system

• Customers don't know what they need!Customers don't know what they need!

• Requirements come roughly and are Requirements come roughly and are specified and extended iterativelyspecified and extended iteratively

• PrototypingPrototyping is often used, especially for is often used, especially for the user interfacethe user interface

• The outcome is the Software The outcome is the Software Requirements Specification (SRS)Requirements Specification (SRS)

Page 11: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Requirements Software Requirements Specification (SRS)Specification (SRS)

• The The Software Requirements Software Requirements Specification (SRS)Specification (SRS) is a formal is a formal requirements documentrequirements document

• It describes in details:It describes in details:

• Functional requirementsFunctional requirements

• Business processesBusiness processes

• Actors and use-casesActors and use-cases

• Non-functional requirementsNon-functional requirements

• E.g. performance, scalability, etc.E.g. performance, scalability, etc.

Page 12: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software RequirementsSoftware Requirements

• It is always hard to describe and It is always hard to describe and document the requirements in document the requirements in comprehensive and not ambiguous waycomprehensive and not ambiguous way

• Good requirements save time and moneyGood requirements save time and money

• Requirements always change during the Requirements always change during the project!project!

• Good software requirements Good software requirements specification reduces the changesspecification reduces the changes

• Prototypes significantly reduce changesPrototypes significantly reduce changes

Page 13: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Requirements Software Requirements Specification and UI Specification and UI

Prototype – ExamplesPrototype – Examples

Page 14: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Architecture Software Architecture and Software Designand Software Design

Page 15: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Architecture and Software Architecture and Software DesignSoftware Design

• Software designSoftware design is a technical is a technical description about how the system will description about how the system will implement the requirementsimplement the requirements

• The The system architecturesystem architecture describesdescribes::

• How the system will be decomposed How the system will be decomposed into subsystems (modules)into subsystems (modules)

• Responsibilities of each moduleResponsibilities of each module

• Interaction between modulesInteraction between modules

• Platforms and technologiesPlatforms and technologies

Page 16: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

System Architecture System Architecture Diagram – ExampleDiagram – ExampleSystem Architecture System Architecture Diagram – ExampleDiagram – Example

Page 17: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software DesignSoftware Design

• Detailed DesignDetailed Design

• Describes the internal module structureDescribes the internal module structure

• Interfaces, data design, process designInterfaces, data design, process design

• Object-Oriented DesignObject-Oriented Design

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

• Internal Class DesignInternal Class Design

• Methods, responsibilities, algorithms and Methods, responsibilities, algorithms and interactions between theminteractions between them

Page 18: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Design Document Software Design Document (SDD)(SDD)Software Design Document Software Design Document (SDD)(SDD)

• The The Software Design Document (SDD)Software Design Document (SDD) is is a formal description of the architecture a formal description of the architecture and design of the systemand design of the system

• It contains:It contains:• Architecture designArchitecture design• Modules and their interaction (diagram)Modules and their interaction (diagram)

• For each moduleFor each module• Process design (diagrams)Process design (diagrams)

• Data design (E/R diagram)Data design (E/R diagram)

• Interfaces design (class diagram)Interfaces design (class diagram)

• The The Software Design Document (SDD)Software Design Document (SDD) is is a formal description of the architecture a formal description of the architecture and design of the systemand design of the system

• It contains:It contains:• Architecture designArchitecture design• Modules and their interaction (diagram)Modules and their interaction (diagram)

• For each moduleFor each module• Process design (diagrams)Process design (diagrams)

• Data design (E/R diagram)Data design (E/R diagram)

• Interfaces design (class diagram)Interfaces design (class diagram)

Page 19: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Design Software Design Document – ExampleDocument – Example

Page 20: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software ConstructionSoftware ConstructionImplementation, Unit Testing, Implementation, Unit Testing,

Debugging, IntegrationDebugging, Integration

Page 21: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software ConstructionSoftware ConstructionSoftware ConstructionSoftware Construction

• During the During the software constructionsoftware construction phase phase developers create the softwaredevelopers create the software

• Sometimes called Sometimes called implementation implementation phasephase

• It includes:It includes:

• Internal method designInternal method design

• Writing codeWriting code

• Writing unit tests (sometimes)Writing unit tests (sometimes)

• Testing and debuggingTesting and debugging

• IntegrationIntegration

• During the During the software constructionsoftware construction phase phase developers create the softwaredevelopers create the software

• Sometimes called Sometimes called implementation implementation phasephase

• It includes:It includes:

• Internal method designInternal method design

• Writing codeWriting code

• Writing unit tests (sometimes)Writing unit tests (sometimes)

• Testing and debuggingTesting and debugging

• IntegrationIntegration

Page 22: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Writing the CodeWriting the Code

• CodingCoding is the process of writing the is the process of writing the programming code (the source code)programming code (the source code)

• The code strictly follows the designThe code strictly follows the design

• Developers perform Developers perform internal method internal method designdesign as part of coding as part of coding

• The The source codesource code is the output of the is the output of the software construction processsoftware construction process

• Written by developersWritten by developers

• Can include unit testsCan include unit tests

Page 23: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Testing the CodeTesting the Code

• TestingTesting checks whether the developed checks whether the developed software conforms to the requirementssoftware conforms to the requirements

• Aims to identify defects (bugs)Aims to identify defects (bugs)

• Developers test the code after write itDevelopers test the code after write it

• At least run it to see the resultsAt least run it to see the results

• Unit testingUnit testing is even better is even better

• Units tests can be repeated many timesUnits tests can be repeated many times

• System testing is done by QA engineersSystem testing is done by QA engineers

• Unit testing is done by developersUnit testing is done by developers

Page 24: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

DebuggingDebugging

• DebuggingDebugging aims to find the source of aims to find the source of already identified defect and to fix italready identified defect and to fix it

• Performed by developersPerformed by developers

• Steps in debugging:Steps in debugging:

• Find the defect in the codeFind the defect in the code

• Identify the source of the problemIdentify the source of the problem

• Identify the exact place in code causing itIdentify the exact place in code causing it

• Fix the defectFix the defect

• Test to check if the fix is correctTest to check if the fix is correct

Page 25: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

IntegrationIntegration

• IntegrationIntegration is putting all pieces together is putting all pieces together

• Compile, run and deploy the modules as Compile, run and deploy the modules as single systemsingle system

• Test to identify defectsTest to identify defects

• Integration strategiesIntegration strategies

• Big bang, top-down and bottom-upBig bang, top-down and bottom-up

• Continuous integrationContinuous integration

Page 26: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Coding != Software Coding != Software EngineeringEngineering

• Inexperienced developers consider Inexperienced developers consider coding the core of developmentcoding the core of development

• In most projects coding is only 20% of In most projects coding is only 20% of the project activities!the project activities!

• The important decisions are taken during The important decisions are taken during the requirements analysis and designthe requirements analysis and design

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

• Software engineering is not just coding!Software engineering is not just coding!

• ProgrammerProgrammer != != software engineersoftware engineer

Page 27: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Verification Software Verification and Testingand Testing

Page 28: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software VerificationSoftware Verification

• What is What is software verificationsoftware verification??

• It checks whether the developed software It checks whether the developed software conforms to the requirementsconforms to the requirements

• Performed by the Software Quality Performed by the Software Quality Assurance Engineers (QA)Assurance Engineers (QA)

• Two approaches:Two approaches:

• Formal Formal reviewsreviews and and inspectionsinspections

• Different kinds of Different kinds of testingtesting

• Cannot certify absence of defects!Cannot certify absence of defects!

• Can only decrease their ratesCan only decrease their rates

Page 29: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software TestingSoftware Testing

• TestingTesting checks whether the developed checks whether the developed software conforms to the requirementssoftware conforms to the requirements

• Testing aims to find defects (bugs)Testing aims to find defects (bugs)

• Black-box Black-box andand white-box white-box teststests

• Unit tests, integration tests, system tests, Unit tests, integration tests, system tests, acceptance testsacceptance tests

• Stress tests, load tests, regression testsStress tests, load tests, regression tests

• Tester engineers can use automated test Tester engineers can use automated test tools to record and execute teststools to record and execute tests

Page 30: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Testing ProcessSoftware Testing ProcessSoftware Testing ProcessSoftware Testing Process

• Test planningTest planning

• Establish test strategy and test planEstablish test strategy and test plan

• During requirements and design phasesDuring requirements and design phases

• Test developmentTest development

• Test procedures, test scenarios, test Test procedures, test scenarios, test cases, test scriptscases, test scripts

• Test executionTest execution

• Test reportingTest reporting

• Retesting the defectsRetesting the defects

• Test planningTest planning

• Establish test strategy and test planEstablish test strategy and test plan

• During requirements and design phasesDuring requirements and design phases

• Test developmentTest development

• Test procedures, test scenarios, test Test procedures, test scenarios, test cases, test scriptscases, test scripts

• Test executionTest execution

• Test reportingTest reporting

• Retesting the defectsRetesting the defects

Page 31: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Test Plan and Test CasesTest Plan and Test CasesTest Plan and Test CasesTest Plan and Test Cases

• The The test plantest plan is a formal document that is a formal document that describes how tests will be performeddescribes how tests will be performed

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

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

• Test scenarios and test casesTest scenarios and test cases

• Test scenariosTest scenarios – stories to be tested – stories to be tested

• Test casesTest cases – tests of single function – tests of single function

• The The test plantest plan is a formal document that is a formal document that describes how tests will be performeddescribes how tests will be performed

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

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

• Test scenarios and test casesTest scenarios and test cases

• Test scenariosTest scenarios – stories to be tested – stories to be tested

• Test casesTest cases – tests of single function – tests of single function

Page 32: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Test Plans and Test Test Plans and Test Cases – ExampleCases – Example

Page 33: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Project Software Project ManagementManagement

Page 34: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

What is Project What is Project Management?Management?What is Project What is Project Management?Management?

• Project managementProject management is the discipline of is the discipline of organizing and managing resources in organizing and managing resources in order to successfully complete a projectorder to successfully complete a project

• Successfully means within defined Successfully means within defined scope, quality, time and cost constraintsscope, quality, time and cost constraints

• Project constraints:Project constraints:

• Project managementProject management is the discipline of is the discipline of organizing and managing resources in organizing and managing resources in order to successfully complete a projectorder to successfully complete a project

• Successfully means within defined Successfully means within defined scope, quality, time and cost constraintsscope, quality, time and cost constraints

• Project constraints:Project constraints: Scope

Time

Cost

Quality

Project Success

Page 35: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

What is Software Project What is Software Project Management?Management?What is Software Project What is Software Project Management?Management?

• Software project managementSoftware project management

• Management discipline about planning, Management discipline about planning, monitoring and controlling software monitoring and controlling software projectsprojects

• Project Project pplanninglanning

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

• Project Project mmonitoring and onitoring and ccontrolontrol

• KKeep the team up to date on the project's eep the team up to date on the project's progressprogress and handle problemsand handle problems

• Software project managementSoftware project management

• Management discipline about planning, Management discipline about planning, monitoring and controlling software monitoring and controlling software projectsprojects

• Project Project pplanninglanning

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

• Project Project mmonitoring and onitoring and ccontrolontrol

• KKeep the team up to date on the project's eep the team up to date on the project's progressprogress and handle problemsand handle problems

Page 36: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

What is Project Plan?What is Project Plan?What is Project Plan?What is Project Plan?

• The The project planproject plan is a document that is a document that describes how the work on the project describes how the work on the project will be organizedwill be organized

• Contains tasks, resources, schedule, Contains tasks, resources, schedule, milestones, etc.milestones, etc.

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

• Project management tools simplify Project management tools simplify creating and monitoring project planscreating and monitoring project plans

• The The project planproject plan is a document that is a document that describes how the work on the project describes how the work on the project will be organizedwill be organized

• Contains tasks, resources, schedule, Contains tasks, resources, schedule, milestones, etc.milestones, etc.

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

• Project management tools simplify Project management tools simplify creating and monitoring project planscreating and monitoring project plans

Page 37: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Project Plan – ExampleProject Plan – ExampleProject Plan – ExampleProject Plan – Example

Page 38: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Development Development MethodologiesMethodologies

Page 39: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

What is a Development What is a Development Methodology?Methodology?What is a Development What is a Development Methodology?Methodology?

• A A development methodologydevelopment methodology is a set of is a set of practices and procedures for creating practices and procedures for creating softwaresoftware

• A set of rules that developers have to A set of rules that developers have to followfollow

• A set of conventions the organization A set of conventions the organization decides to followdecides to follow

• A systematical, engineering approach for A systematical, engineering approach for organizing software projectsorganizing software projects

• A A development methodologydevelopment methodology is a set of is a set of practices and procedures for creating practices and procedures for creating softwaresoftware

• A set of rules that developers have to A set of rules that developers have to followfollow

• A set of conventions the organization A set of conventions the organization decides to followdecides to follow

• A systematical, engineering approach for A systematical, engineering approach for organizing software projectsorganizing software projects

Page 40: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Development MethodologiesDevelopment MethodologiesDevelopment MethodologiesDevelopment Methodologies

• The "Waterfall" ProcessThe "Waterfall" Process

• Old-fashioned, not used todayOld-fashioned, not used today

• Rational Unified Process (RUP)Rational Unified Process (RUP)

• Very formal, lots of documentationVery formal, lots of documentation

• Microsoft Solutions Framework (MSF)Microsoft Solutions Framework (MSF)

• Formal heavyweight approachFormal heavyweight approach

• Agile Development ProcessesAgile Development Processes

• E.g. Extreme ProgrammingE.g. Extreme Programming

• The "Waterfall" ProcessThe "Waterfall" Process

• Old-fashioned, not used todayOld-fashioned, not used today

• Rational Unified Process (RUP)Rational Unified Process (RUP)

• Very formal, lots of documentationVery formal, lots of documentation

• Microsoft Solutions Framework (MSF)Microsoft Solutions Framework (MSF)

• Formal heavyweight approachFormal heavyweight approach

• Agile Development ProcessesAgile Development Processes

• E.g. Extreme ProgrammingE.g. Extreme Programming

Page 41: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

The Waterfall Development The Waterfall Development ProcessProcess

The Waterfall Development The Waterfall Development ProcessProcess

Page 42: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

The Waterfall ProcessThe Waterfall ProcessThe Waterfall ProcessThe Waterfall Process

• The waterfall development process:The waterfall development process:• The waterfall development process:The waterfall development process:

SoftwareRequirements

SoftwareDesign

Implementation(Coding)

Verification(Testing)

Operation(Maintenance)

Page 43: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Requirements

SystemRequirements

Formal MethodologiesFormal MethodologiesFormal MethodologiesFormal Methodologies

• Formal methodologies are heavyweight!Formal methodologies are heavyweight!• Formal methodologies are heavyweight!Formal methodologies are heavyweight!

SoftwareRequirements

Analysis

Coding

Testing

Operations

DesignAnalysis

DetailedDesign

PreliminaryDesign

Document

UI Design Document Test

Plan

PreliminaryDesignSoftware

RequirementsSpecification

Prelim.Revie

w

ProgramDesign

Design Review

OperatingInstructions

Coding

Integration

Testing

Usage

Code Review

Lots of documents,Lots of documents,diagrams, etc.diagrams, etc.

Lots of documents,Lots of documents,diagrams, etc.diagrams, etc.

FinalDesign

Page 44: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Agile DevelopmentAgile DevelopmentAgile DevelopmentAgile Development

Page 45: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

The Agile ManifestoThe Agile ManifestoThe Agile ManifestoThe Agile Manifesto

““Our highest priority is to satisfy the Our highest priority is to satisfy the

customer through early and continuouscustomer through early and continuous

delivery of valuable software“delivery of valuable software“

Manifesto for Manifesto for AgileAgile

““Our highest priority is to satisfy the Our highest priority is to satisfy the

customer through early and continuouscustomer through early and continuous

delivery of valuable software“delivery of valuable software“

Manifesto for Manifesto for AgileAgile

Page 46: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

• IncrementalIncremental

• Working softwareWorking software over comprehensive over comprehensive documentationdocumentation

• CooperationCooperation

• Customer collaborationCustomer collaboration over contract over contract negotiationnegotiation

• StraightforwardStraightforward

• Individuals and interactionsIndividuals and interactions over processes over processes and toolsand tools

• AdaptiveAdaptive

• Responding to changeResponding to change over following a plan over following a plan

• IncrementalIncremental

• Working softwareWorking software over comprehensive over comprehensive documentationdocumentation

• CooperationCooperation

• Customer collaborationCustomer collaboration over contract over contract negotiationnegotiation

• StraightforwardStraightforward

• Individuals and interactionsIndividuals and interactions over processes over processes and toolsand tools

• AdaptiveAdaptive

• Responding to changeResponding to change over following a plan over following a plan

The Agile SpiritThe Agile SpiritThe Agile SpiritThe Agile Spirit

Page 47: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Agile MethodologiesAgile MethodologiesAgile MethodologiesAgile Methodologies

• eXtreme Programming (XP)eXtreme Programming (XP)

• ScrumScrum

• Crystal family of methodologiesCrystal family of methodologies

• Feature-Driven Development (FDD)Feature-Driven Development (FDD)

• Adaptive Software Development (ASD)Adaptive Software Development (ASD)

• Dynamic System Development Model Dynamic System Development Model (DSDM)(DSDM)

• Agile Unified Process (AUP)Agile Unified Process (AUP)

• eXtreme Programming (XP)eXtreme Programming (XP)

• ScrumScrum

• Crystal family of methodologiesCrystal family of methodologies

• Feature-Driven Development (FDD)Feature-Driven Development (FDD)

• Adaptive Software Development (ASD)Adaptive Software Development (ASD)

• Dynamic System Development Model Dynamic System Development Model (DSDM)(DSDM)

• Agile Unified Process (AUP)Agile Unified Process (AUP)

Page 48: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Extreme Programming:Extreme Programming:The 12 Key PracticesThe 12 Key PracticesExtreme Programming:Extreme Programming:The 12 Key PracticesThe 12 Key Practices

• The Planning GameThe Planning Game

• Small ReleasesSmall Releases

• MetaphorMetaphor

• Simple DesignSimple Design

• Test-Driven DevelopmentTest-Driven Development

• RefactoringRefactoring

• Pair ProgrammingPair Programming

• Collective OwnershipCollective Ownership

• Continuous IntegrationContinuous Integration

• 40-Hour Workweek40-Hour Workweek

• On-site CustomerOn-site Customer

• Coding StandardsCoding Standards

• The Planning GameThe Planning Game

• Small ReleasesSmall Releases

• MetaphorMetaphor

• Simple DesignSimple Design

• Test-Driven DevelopmentTest-Driven Development

• RefactoringRefactoring

• Pair ProgrammingPair Programming

• Collective OwnershipCollective Ownership

• Continuous IntegrationContinuous Integration

• 40-Hour Workweek40-Hour Workweek

• On-site CustomerOn-site Customer

• Coding StandardsCoding Standards

Page 49: Softwareengineeringfundamentalssvetlinnakov 1233295163644547-1

Software Engineering Software Engineering FundamentalsFundamentalsSoftware Engineering Software Engineering FundamentalsFundamentals

Questions?Questions?Questions?Questions?