+ All Categories
Home > Technology > e-Business - SE trends

e-Business - SE trends

Date post: 22-Jan-2015
Category:
Upload: vladimir-kotov
View: 539 times
Download: 0 times
Share this document with a friend
Description:
 
50
DITF LDI Lietišķo datorsistēmu programmatūras profesora grupa e-Business Solutions Basic Trends of Modern Software Development
Transcript
Page 1: e-Business - SE trends

DITF LDI Lietišķo datorsistēmu programmatūras

profesora grupa

e-Business Solutions

Basic Trends of Modern Software Development

Page 2: e-Business - SE trends

2

Hello Everyone!

Page 3: e-Business - SE trends

3

• What is this all about?

• Who are these people?

• What will we learn?

• What is today's topic?

• What's next?

Page 4: e-Business - SE trends

4

What is this all about?

Page 5: e-Business - SE trends

5

What is this all about?

Page 6: e-Business - SE trends

6

2 days

Lectures + demo

Covering everything you need to understand

basic trends of modern software development

Page 7: e-Business - SE trends

7

Who are these people?

Page 8: e-Business - SE trends

8

Vladimir Kotov

PhD student, Lecturer @ RTU

Java Developer @ Citadele

Teacher @ javaguru.lv

[email protected]

Git: https://github.com/rk13

Page 9: e-Business - SE trends

9

What is today's topic?

Page 10: e-Business - SE trends

10

Software Engineering and Development FAQ

Page 11: e-Business - SE trends

11

Software Engineering FAQ

● What is software?

Page 12: e-Business - SE trends

12

Software Engineering FAQ

● What is software?

Computer programs and associated artifacts (e.g documentation).

Software products may be developed for a particular customer or may be developed for a general market.

Page 13: e-Business - SE trends

13

Software Engineering FAQ

● What is software engineering?

Page 14: e-Business - SE trends

14

Software Engineering FAQ

● What is software engineering?

An engineering discipline concerned with all aspects of software production.

Page 15: e-Business - SE trends

15

Software Engineering FAQ

● What is software engineering?

An engineering discipline concerned with all aspects of software production.

Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

Page 16: e-Business - SE trends

16

Software Engineering FAQ

● What is a software process?

Page 17: e-Business - SE trends

17

Software Engineering FAQ

● What is a software process?

A set of activities whose goal is the development or evolution of software.

High-level activities of software specification, development, validation and evolution are part of all software processes.

Page 18: e-Business - SE trends

18

Software Engineering FAQ

● What is a software process model?

A simplified representation of a software process, presented from a specific perspective.

Page 19: e-Business - SE trends

19

Software Engineering FAQ

Software process models

- The waterfall model

Plan-driven model. Separate and distinct phases of specification and development.

- Incremental development

Specification, development and validation are interleaved. May be plan-driven or agile.

- Reuse-oriented software engineering

The system is assembled from existing components.

In practice, most large systems are developed using a process that incorporates elements from all of these models.

Page 20: e-Business - SE trends

20

Software Engineering FAQ

● What are software engineering methods?

Structured approaches to software development which include system models, notations, rules, design advice and process guidance.

Page 21: e-Business - SE trends

21

Software Engineering FAQ

What is software architecture?

Page 22: e-Business - SE trends

22

Software Engineering FAQ

What is software architecture?

● A software architecture is a description of how a software system is organized.

● Architectural design decisions include decisions on the type of application, the distribution of the system, the architectural styles to be used.

● Shared understanding of a system design by the expert developers on a project

● Decisions developers wish they could get right early on

● Decisions perceived as hard to change

Page 23: e-Business - SE trends

23

http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html

Page 24: e-Business - SE trends

24

Software Engineering FAQ

Enterprise Application● Accounting software● Business intelligence● Business process management● Content management system (CMS)● Customer relationship management (CRM)● Enterprise resource planning (ERP)● ...

Page 25: e-Business - SE trends

25

Software Engineering FAQ

Enterprise Application● Lots of long living data, accessed concurently● Multiple systems, dissonance in integration

technologies and data interpretation● Business “illogic”● Specific patterns

Page 26: e-Business - SE trends

26

Trends of Software Engineering and Software Development

Page 27: e-Business - SE trends

27

Trends of Software Engineering

I. Increasing complexity of software

– business complexity– domain complexity– scale complexity– artificial complexity

● Guided by requirements● Results in periodic paradigm shift● Followed by Moore's Law

Page 28: e-Business - SE trends

28

Trends of Software Engineering

Page 29: e-Business - SE trends

29

Trends of Software Engineering

I. Increasing complexity of software

Moore's law is the observation that over the history of computing hardware, the number of transistors on integrated circuits doubles approximately every two years

● capabilities of many digital electronic devices are strongly linked to Moore's 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

Page 30: e-Business - SE trends

30

Trends of Software Engineering

I. Increasing complexity of software

Complexity

TimeFortran, Basic

Symbols, expression

Pascal, C

Structured programming

C++

Objects

Java

Virtual machines

Python, XML

Page 31: e-Business - SE trends

31

Trends of Software Engineering

II. Raising the level of abstraction– Abstract to reduce (hide) complexity– From machine codes to high level languages

Page 32: e-Business - SE trends

32

Trends of Software Engineering

II. Raising the level of abstraction

Machine code or machine language is a set of instructions executed directly by a computer's central processing unit (CPU).

Page 33: e-Business - SE trends

33

Trends of Software Engineering

II. Raising the level of abstraction● High-level language is a programming

language with strong abstraction from the details of the computer. May use natural language elements, making the process of developing a program simpler and more understandable.

Page 34: e-Business - SE trends

34

Trends of Software Engineering

II. Raising the level of abstraction

● Executable Models (e.g. xUML) allow graphically specify a system at the next higher level of abstraction.● allows for true separation of concerns

● significantly increases ease of reuse and lowers the cost of software development

● enables domains to be cross-platform and not tied to any specific programming language, platform or technology

Page 35: e-Business - SE trends

35

Trends of Software Engineering

II. Raising the level of abstraction

Page 36: e-Business - SE trends

36

Trends of Software Engineering

III. Continuous improvement of development process

- Automation and improvement of software maintainability

- Iterative approach to software development is becoming increasingly used as the standard development technique

Page 37: e-Business - SE trends

37

Trends of Software Engineering

III. Continuous improvement of development process

- Shift to agile methods to focus on incremental specification design and system implementation, that involve the customer directly in the development process

- Development of automated tests before a program feature is created, adoption of continious integration and continious delivery processes

Page 38: e-Business - SE trends

38

Trends of Software Engineering

IV. Ability to deal with changes in requirements

– Businesses now operate in a global, rapidly changing environment

– It is often practically impossible to derive a complete set of stable software requirements

Page 39: e-Business - SE trends

39

Trends of Software Engineering

IV. Ability to deal with changes in requirements

– Welcome changing requirements, even late in development

– Customer collaboration over contract negotiation

Page 40: e-Business - SE trends

40

Trends of Software Engineering

IV. Ability to deal with changes in requirement

– Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale

– Business people and developers must work together daily throughout the project

Page 41: e-Business - SE trends

41

Trends of Software Engineering

Manifesto Agile Software DevelopmentWe are uncovering better ways of developingsoftware by doing it and helping 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 plan

That is, while there is value in the items on the right, we value the items on the left more

Page 42: e-Business - SE trends

42

Software Engineering Trends

V. Reusing experience to address recurring problems successfully– Design process in most engineering disciplines is based

on reuse of existing systems or components– Reuse is recognized as an important mechanism to

improve software quality and development productivity– Advantages of software reuse are lower costs, faster

software development and lower risks. System dependability is increased and specialists can be used more effectively by concentrating their expertise on the design of reusable components.

Page 43: e-Business - SE trends

43

Software reuse

Page 44: e-Business - SE trends

44

Software reuse

➢ The process of creating software systems from existing software rather than building them from scratch

➢ An important mechanism to improve software quality and development productivity

Page 45: e-Business - SE trends

45

Software reuse

Different 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

Page 46: e-Business - SE trends

46

• Reusability – the property of a software asset, that indicates

its probability of reuse– often understood as one of software quality and

development 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

46

Software reuse

Page 47: e-Business - SE trends

47

Benefits of reuse– Gains in quality

error fixes accumulated from reuse– Gains in reliability

reuse increases the chance of errors to be detected– Gains in productivity

less design and code, less testing efforts– Gains in performance

effort invested in optimizations

– Reduction of maintenance costs fewer defects and maintenance costs with proven quality components

– Reduction of product time to market– Support for rapid prototyping

47

Software reuse

Page 48: e-Business - SE trends

48

Obstacles of reuseManagerial and organizational obstacles

support 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 component

48

Software reuse

Page 49: e-Business - SE trends

49

• Software reuse is multidisciplinary– organizational aspects

managerial and technological infrastructurecentralized or distributed organizational approaches

– economic aspectsproactive or reactive capital investmentsmetrics, reuse cost estimation techniques, return-on-investment models

– technical aspects

49

Software reuse

Page 50: e-Business - SE trends

50

• Reuse-in-the-large is a problem too hard to be solved in general way. – works best in families of related systems – domain-dependent

• The final goal is to ingrain reuse into an organization’s entire software production process

50

Software reuse


Recommended