1 / 46

Informatics 43 Introduction to Software Engineering

Informatics 43 Introduction to Software Engineering. Lecture 3 Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited. Today’s lecture. Evolution Architectural styles Principles of software engineering.

orea
Download Presentation

Informatics 43 Introduction to Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatics 43Introduction to Software Engineering Lecture 3 Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited.

  2. Today’s lecture • Evolution • Architectural styles • Principles of software engineering

  3. Today’s lecture • Evolution • Architectural styles • Principles of software engineering

  4. Facebook (2005) From: http://mashable.com/2011/09/22/facebook-profile-evolution/

  5. Facebook (2006)

  6. Facebook (2007)

  7. Facebook (2008)

  8. Facebook (2009)

  9. Facebook (2010)

  10. Facebook (2011)

  11. Facebook (2011)

  12. Facebook evolution • User interface • http://www.grosocial.com/blogposts/Evolution-Facebook-Features • http://www.youtube.com/watch?v=Nl7igMfeOvo • Architecture • http://www.infoq.com/presentations/Facebook-Software-Stack • http://www.infoq.com/presentations/Evolution-of-Code-Design-at-Facebook

  13. Airplane cockpit (Boeing 787) From: http://www.boeing.com/commercial/aeromagazine/articles/2012_q1/3/

  14. Airplane cockpit (Boeing 787)

  15. Airline cockpit (Boeing 747)

  16. Airline cockpit (Boeing 747)

  17. Angry Birds

  18. Evolution • Essential part of software development • Must be accommodated as much as possible • Must be planned as much as possible

  19. Today’s lecture • Evolution • Architectural styles • Principles of software engineering

  20. Defining software architecture • A software system’s architecture is the set of principal design decisions about the system • Software architecture is the blueprint for a software system’s construction and evolution • Design decisions encompass every facet of the system under development • structure • behavior • interaction • non-functional properties

  21. “Principal” • “Principal” implies a degree of importance that grants a design decision “architectural status” • it implies that not all design decisions are architectural • that is, they do not necessarily impact a system’s architecture • How one defines “principal” will depend on what the stakeholders define as the system goals

  22. Software architecture’s elements • A software system’s architecture typically is not (and should not be) a uniform monolith • A software system’s architecture should be a composition and interplay of different elements • processing • data, also referred as information or state • interaction

  23. Components • Elements that encapsulate processing and data in a system’s architecture are referred to as software components • A software component is an architectural entity that • encapsulates a subset of the system’s functionality and/or data • restricts access to that subset via an explicitly defined interface • has explicitly defined dependencies on its required execution context • Components typically provide application-specific services

  24. Connectors • In complex systems interaction may become more important and challenging than the functionality of the individual components • A software connector is an architectural building block tasked with effecting and regulating interactions among components • In many software systems connectors are usually simple procedure calls or shared data accesses • much more sophisticated and complex connectors are possible • Connectors typically provide application-independent interaction facilities

  25. Examples of connectors • Procedure call connectors • Shared memory connectors • Message passing connectors • Streaming connectors • Distribution connectors • Wrapper/adaptor connectors

  26. Configuration • Components and connectors are composed in a specific way in a given system’s architecture to accomplish that system’s objective • An architectural configuration, or topology, is a set of specific associations between the components and connectors of a software system’s architecture

  27. Example configuration procedure call procedure call procedure call ship course GPS unit ship radar

  28. Architectural style • Certain design choices regularly result in solutions with superior properties • compared to other possible alternatives, solutions such as this are more elegant, effective, efficient, dependable, evolvable, scalable, and so on • An architectural style is a named collection of architectural design decisions that • are applicable in a given development context • constrain architectural design decisions that are specific to a particular system within that context • elicit beneficial qualities in each resulting system

  29. Style 1: object-oriented procedure call procedure call procedure call ship course GPS unit ship radar

  30. Style 2: model-view-controller procedure call procedure call procedure call teller rules back account

  31. Style 3: client-server remote call remote call remote call game client 2 game client 1 game client 3 game server

  32. Style 4: blackboard data access viewer autosave spell checker document

  33. Style 5: peer-to-peer skype 1 stream stream skype 2 skype 3 stream

  34. Style 6: pipe-and-filter print records sort remove duplicates stream stream

  35. Style 7: pub-sub trader 1 trader 3 trader 2 remote call remote call remote call stream stock market

  36. Mixing styles is often necessary trader 1 trader 3 trader 2 stream remote call remote call remote call procedure call procedure call procedure call stock market server purchasing rules stock database

  37. Mixing styles of often necessary spotify master remote call spotify server stream stream stream stream spotifyclient spotifyclient spotifyclient

  38. Back to evolution • Essential part of software development • Must be accommodated as much as possible • Must be planned as much as possible

  39. Accommodating change procedure call procedure call procedure call teller rules back account New overdraft rule?

  40. Accommodating change skype 1 stream stream skype 2 skype 3 stream Another user?

  41. Accommodating change? list records sort remove duplicates stream stream Only records namesstarting with a letter from the first half of the alphabet?

  42. Accommodating change trader 1 trader 3 trader 2 stream remote call remote call remote call procedure call procedure call procedure call stock market server purchasing rules stock database Another stock?

  43. Accommodating change trader 1 trader 3 trader 2 stream remote call remote call remote call procedure call procedure call procedure call stock market server purchasing rules stock database Another trader?

  44. Architectural evolution • When a system evolves, ideally its prescriptive architecture is modified first • In practice, the system – and thus its descriptive architecture – is often directly modified • This happens because of • developer sloppiness • perception of short deadlines which prevent thinking through and documenting • lack of documented prescriptive architecture • need or desire for code optimizations • inadequate techniques or tool support

  45. Today’s lecture • Evolution • Architectural styles • Principles of software engineering

  46. Recurring, fundamental principles • Rigor and formality • Separation of concerns • modularity • abstraction • Anticipation of change • Generality • Incrementality

More Related