Lecture KEY CONCEPTS OF IT WORLD PB 007
Lecture KEY CONCEPTS OF IT WORLD PB 007 Software Engineering I Faculty of Informatics, Masaryk University © Ivana Papcunová 1
Elements of software architecture Lecture /Part 1 © Papcunová 2
Front End vs Back End ² A client side of an application ² The practice of converting data to a graphical interface, so that users can view and interact with that data ² HTML, Java. Script, CSS ² A server side of an application ² The practice of processing the incoming request and generating and sending the response to the client ² Typically includes: the server, the application, the database ² PHP, Java, Python, C++, SQL © Papcunová 3
Full Stack ² The development of both front end (client side) and back end (server side) of web application ² Full-Stack developer: a developer that can play every role in a development ² Basic skillset that a full-stack developer should have: § § § design (user experience) front-end technologies back-end languages infrastructure databases © Papcunová 4
Application Programming Interface – API ² A computing interface which defines interactions between multiple software intermediaries ² Operations that developers can use to access data, along with a description of what they do © Papcunová 5
https: //www. xda-developers. com/files/2013/05/weather-app-tutorial. png Application Programming Interface – API © Papcunová 6
Client – Server ² Client – a computer used by a user to connect to a network and make requests for services provided by servers ² Server – a computer that provides information, services and resources to user or clients in the network © Papcunová 7
Microservice ² An architectural style that structures an application as a collection of multiple small independent services, simpler to understand, to scale and to deploy ² Services may be written in different programming languages and may use different data storage techniques https: //blogs. bmc. com/wpcontent/uploads/2018/10/microservices -vs-monolithic-1024 x 544. png © Papcunová 8
Presentation Lecture /Part 2 © Papcunová 9
User Interface – UI ² A point of human-computer interaction ² A way through which user interacts with an app or website ² Includes display screen, keyboard, mouse, desktop ² Various types: § Graphical user interface (GUI) § Command line interface (CLI) § Touch user interface © Papcunová 10
User Experience – UX ² Overall experience of human-computer interaction ² Person’s perception of system aspects such as look, usability, efficiency ² One of the most critical factors of software products © Papcunová 11
User Experience – UX https: //i 1. wp. com/amethyst. design/wp-content/uploads/2019/08/UX-Comparison-of-News-Sites. png? resize=768%2 C 383&ssl=1 © Papcunová 12
User Experience – UX • Old and noncompact design • Modern and compact design • Photos take too much space • Structured and clearly visible information https: //s 3. amazonaws. com/www-inside-design/uploads/2018/09/UX-research-app-design-1. png © Papcunová 13
Data Lecture /Part 3 © Papcunová 14
Database ² An organised collection of data ² Supports access, storage and manipulation of data ² Typically as rows and columns in a table ² Most used language is SQL (Structured Query Language) ² Controlled by database management system (DBMS) © Papcunová 15
Database https: //asesoftware. com/site/wp-content/uploads/2019/06/asesoftware-sql-nosql. png © Papcunová 16
Big data ² A collection of data that is huge in size or growing exponentially with time ² It’s difficult or impossible to process using traditional database and software tools ² Characteristics – 5 V’s: § Volume – size of the data is enormous § Variety – various sources and format of data § Variability – data can be inconsistent and unpredictable § Velocity – data is generated very fast § Veracity – data is validated and verified © Papcunová https: //img. techentice. com/media/2 019/04/5_V_Big_data-1. png 17
Big data https: //data-flair. training/blogs/wp-content/uploads/sites/2/2019/12/top-big-data-applications-2 -1280 x 720. jpg © Papcunová 18
Infrastructure Lecture /Part 4 © Papcunová 19
Virtualization ² A process of running a virtual instance of a computer system in a layer abstracted from the actual hardware ² A virtual machine (VM) is an isolated software container with an OS and application inside ² Each VM is completely independent © Papcunová 20
Docker ² An open source platform for building, deploying, and managing containerized applications ² A docker container is a standalone executable package of software that includes everything needed to run an application ² Containers share one OS unlike VMs © Papcunová 21
Cloud computing ² The delivery of computing services – including servers, storage, databases, networking, software, analytics, and intelligence – over the Internet (“the cloud”) ² Types: • Infrastructure as a Service (Iaa. S) • Platform as a Service (Paa. S) • Software as a Service (Saa. S) ² Benefits: • Elasticity • Performance • Cost © Papcunová 22
Delivery Lecture /Part 5 © Papcunová 23
Dev. Ops ² A set of practices that combines software development (Dev) and operations (Ops) which aims to shorten the development life cycle and provide continuous delivery with high software quality ² A culture that promotes collaboration between Development and Operations team that makes the team more efficient https: //www. ecloudvalley. com/wpcontent/uploads/2018/08/What-is. Dev. Ops-1. png © Papcunová 24
Release ² A distribution of a version of software ² At the end of each iteration in agile methodologies ² Software has to be planned, implemented, tested and then delivered to customer or released into production © Papcunová 25
Deployment ² The process required for preparing a software application to run and operate in a specific environment ² Deployment plan to ensure changes are made the same way every time ² Various environments: § § Local Development Staging Production © Papcunová 26
Continuous Integration ² A development practice that requires developers to regularly integrate code into a shared repository ² The process of automating the build and testing of code every time a team member commits changes to version control ² Process can help detect errors quickly and locate them easily © Papcunová https: //iqm 7 l 1 pa 7 bn 3 d 42 rc 278 rat 5 wpengine. netdna-ssl. com/wpcontent/uploads/2020/01/image 1 -1. png 27
Version control ² A system that records changes to files over time so that specific versions can be recalled later ² Allows comparing changes and reverting files back to a previous state ² Code is organized in a tree structure – developers can work on some parts of that tree and later can merge their changes together https: //blog. cpanel. com/wpcontent/uploads/2018/05/image 201 8 -2 -8_17 -46 -1. png © Papcunová 28
Open source development ² A decentralized software development model that encourages open collaboration ² The process by which open-source software (whose source code is publicly available) is developed within an open-source software project https: //4. bp. blogspot. com/xp. T 0 GYum 3 V 4/WGc 0 Jeq. Go. CI/AAAA A 3 E/k. SJn. BWyq. QPAb. O 8 Glli. Fngh. GHXrl. Ad. Q 2 w. CLc. B/s 1600/devel opmentmodel. png © Papcunová 29
Open source software and license ² Software with source code that anyone can inspect, modify, enhance, and share ² Software is free of charge – but software services and support are often charged ² Users must accept the terms of a license when they use open source software ² Examples: Linux Kernel, Libre. Office, Mozilla Firefox, Google Chromium, Android, VLC media player © Papcunová 30
Software quality Lecture /Part 6 © Papcunová 31
Refactoring ² A process of modifying a program to improve its structure, reduce its complexity or make it easier to understand ² It is intended to avoid the structure and code degradation that increases the costs and difficulties of maintaining a system ² Should be done in small steps without changing the program’s behaviour © Papcunová 32
Quality assurance (QA) ² A process-driven approach to the maintenance of a desired level of quality in a service or product, with attention to every stage of the design, development and delivery processes ² A way of preventing mistakes and defects in products and avoiding problems when delivering products or services to customers ² QA and Quality Control (QC) are often used interchangeably, but QA is focusing on preventing defects while QC is focusing on identifying defects © Papcunová 33
Issue tracking ² Process of recording and following the progress of a software issue, change request until the problem is resolved ² Mostly used in a customer support to report customer issues ² Issues are transformed into tickets that contain report of the problem and its status ² Also used as a software project tracking and management © Papcunová 34
Issue tracking board https: //brainhub. eu/blog/wp-content/uploads/2018/08/best-issue-tracking-systems-jira. png © Papcunová 35
Methodologies Lecture /Part 7 © Papcunová 36
Agile ² A time boxed, iterative approach to software delivery that builds software incrementally from the start of the project ² Enables teams to deliver faster and respond to a change ² Most used agile processes: § § SCRUM KANBAN Extreme Programming (XP) Feature Driven Development (FDD) © Papcunová 37
Scrum ² A set of meetings, tools, practices and roles to help teams structure and manage their work ² Teams deliver products in iterations called sprints https: //media. vlpt. us/images/katanazero 86/p ost/dca 8 baba-9834 -4276 -ae 85870753 abb 0 dd/%EB%8 B%A 4%EC%9 A%B 4 %EB%A 1%9 C%EB%93%9 C. jpg? w=768 ² Continuously creating the highest priority parts of functionality and regularly getting customers’ feedback © Papcunová 38
Extreme programming ² An agile methodology designed to improve the quality of software and its ability to adapt to the changing needs of the customer ² Iterative and frequent small releases ² Practices: § Pair programming § Test driven development (TDD) © Papcunová https: //www. hiclipart. com/free-transparentbackground-png-clipart-aqzrw 39
Prototyping ² A prototype is a simplementation of a proposed solution used to test or validate ideas ² Provides opportunity to collect feedback from customers ² Helps identifying issues and areas for improvement ² A prototype is always thrown away – the real product development is based on knowledge aquired from implementing the prototype © Papcunová 40
Teams Lecture /Part 8 © Papcunová 41
Roles in general https: //media-exp 1. licdn. com/dms/image/C 5612 AQG 2 Iyoh-3 dfn. Q/article-inline_imageshrink_1500_2232/0? e=1593648000&v=beta&t=GLy 799 Zp. VVCJmrlo. Dtxp. Jikio 0 taboz 8 ZU 9 y. Jp. Vc 8 no © Papcunová 42
Waterfall model team https: //media-exp 1. licdn. com/dms/image/C 4 E 12 AQE 9 w 5 UELHCz. Ew/article-inline_imageshrink_1000_1488/0? e=1593648000&v=beta&t=79 YTCHzq 2 tpqi 8 y. Yfav. Nh 0 J_6 p 093 H 9 s. If 1 p. VLKeoyw © Papcunová 43
Scrum team https: //ww w. pn gitem. com/ pimg s/m/1 451451 323_ whatisscru mteamillustr ationhdpngdown load. png © Papcunová 44
Languages Lecture /Part 9 © Papcunová 45
Languages and frameworks https: //res. cloudinary. com/cybercoders/image/upload/c_scale, g_south_eas t, l_cc_logo_bug_wenazs. png, w_40/v 1557870077/Full_Stack_ebvf 4 s. png 46 © Papcunová
Frontend https: //res. cloudinary. com/cybercoders/image/upload/c_scale, g_south_eas t, l_cc_logo_bug_wenazs. png, w_40/v 1557870077/Full_Stack_ebvf 4 s. png 47 © Papcunová
Backend https: //res. cloudinary. com/cybercoders/image/upload/c_scale, g_south_eas t, l_cc_logo_bug_wenazs. png, w_40/v 1557870077/Full_Stack_ebvf 4 s. png 48 © Papcunová
Database https: //res. cloudinary. com/cybercoders/image/upload/c_scale, g_south_eas t, l_cc_logo_bug_wenazs. png, w_40/v 1557870077/Full_Stack_ebvf 4 s. png 49 © Papcunová
Dev. Ops https: //res. cloudinary. com/cybercoders/image/upload/c_scale, g_south_eas t, l_cc_logo_bug_wenazs. png, w_40/v 1557870077/Full_Stack_ebvf 4 s. png 50 © Papcunová
Mobile https: //res. cloudinary. com/cybercoders/image/upload/c_scale, g_south_eas t, l_cc_logo_bug_wenazs. png, w_40/v 1557870077/Full_Stack_ebvf 4 s. png 51 © Papcunová
Tools Lecture /Part 10 © Papcunová 52
Tools https: //www. wati. com/wp-content/uploads/2018/11/Slide 3. png © Papcunová 53
Code, infrastructure and deployment © Papcunová 54
Testing, release and collaboration © Papcunová 55
- Slides: 55