e-Business - SE trends

757 views
680 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
757
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

e-Business - SE trends

  1. 1. DITF LDILietišķo datorsistēmu programmatūrasprofesora grupae-Business SolutionsBasic Trends of ModernSoftware Development
  2. 2. 2Hello Everyone!
  3. 3. 3• What is this all about?• Who are these people?• What will we learn?• What is todays topic?• Whats next?
  4. 4. 4What is this all about?
  5. 5. 5What is this all about?
  6. 6. 62 daysLectures + demoCovering everything you need to understandbasic trends of modern software development
  7. 7. 7Who are these people?
  8. 8. 8Vladimir KotovPhD student, Lecturer @ RTUJava Developer @ CitadeleTeacher @ javaguru.lvvladimir.kotov@gmail.comGit: https://github.com/rk13
  9. 9. 9What is todays topic?
  10. 10. 10Software Engineering and DevelopmentFAQ
  11. 11. 11Software Engineering FAQ● What is software?
  12. 12. 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.
  13. 13. 13Software Engineering FAQ● What is software engineering?
  14. 14. 14Software Engineering FAQ● What is software engineering?An engineering discipline concernedwith all aspects of software production.
  15. 15. 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.
  16. 16. 16Software Engineering FAQ● What is a software process?
  17. 17. 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.
  18. 18. 18Software Engineering FAQ● What is a software process model?A simplified representation of a softwareprocess, presented from a specific perspective.
  19. 19. 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.
  20. 20. 20Software Engineering FAQ● What are software engineering methods?Structured approaches to softwaredevelopment which include system models,notations, rules, design advice and processguidance.
  21. 21. 21Software Engineering FAQWhat is software architecture?
  22. 22. 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
  23. 23. 23http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
  24. 24. 24Software Engineering FAQEnterprise Application● Accounting software● Business intelligence● Business process management● Content management system (CMS)● Customer relationship management (CRM)● Enterprise resource planning (ERP)● ...
  25. 25. 25Software Engineering FAQEnterprise Application● Lots of long living data, accessed concurently● Multiple systems, dissonance in integrationtechnologies and data interpretation● Business “illogic”● Specific patterns
  26. 26. 26Trends of Software Engineering andSoftware Development
  27. 27. 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–
  28. 28. 28Trends of Software Engineering
  29. 29. 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
  30. 30. 30Trends of Software EngineeringI. Increasing complexity of softwareComplexityTimeFortran, BasicSymbols, expressionPascal, CStructured programmingC++ObjectsJavaVirtual machinesPython, XML
  31. 31. 31Trends of Software EngineeringII. Raising the level of abstraction– Abstract to reduce (hide) complexity– From machine codes to high level languages
  32. 32. 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).
  33. 33. 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.
  34. 34. 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
  35. 35. 35Trends of Software EngineeringII. Raising the level of abstraction
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 39Trends of Software EngineeringIV. Ability to deal with changes inrequirements– Welcome changing requirements, evenlate in development– Customer collaboration over contractnegotiation
  40. 40. 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
  41. 41. 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
  42. 42. 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.
  43. 43. 43Software reuse
  44. 44. 44Software reuse➢ The process of creating software systems fromexisting software rather than building them fromscratch➢ An important mechanism to improve softwarequality and development productivity
  45. 45. 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. 46. 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
  47. 47. 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
  48. 48. 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. 49. 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. 50. 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

×