e-Business - SE trends
Upcoming SlideShare
Loading in...5
×
 

e-Business - SE trends

on

  • 667 views

 

Statistics

Views

Total Views
667
Views on SlideShare
667
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

e-Business - SE trends e-Business - SE trends Presentation Transcript

  • DITF LDILietišķo datorsistēmu programmatūrasprofesora grupae-Business SolutionsBasic Trends of ModernSoftware Development
  • 2Hello Everyone!
  • 3• What is this all about?• Who are these people?• What will we learn?• What is todays topic?• Whats next?
  • 4What is this all about?
  • 5What is this all about?
  • 62 daysLectures + demoCovering everything you need to understandbasic trends of modern software development
  • 7Who are these people?
  • 8Vladimir KotovPhD student, Lecturer @ RTUJava Developer @ CitadeleTeacher @ javaguru.lvvladimir.kotov@gmail.comGit: https://github.com/rk13
  • 9What is todays topic?
  • 10Software Engineering and DevelopmentFAQ
  • 11Software Engineering FAQ● What is software?
  • 12Software Engineering FAQ● What is software?Computer programs and associated artifacts(e.g documentation).Software products may be developed for aparticular customer or may be developed for ageneral market.
  • 13Software Engineering FAQ● What is software engineering?
  • 14Software Engineering FAQ● What is software engineering?An engineering discipline concernedwith all aspects of software production.
  • 15Software Engineering FAQ● What is software engineering?An engineering discipline concernedwith all aspects of software production.Computer science is concerned withtheory and fundamentals; softwareengineering is concerned with thepracticalities of developing anddelivering useful software.
  • 16Software Engineering FAQ● What is a software process?
  • 17Software Engineering FAQ● What is a software process?A set of activities whose goal is thedevelopment or evolution of software.High-level activities of software specification,development, validation and evolution are partof all software processes.
  • 18Software Engineering FAQ● What is a software process model?A simplified representation of a softwareprocess, presented from a specific perspective.
  • 19Software Engineering FAQSoftware process models- The waterfall modelPlan-driven model. Separate and distinct phases of specification anddevelopment.- Incremental developmentSpecification, development and validation are interleaved. May be plan-driven oragile.- Reuse-oriented software engineeringThe system is assembled from existing components.In practice, most large systems are developed using a process thatincorporates elements from all of these models.
  • 20Software Engineering FAQ● What are software engineering methods?Structured approaches to softwaredevelopment which include system models,notations, rules, design advice and processguidance.
  • 21Software Engineering FAQWhat is software architecture?
  • 22Software Engineering FAQWhat is software architecture?● A software architecture is a description of how a softwaresystem is organized.● Architectural design decisions include decisions on thetype of application, the distribution of the system, thearchitectural styles to be used.● Shared understanding of a system design by the expertdevelopers on a project● Decisions developers wish they could get right early on● Decisions perceived as hard to change
  • 23http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
  • 24Software Engineering FAQEnterprise Application● Accounting software● Business intelligence● Business process management● Content management system (CMS)● Customer relationship management (CRM)● Enterprise resource planning (ERP)● ...
  • 25Software Engineering FAQEnterprise Application● Lots of long living data, accessed concurently● Multiple systems, dissonance in integrationtechnologies and data interpretation● Business “illogic”● Specific patterns
  • 26Trends of Software Engineering andSoftware Development
  • 27Trends of Software EngineeringI. Increasing complexity of software– business complexity– domain complexity– scale complexity– artificial complexity● Guided by requirements● Results in periodic paradigm shift● Followed by Moores Law–
  • 28Trends of Software Engineering
  • 29Trends of Software EngineeringI. Increasing complexity of softwareMoores law is the observation that over the history ofcomputing hardware, the number of transistors on integratedcircuits doubles approximately every two years● capabilities of many digital electronic devices are strongly linked toMoores law: processing speed, memory capacity, sensors● describes a driving force of technological and social change● used in the semiconductor industry to guide long-term planning
  • 30Trends of Software EngineeringI. Increasing complexity of softwareComplexityTimeFortran, BasicSymbols, expressionPascal, CStructured programmingC++ObjectsJavaVirtual machinesPython, XML
  • 31Trends of Software EngineeringII. Raising the level of abstraction– Abstract to reduce (hide) complexity– From machine codes to high level languages
  • 32Trends of Software EngineeringII. Raising the level of abstractionMachine code or machine language is a set ofinstructions executed directly by a computerscentral processing unit (CPU).
  • 33Trends of Software EngineeringII. Raising the level of abstraction● High-level language is a programminglanguage with strong abstraction from thedetails of the computer.May use natural language elements, making the processof developing a program simpler and moreunderstandable.
  • 34Trends of Software EngineeringII. Raising the level of abstraction● Executable Models (e.g. xUML) allow graphically specify asystem at the next higher level of abstraction.● allows for true separation of concerns● significantly increases ease of reuse and lowers the cost ofsoftware development● enables domains to be cross-platform and not tied to any specificprogramming language, platform or technology
  • 35Trends of Software EngineeringII. Raising the level of abstraction
  • 36Trends of Software EngineeringIII. Continuous improvement of developmentprocess- Automation and improvement of softwaremaintainability- Iterative approach to software development isbecoming increasingly used as the standarddevelopment technique
  • 37Trends of Software EngineeringIII. Continuous improvement of developmentprocess- Shift to agile methods to focus on incrementalspecification design and systemimplementation, that involve the customerdirectly in the development process- Development of automated tests before aprogram feature is created, adoption ofcontinious integration and continious deliveryprocesses
  • 38Trends of Software EngineeringIV. Ability to deal with changes inrequirements– Businesses now operate in a global,rapidly changing environment– It is often practically impossible to derive acomplete set of stable softwarerequirements
  • 39Trends of Software EngineeringIV. Ability to deal with changes inrequirements– Welcome changing requirements, evenlate in development– Customer collaboration over contractnegotiation
  • 40Trends of Software EngineeringIV. Ability to deal with changes inrequirement– Deliver working software frequently, from acouple of weeks to a couple of months,with a preference to the shorter timescale– Business people and developers mustwork together daily throughout the project
  • 41Trends of Software EngineeringManifesto Agile Software DevelopmentWe are uncovering better ways of developingsoftware by doing it andhelping others do it. Through this work we have come to value:● Individuals and interactions over processes and tools● Working software over comprehensive documentation● Customer collaboration over contract negotiation● Responding to change over following a planThat is, while there is value in the items on the right, we value theitems on the left more
  • 42Software Engineering TrendsV. Reusing experience to addressrecurring problems successfully– Design process in most engineering disciplines is basedon reuse of existing systems or components– Reuse is recognized as an important mechanism toimprove software quality and development productivity– Advantages of software reuse are lower costs, fastersoftware development and lower risks. Systemdependability is increased and specialists can be usedmore effectively by concentrating their expertise on thedesign of reusable components.
  • 43Software reuse
  • 44Software reuse➢ The process of creating software systems fromexisting software rather than building them fromscratch➢ An important mechanism to improve softwarequality and development productivity
  • 45Software reuseDifferent published rates about reuse➢up to 60% of design and code is reusable in business applications➢up to 75% of functions are common to more than one application➢up to 85% - theoretical reuse potential
  • 46• Reusability– the property of a software asset, that indicatesits probability of reuse– often understood as one of software quality anddevelopment productivity factors• Reusable asset (artefact)– reusable software or software knowledge– different software life cycle products• Systematic software reuse– based on the defined processes and rules– without relying on individual initiative or luck 46Software reuse
  • 47Benefits of reuse– Gains in qualityerror fixes accumulated from reuse– Gains in reliabilityreuse increases the chance of errors to be detected– Gains in productivityless design and code, less testing efforts– Gains in performanceeffort invested in optimizations– Reduction of maintenance costsfewer defects and maintenance costs with proven quality components– Reduction of product time to market– Support for rapid prototyping47Software reuse
  • 48Obstacles of reuseManagerial and organizational obstaclessupport of top-level management is neededlack of management incentivesEconomic obstaclesrequires up-front investmentsConceptual and technical obstaclesdifficulty of finding reusable softwarenon-reusability of legacy componentsmodification effects on the component48Software reuse
  • 49• Software reuse is multidisciplinary– organizational aspectsmanagerial and technological infrastructurecentralized or distributed organizationalapproaches– economic aspectsproactive or reactive capital investmentsmetrics, reuse cost estimation techniques, return-on-investment models– technical aspects49Software reuse
  • 50• Reuse-in-the-large is a problem too hard to besolved in general way.– works best in families of related systems– domain-dependent• The final goal is to ingrain reuse into anorganization’s entire software productionprocess50Software reuse