440 likes | 583 Views
INF123 – Software Architecture. INF 123 – Software Architecture Thomas ( Debeauvais ) tdebeauv@uci.edu. Today …. Class info, syllabus Introduction Why, who, where, when, how Definitions Multiple architectures Assignment 2 (= assignment 1). Class info and Syllabus. Class info.
E N D
INF123 – Software Architecture INF 123 – Software Architecture Thomas (Debeauvais) tdebeauv@uci.edu
Today … • Class info, syllabus • Introduction • Why, who, where, when, how • Definitions • Multiple architectures • Assignment 2 (= assignment 1)
Class info • Lecture MW 3:30- 4:50p in ICS 180 • Discussion Tu 5:00-5:50p in SSTR 103 • Out of town Wed 4/2 and Mon 4/7 • Requirements • Basics in CS and software engineering • Fluent in Python
Goals • Learn some architecture theory • And lots of practical knowledge and tools • This includes Python and Github • Github is a must-have in a resume • To write elegantsoftware • Domain: online games From www.hurl.it
Graded workload • Mid-term exam – 20% • Final exam – 40% • Quarter-long project – 40% • Groups of 2 or 3 • Weekly updates – 20% • Final report and presentation – 20%
Not-always-graded workload • Weekly assignments • Due on Thursdays 11:59p • For practice, not always graded • Weekly QQ (quick quizzes) • First 5 minutes of the Monday class • For practice, never graded
Syllabus • Check the website
Why and Who • Objective: source code • Hacker • Code that works • 1 file with 5k lines of code • Developer • Code with structure • 10 files, 3k lines total • Engineer/Architect • Code with a purpose • 1 API, 13 files, 4k lines
Software Architecture • The set of most important design decisions • “Most important” • According to the stakeholders • “Design decisions” • Aware of the options • Also called constraints • More than just the code structure • Elegant
More than just the code structure • Off-the-shelf components/reuse • Should I use Pygame? • Stakeholders • Stakeholder Thomas says: “Pygame is mandatory” • Deployment • py2exe or command line? Embed libraries? • Code structure AND behavior • At the file, package, and project levels • The decisions may change over time • Which decisions are certain vs unsure, critical vs minor?
Where • Every software has at least one architecture • One from the requirements • Another from the documentation • Another in the code itself • They are usually all different …
When • Architecture is not a phase of development • Think, document, write code faithful to the doc • Write OK code, debug, code is documentation • Think, write, think, write, think, write … • In all cases, there are architectures
How • Basic tools: the MASC • Modularity • Abstraction • Separation of Concerns • More advanced tools • Object-oriented paradigm • Domain-specific architectures
This is not a SCAM • Separation of Concerns • Divide a problem into independent parts • Abstraction • Reduce to its essential structure/behavior • Modularity • Consequence of separation of concerns • Modules have interfaces • Monolithic is the opposite of modular
OO Paradigm • Pros • Design patterns • UML • Cons • Only 1 connector (method call) • At the programming level • Sometimes, other programming paradigms (functional, constraint, …) are more appropriate
Domain-specific architectures • Your system belongs to a domain • Online games, banking, web servers, airplanes • This domain has existing solutions • Game engines, infrastructures, architectural styles • You have business goals • Reduce costs (Battle.net = one authentication for all Blizzard games) • Develop a product line (FIFA 2010 FIFA 2011 …) • DSSA = reference architecture with replaceable “parts”
What is a part? Definitions
Definitions • Component • Connector • Configuration • Style • While we’re at it … some basic sweng terms • Non-functional requirements • Reverse-engineering
Component • Functionality or data • With a way to access it • Otherwise it’s called a “black box” • Examples: database, web server, library Database
Connector • A link between components • Between 2, 3, .. N components • Examples: procedure call, DB connector, global variable, event brokers DB connector
Configuration • Graph of components and connectors • Graph as in “edges and vertices”, not as in “drawn” Game Logic DB connector Database
Architectural Style • Proven, recurring, and named architecture • Ex: Three-tier and related architectures Display GUI Web browser Logic Game Logic Web server State Model Database
Non-functional requirements • Adaptability • Availability • Compliance • Complexity • Efficiency • Fault-tolerance • Interoperability • Robustness • Scalability • Security • Usability • …
Non-functional requirements • Functional • “The system prints medical records” • Non-functional • “The system prints medical records quickly and confidentially.”
Reverse engineering • “How does this work?” = curious hacker • “Why does this work?” = curious engineer • Reverse: • Hardware • Binaries • Source code • Protocol • Architecture • Aka arch recovery http://www.youngmindsatplay.com/
Multiple Architectures • Usability architecture: HCI • The user experience • Deployment architecture: sys admin • Mapping between software and hardware • System architecture: sys engineer • The system’s concept and operation • Software architecture: software architect • The software itself
Why so many? • Different stakeholders • Different concerns • Different perspectives • Each abstracts away irrelevant details • Each exemplifies something • Better understanding • Different granularity/level of details
Focus of this class • Software and system architectures Display Web browser Logic Web server State Database
Weekly Assignment 2 • Due Thursday 10th of April, 23:59pm • Install Python 2.7 (NOT Python 3) • Install Pygame 1.9.1 or 1.9.2 • Create a github account • Create a repository • Push a single-player game to your repo • Submit on EEE dropbox the URL of your repo • DO NOT SUBMIT CODE ON EEE
Resources – Python • Python path in Windows • http://stackoverflow.com/questions/3701646/how-to-add-to-the-pythonpath-in-windows-7 • Notepad++, vim, … • Eclipse (+ PyDev plugin) • Help – install software – http://pydev.org/updates
Resources – Pygame • Pygame 1.9.1 or 1.9.2 • http://www.pygame.org/download.shtml • 64-bit for Windows at http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame • Ubuntu: sudo apt-get python-pygame • Double-check: “import pygame” in python console
Resources – Git • Git • https://help.github.com/articles/set-up-git • Cheat sheet: http://cheat.errtheblog.com/s/git • Troubleshooting: https://help.github.com/categories/56/articles • Windows: Git Bash, GitHub Windows • Frequently used Git commands • git pull • git status • git add . • git commit –m ‘finished assignment 5; fixed issue #3’ • git push
Resources – single-player game • Pummel the chimp • https://www.pygame.org/docs/tut/chimp/ChimpLineByLine.html • Solo snake or whale from my githubhttps://github.com/gentimouton/swarch/tree/master/solo • Your own game • No extra library beyond Pygame!