SlideShare a Scribd company logo
Software EngineeringA Greasemonkey introductionNikola Stjelja, Senior Software Engineer
Engineering
EngineeringEngineering is the discipline, art and profession of acquiring and applying technical, scientific, and mathematical knowledge to design and implement materials, structures, machines, devices, systems, and processes that safely realize a desired objective or invention.Wikipedia - http://en.wikipedia.org/wiki/Engineering
Software Engineering
Software EngineeringSoftware engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.Wikipedia - http://en.wikipedia.org/wiki/Software_engineering
Software Engineer
Software EngineerA practicant of systematic, disciplined and quantifiable approaches to the development and maintenance of software. A skilled craftsman practicing and training on the tools an techniques used to development and maintenance of software.A teacher of less skilled and experienced engineers in practices of software engineering.
Software Development is just not craft
Software Development is just not craftEvery day software developers practice in the tools and techniques needed to develop software.Every day their experience and skill increases.Many software systems are developed through sheer developer skill and experience. Mays such systems sooner or later come to problems which can be solved by applying systematic, disciplined and controlled practices to their development.
Software Engineering Key ElementsRepeatability – everything must be repeatable by everyone.Accountability – at any time it must be possible to se who has done what and why.Planning – every key element of the development and maintenance of a software product must be planned.Tracking – every element of a software product must be tracked through its life – cycle.Building– a software product must be built as optimally as possible.
Software development process
Software development processSoftware development process is the agreed and by all involved parties understood process of planning, implementing, testing and deploying of a software product.Software development process is the tangible embodiment of all the software engineering key elements: repeatability, accountability, planning, trackingand building.
Software development process familiesSoftware development processes are organized into phases.Each phase is dominated by one or several key activities performed during its course.There are two major software development families : sequential and iterative.A software development process can have a higher or lower degree of formality.
Iterative development process SCRUM Less formal, iterative software development and maintenance process.
Each iteration is covers all software development activities : requirements, design, coding , testing and deployment.
  The software development process is done in time boxed iterations where requirements are fixed.
  The product owner – client can change requirements between iterations.
  SCRUM encourages self organizing cross functional teams.Sequential development processWaterfallFormal, structured development process with the ‘Big Design up-front’ approach.Each phase is dedicated to specific sets of software development activities: requirements, design, construction, testing and deployment.Hard, but not impossible to change requirements in latter phases.Each phase is marked by a signed approval of the deliverables produced in the phase.
Requirements
RequirementsA requirement is a statement of the scope, behavior and limits a of specific software system characteristic or function.There are two types of requirements :functional that deal with the functionality expected from the system by the clientsnon-functional that deal with all the other characterizes a software product must haveRequirements are written in the System Requirements Specification document
Software Architecture
Software ArchitectureSoftware architecture is the process of defining a structured solution that meets all technical and operational requirements while optimizing common quality attributes as performance, security and manageability.Software architecture is the highest level breakdown of system into parts and processes. Software architecture is the bridge between requirements and the technical design and solution of a product.
Detailed Design
Detailed DesignDetailed design of a software product is the blueprint definition of its smallest components.There are two ways of blueprinting a module:Public interface specificationon which defines only the functions or objects which may be used by components integrating with the module being designed.Comprehensive structure definitionwhich defines in detail all the nuts and bolts (e.g. public and private functions and objects) of the module being designed).After completion the detailed design is passed to the development team to be implemented.
Software Construction
Software ConstructionSoftware construction is the process of writing, linking and compiling of a software product.Software  construction is the meeting ground between engineering and crafting.There a two key characteristics of properly constructed software product:The product is constructed by following the appropriate  patterns  associated with the product type being build.The product does what is supposed to do with a reasonable level of quality, security and performance.
Software Testing
Software TestingSoftware testing is the process of proving that the implemented software product meets its requirements within the assigned quality parameters.A software product can be tested in multiple ways:Unit-testing.Functional testing.Integration testing.Security testing.Performance testing.Acceptance testing.Software testing must be automated and carried out as soon as possible and as often as possible for the greatest results.
Software Deployment
Software DeploymentSoftware deployment is a process covering a set of activities related to:Releasing of a software product version.Installation and activation of a product at a client site.Deactivation of a product at a client site.Updating of a product at the client site.Uninstallation of a product at the client site.Software deployment activities must be automated and streamlined as much as possible.
Software Maintenance
Software MaintenanceSoftware maintenance is the process of tracking and applying controlled changes to a released software product with the goal of fixing defects, improving product quality attributes and adapting the product to a changed environment.Software maintenance deals with issues arisen from the development on a production system and the conflicting needs of functional and operational stability against entropy and user needs.
Software configuration managementSoftware configuration management (SCM) is the discipline of evaluating, tracking, controlling, naming and versioning of changes made to Configuration Items (CI) through the life-cycle of a software product.A Configuration Item is an artifact (document, image, source code, third-party library, tool) which is placed under configuration management control. Configuration Control Board (CCB) is the body assigned with the authority of enforcing the configuration control policies set in the Software Configuration Management plan.
SCM PlanThe Software Configuration Management Plan (SCM Plan) is an document that prescribes the policies and rules which must be followed when implementing configuration management on a software product.The SCM Plan covers the following sections:Scope of the configuration control.Project team organization and roles.Tools and policies use for product development and configuration control.Configuration Item scope and definition.Baseline definition and naming.Release definition and naming.Configuration Item and Configuration Item change request auditing.It is important to :tailor the SCM Plan to the type of product developed and the software organization culture,dissimenate the document to all involved parties as the baseline for each configuration managmentactivites.
Issue tracker
Issue trackerAnIssue Tracker is tool used to automated and help with the tediousness of Software Configuration Change management.An Issue Tracker tracks generally the three following types of issues (tickets etc.) :TaskDefectChange RequestAn Issue Tracker can also link up with a SCM Repository to better track associations with Issues and changes made to Configuration Items.Examples of issue trackers : Bugzilla, Mantis, Fogbugz, TFS etc.
SCM Repository

More Related Content

PPTX
1 se-introduction
PPTX
Ch 8 configuration management
DOCX
Swe notes
PPTX
Requirements engineering
PDF
SE2_Lec 22_Software Configuration Management
PPTX
Software engineer
PPTX
Agile software process
PDF
Introduction to Software Engineering
1 se-introduction
Ch 8 configuration management
Swe notes
Requirements engineering
SE2_Lec 22_Software Configuration Management
Software engineer
Agile software process
Introduction to Software Engineering

What's hot (19)

PPTX
Ch 1 the software quality assurance challange
PPTX
Software Process Models
PPTX
Ch2-Software Engineering 9
PPTX
Ch 2 what is software quality
PPTX
Ch 3 software quality factor
PPTX
Lecture 4
PPTX
Ch 9 traceability and verification
PPT
Introduction To Software Configuration Management
PPTX
Ch25-Software Engineering 9
PPT
Introduction to Software Engineering
PPTX
Process in Software Engineering/4'ps in Software Engineerin
PPT
2. Software process
PPT
Lect2 quality factor
PPTX
PPS
Software Development Life Cycle Testingtypes
PPTX
Ch 7 integrating quality activities in the projectlife cycle
PPTX
software product and its characteristics
PPTX
Ch24-Software Engineering 9
PPTX
Software Engineering
Ch 1 the software quality assurance challange
Software Process Models
Ch2-Software Engineering 9
Ch 2 what is software quality
Ch 3 software quality factor
Lecture 4
Ch 9 traceability and verification
Introduction To Software Configuration Management
Ch25-Software Engineering 9
Introduction to Software Engineering
Process in Software Engineering/4'ps in Software Engineerin
2. Software process
Lect2 quality factor
Software Development Life Cycle Testingtypes
Ch 7 integrating quality activities in the projectlife cycle
software product and its characteristics
Ch24-Software Engineering 9
Software Engineering
Ad

Similar to Sofware engineering (20)

PPTX
SE-Unit I.pptx
PDF
Software Engineering Overview
PPTX
SDLC comprises seven different stages: planning, analysis, design, developmen...
PDF
lecture01softwareengineering-151017024008-lva1-app6892.pdf
PPTX
CS8494 SOFTWARE ENGINEERING Unit-1
PPTX
SE_Sumerized.pptx nccccccccccmmmmmmmmmmmmmmmmmmmmmmmmmmmm
PDF
software engineering
PPTX
Elementary Probability theory Chapter 2.pptx
PPT
16346915.ppt
PPTX
software engineering basics and .definition
PPTX
20CS4103 SE UNIT 1-1.pptx software engineering
DOCX
Notes of Software engineering and Project Management
PPTX
Unit_I.pptx
PDF
Software engineering study materials
PDF
SE notes by k. adisesha
PPTX
Software Engineering
PDF
LESSON FOR SOFTWARE ENGINEERING BASED ON MODELS
PDF
Understanding the Software Development Life Cycle
PDF
ccs356-software-engineering-notes.pdf
DOCX
Software Engineering Evolution Software Paradigm
SE-Unit I.pptx
Software Engineering Overview
SDLC comprises seven different stages: planning, analysis, design, developmen...
lecture01softwareengineering-151017024008-lva1-app6892.pdf
CS8494 SOFTWARE ENGINEERING Unit-1
SE_Sumerized.pptx nccccccccccmmmmmmmmmmmmmmmmmmmmmmmmmmmm
software engineering
Elementary Probability theory Chapter 2.pptx
16346915.ppt
software engineering basics and .definition
20CS4103 SE UNIT 1-1.pptx software engineering
Notes of Software engineering and Project Management
Unit_I.pptx
Software engineering study materials
SE notes by k. adisesha
Software Engineering
LESSON FOR SOFTWARE ENGINEERING BASED ON MODELS
Understanding the Software Development Life Cycle
ccs356-software-engineering-notes.pdf
Software Engineering Evolution Software Paradigm
Ad

Recently uploaded (20)

PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Electronic commerce courselecture one. Pdf
PPT
Teaching material agriculture food technology
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Machine learning based COVID-19 study performance prediction
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
MYSQL Presentation for SQL database connectivity
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Approach and Philosophy of On baking technology
Building Integrated photovoltaic BIPV_UPV.pdf
Electronic commerce courselecture one. Pdf
Teaching material agriculture food technology
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Machine learning based COVID-19 study performance prediction
Encapsulation_ Review paper, used for researhc scholars
Advanced methodologies resolving dimensionality complications for autism neur...
Review of recent advances in non-invasive hemoglobin estimation
The Rise and Fall of 3GPP – Time for a Sabbatical?
MYSQL Presentation for SQL database connectivity
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Dropbox Q2 2025 Financial Results & Investor Presentation
Programs and apps: productivity, graphics, security and other tools
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
The AUB Centre for AI in Media Proposal.docx
20250228 LYD VKU AI Blended-Learning.pptx
Spectral efficient network and resource selection model in 5G networks
Approach and Philosophy of On baking technology

Sofware engineering

  • 1. Software EngineeringA Greasemonkey introductionNikola Stjelja, Senior Software Engineer
  • 3. EngineeringEngineering is the discipline, art and profession of acquiring and applying technical, scientific, and mathematical knowledge to design and implement materials, structures, machines, devices, systems, and processes that safely realize a desired objective or invention.Wikipedia - http://en.wikipedia.org/wiki/Engineering
  • 5. Software EngineeringSoftware engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.Wikipedia - http://en.wikipedia.org/wiki/Software_engineering
  • 7. Software EngineerA practicant of systematic, disciplined and quantifiable approaches to the development and maintenance of software. A skilled craftsman practicing and training on the tools an techniques used to development and maintenance of software.A teacher of less skilled and experienced engineers in practices of software engineering.
  • 8. Software Development is just not craft
  • 9. Software Development is just not craftEvery day software developers practice in the tools and techniques needed to develop software.Every day their experience and skill increases.Many software systems are developed through sheer developer skill and experience. Mays such systems sooner or later come to problems which can be solved by applying systematic, disciplined and controlled practices to their development.
  • 10. Software Engineering Key ElementsRepeatability – everything must be repeatable by everyone.Accountability – at any time it must be possible to se who has done what and why.Planning – every key element of the development and maintenance of a software product must be planned.Tracking – every element of a software product must be tracked through its life – cycle.Building– a software product must be built as optimally as possible.
  • 12. Software development processSoftware development process is the agreed and by all involved parties understood process of planning, implementing, testing and deploying of a software product.Software development process is the tangible embodiment of all the software engineering key elements: repeatability, accountability, planning, trackingand building.
  • 13. Software development process familiesSoftware development processes are organized into phases.Each phase is dominated by one or several key activities performed during its course.There are two major software development families : sequential and iterative.A software development process can have a higher or lower degree of formality.
  • 14. Iterative development process SCRUM Less formal, iterative software development and maintenance process.
  • 15. Each iteration is covers all software development activities : requirements, design, coding , testing and deployment.
  • 16. The software development process is done in time boxed iterations where requirements are fixed.
  • 17. The product owner – client can change requirements between iterations.
  • 18. SCRUM encourages self organizing cross functional teams.Sequential development processWaterfallFormal, structured development process with the ‘Big Design up-front’ approach.Each phase is dedicated to specific sets of software development activities: requirements, design, construction, testing and deployment.Hard, but not impossible to change requirements in latter phases.Each phase is marked by a signed approval of the deliverables produced in the phase.
  • 20. RequirementsA requirement is a statement of the scope, behavior and limits a of specific software system characteristic or function.There are two types of requirements :functional that deal with the functionality expected from the system by the clientsnon-functional that deal with all the other characterizes a software product must haveRequirements are written in the System Requirements Specification document
  • 22. Software ArchitectureSoftware architecture is the process of defining a structured solution that meets all technical and operational requirements while optimizing common quality attributes as performance, security and manageability.Software architecture is the highest level breakdown of system into parts and processes. Software architecture is the bridge between requirements and the technical design and solution of a product.
  • 24. Detailed DesignDetailed design of a software product is the blueprint definition of its smallest components.There are two ways of blueprinting a module:Public interface specificationon which defines only the functions or objects which may be used by components integrating with the module being designed.Comprehensive structure definitionwhich defines in detail all the nuts and bolts (e.g. public and private functions and objects) of the module being designed).After completion the detailed design is passed to the development team to be implemented.
  • 26. Software ConstructionSoftware construction is the process of writing, linking and compiling of a software product.Software construction is the meeting ground between engineering and crafting.There a two key characteristics of properly constructed software product:The product is constructed by following the appropriate patterns associated with the product type being build.The product does what is supposed to do with a reasonable level of quality, security and performance.
  • 28. Software TestingSoftware testing is the process of proving that the implemented software product meets its requirements within the assigned quality parameters.A software product can be tested in multiple ways:Unit-testing.Functional testing.Integration testing.Security testing.Performance testing.Acceptance testing.Software testing must be automated and carried out as soon as possible and as often as possible for the greatest results.
  • 30. Software DeploymentSoftware deployment is a process covering a set of activities related to:Releasing of a software product version.Installation and activation of a product at a client site.Deactivation of a product at a client site.Updating of a product at the client site.Uninstallation of a product at the client site.Software deployment activities must be automated and streamlined as much as possible.
  • 32. Software MaintenanceSoftware maintenance is the process of tracking and applying controlled changes to a released software product with the goal of fixing defects, improving product quality attributes and adapting the product to a changed environment.Software maintenance deals with issues arisen from the development on a production system and the conflicting needs of functional and operational stability against entropy and user needs.
  • 33. Software configuration managementSoftware configuration management (SCM) is the discipline of evaluating, tracking, controlling, naming and versioning of changes made to Configuration Items (CI) through the life-cycle of a software product.A Configuration Item is an artifact (document, image, source code, third-party library, tool) which is placed under configuration management control. Configuration Control Board (CCB) is the body assigned with the authority of enforcing the configuration control policies set in the Software Configuration Management plan.
  • 34. SCM PlanThe Software Configuration Management Plan (SCM Plan) is an document that prescribes the policies and rules which must be followed when implementing configuration management on a software product.The SCM Plan covers the following sections:Scope of the configuration control.Project team organization and roles.Tools and policies use for product development and configuration control.Configuration Item scope and definition.Baseline definition and naming.Release definition and naming.Configuration Item and Configuration Item change request auditing.It is important to :tailor the SCM Plan to the type of product developed and the software organization culture,dissimenate the document to all involved parties as the baseline for each configuration managmentactivites.
  • 36. Issue trackerAnIssue Tracker is tool used to automated and help with the tediousness of Software Configuration Change management.An Issue Tracker tracks generally the three following types of issues (tickets etc.) :TaskDefectChange RequestAn Issue Tracker can also link up with a SCM Repository to better track associations with Issues and changes made to Configuration Items.Examples of issue trackers : Bugzilla, Mantis, Fogbugz, TFS etc.
  • 38. SCM RepositoryA SCM Repository is a tool used to manage and track changes to the official Configuration Item library of a software product.Benefits offered by a SCM Repository tool:Multiple people can work on a same CI without risk of conflicting changes.Centralized place where the software product and associated items can be found.Historical tracking of every change made to CI and easy reverting to a previous change (revision) .Multiple development spikes can be carried at the same time and merged at will with ease.Two general types of SCM Repositories: centralized and distributed.SCM Repository examples: Subversion, CVS, Bazaar, Git, Mercurial, TFS.
  • 40. Software Engineering TeamSoftware engineers work in teams, without teams there would not be software.Three key characteristics a team member must have:Communication – to better express ideas and issues.Responsibility – to deliver what is promised or rise and issue if not.Time management – to know when and how long to do a task.Secondary characteristic a team member ought to have:Presentation – to sell in a formal manner key ideas and issues.Self – learning – to continuously learn new technologies and techniques.Leadership – to mediate and lead a team to deliver on time and on budget.