Software Development Methodologies 242 320 SOFTWARE Development Methodologies

  • Slides: 40
Download presentation
Software Development Methodologies 242 -320 SOFTWARE Development Methodologies (3 -0 -6) Asst. Prof. Dr.

Software Development Methodologies 242 -320 SOFTWARE Development Methodologies (3 -0 -6) Asst. Prof. Dr. Warodom Werapun (From Dr. Somchai LIMSIRORATANA)

Class Timetable & Scoring • Timetable • Sec 01: Fri: 09. 00 - 12.

Class Timetable & Scoring • Timetable • Sec 01: Fri: 09. 00 - 12. 00 Room: 6702 • Scoring • Assignment & Homework • Class • Midterm examination • Final examination 25% 5% 35% 2

Requirement Analysis CH 01 - Software Development Methodology

Requirement Analysis CH 01 - Software Development Methodology

Software Requirements Analysis Phases • Problem recognition • Evaluation and synthesis • focus is

Software Requirements Analysis Phases • Problem recognition • Evaluation and synthesis • focus is on what not how • Modeling • Specification • Review 4

Requirements • Requirement • features of system or system function used to fulfill system

Requirements • Requirement • features of system or system function used to fulfill system purpose. • Focus on customer’s needs and problem, not on solutions: • Requirements definition document (written for customer). • Requirements specification document (written for programmer; technical staff). 5

Types of Requirements - 1 • Functional requirements: • input/output • processing. • error

Types of Requirements - 1 • Functional requirements: • input/output • processing. • error handling. • Non-functional requirements: • Physical environment (equipment locations, multiple sites, etc. ). • Interfaces (data medium etc. ). • User & human factors (who are the users, their skill level etc. ). 6

Types of Requirements - 2 • Non-functional requirements (continued): • • • Performance (how

Types of Requirements - 2 • Non-functional requirements (continued): • • • Performance (how well is system functioning). Documentation. Data (qualitative stuff). Resources (finding, physical space). Security (backup, firewall). Quality assurance (max. down time, MTBF, etc. ). 7

Use Cases • Scenarios that describe how the product will be used in specific

Use Cases • Scenarios that describe how the product will be used in specific situations. • Written narratives that describe the role of an actor (user or device) as it interacts with the system. • Use-cases designed from the actor's point of view. • Not all actors can be identified during the first iteration of requirements elicitation, but it is important to identify the primary actors before developing the use-cases. 8

Sample Use Cases POST: Point of Sale Terminal Use Case System Boundary POST Buy

Sample Use Cases POST: Point of Sale Terminal Use Case System Boundary POST Buy Item Log In Cashier Customer Refund a Purchased Item Adapted from Larman “Applying UML and Patterns” 9

Planning Review Agile

Planning Review Agile

Agile Manifesto A Statement of Values • Individuals and interactions over processes and tools

Agile Manifesto A Statement of Values • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan http: //www. agilemanifesto. org 11

Scrum in 100 words Scrum is an agile process that allows us to focus

Scrum in 100 words Scrum is an agile process that allows us to focus on delivering the highest business value in the shortest time. It allows us to rapidly and repeatedly inspect actual working software (every two weeks to one month). The business sets the priorities. Our teams self-manage to determine the best way to deliver the highest priority features. Every two weeks to a month anyone can see real working software and decide to release it as is or continue to enhance for another iteration. 12

How Scrum Works? 13

How Scrum Works? 13

Product Owner • Define the features of the product • Decide on release date

Product Owner • Define the features of the product • Decide on release date and content • Be responsible for the profitability of the product (ROI) • Prioritize features according to market value • Adjust features and priority every iteration, as needed • Accept or reject work results. 14

The Scrum Master • • • Represents management to the project Responsible for enacting

The Scrum Master • • • Represents management to the project Responsible for enacting Scrum values and practices Removes impediments Ensure that the team is fully functional and productive Enable close cooperation across all roles and functions Shield the team from external interferences 15

Scrum Team • Typically 5 -10 people • Cross-functional • QA, Programmers, UI Designers,

Scrum Team • Typically 5 -10 people • Cross-functional • QA, Programmers, UI Designers, etc. • Members should be full-time • May be exceptions (e. g. , System Admin, etc. ) • Teams are self-organizing • What to do if a team self-organizes someone off the team? ? • Ideally, no titles but rarely a possibility • Membership can change only between sprints 16

Parts of Sprint Planning Meeting • 1 st Part: • Creating Product Backlog •

Parts of Sprint Planning Meeting • 1 st Part: • Creating Product Backlog • Determining the Sprint Goal. • Participants: Product Owner, Scrum Master, Scrum Team • 2 nd Part: • Participants: Scrum Master, Scrum Team • Creating Sprint Backlog 17

Daily Scrum • Parameters • • Daily 15 -minutes Stand-up Not for problem solving

Daily Scrum • Parameters • • Daily 15 -minutes Stand-up Not for problem solving • Three questions: 1. What did you do yesterday 2. What will you do today? 3. What obstacles are in your way? • Is a meeting in which team members make commitments to each other and to the Scrum Master • Is a good way for a Scrum Master to track the progress of the Team 18

Sprint Review Meeting • Team presents what it accomplished during the sprint • Typically

Sprint Review Meeting • Team presents what it accomplished during the sprint • Typically takes the form of a demo of new features or underlying architecture • Informal • 2 -hour prep time rule • Participants • • Customers Management Product Owner Other engineers 19

Sprint Retrospective Meeting • Scrum Team only • Feedback meeting • Three questions (Good,

Sprint Retrospective Meeting • Scrum Team only • Feedback meeting • Three questions (Good, Bad, Try …) • Start • Stop • Continue • Don’t skip for the first 5 -6 sprints!!! 20

Sample Product Backlog 21

Sample Product Backlog 21

Sample Sprint Backlog 22

Sample Sprint Backlog 22

Pros/Cons Advantages Drawbacks • • • Completely developed and tested features in short iterations

Pros/Cons Advantages Drawbacks • • • Completely developed and tested features in short iterations Simplicity of the process Clearly defined rules Increasing productivity Self-organizing each team member carries a lot of responsibility Improved communication Combination with Extreme Programming • • “Undisciplined hacking” (no written documentation) Violation of responsibility Current mainly carried by the inventors 23

Development Environments U 03 - Software Development Methodology

Development Environments U 03 - Software Development Methodology

Topics • Tools • • Text Editor or IDE (Integrated Development Environments) Software Development

Topics • Tools • • Text Editor or IDE (Integrated Development Environments) Software Development Kits (Build & Run) Library/Packages Manger Tracing and/or Debugging • Version Control (Git) 25

Tools • Corresponding to course's requirements • Standalone Application (Java) • IDE = Eclipse

Tools • Corresponding to course's requirements • Standalone Application (Java) • IDE = Eclipse • Web Application (Node. js, Angular. js and Mongo. DB) • • • Editor = Sublime Web Server = Node. js Java. Script Library Manager = Bower Test Environment = Chrome Tracing & Debugging = Chrome Inspector 26

Eclipse • Maven is a build automation tool used primarily for Java projects •

Eclipse • Maven is a build automation tool used primarily for Java projects • Describes how software is built and its dependencies 27

Maven Dependencies • Manually adding library to your project is painful, especially when your

Maven Dependencies • Manually adding library to your project is painful, especially when your library has dependencies. • Just focus on what you want <dependency> <group. Id>joda-time</group. Id> <artifact. Id>joda-time</artifact. Id> <version>2. 4</version> </dependency> 28

Version Control • Version control (or revision control, or source control) is all about

Version Control • Version control (or revision control, or source control) is all about managing multiple versions of documents, programs, web sites, etc. • Almost all “real” projects use some kind of version control • Essential for team projects, but also very useful for individual projects • Some well-known version control systems are CVS, Subversion, Mercurial, and Git • CVS and Subversion use a “central” repository; users “check out” files, work on them, and “check them in” • Mercurial and Git treat all repositories as equal • Distributed systems like Mercurial and Git are newer and are gradually replacing centralized systems like CVS and Subversion 29

Centralized VC vs. Distributed VC Central Server Remote Server 30

Centralized VC vs. Distributed VC Central Server Remote Server 30

A Local Git project has three areas Unmodified/modified Files Staged Files Committed Files Note:

A Local Git project has three areas Unmodified/modified Files Staged Files Committed Files Note: working directory sometimes called the “working tree”, staging area sometimes called the “index”. 31

Git file lifecycle 32

Git file lifecycle 32

Basic Workflow 1. Modify files in your working directory. 2. Stage files, adding snapshots

Basic Workflow 1. Modify files in your working directory. 2. Stage files, adding snapshots of them to your staging area. 3. Do a commit, which takes the files as they are in the staging area and stores that snapshot permanently to your Git directory. • Notes: § If a particular version of a file is in the git directory, it’s considered committed. § If it’s modified but has been added to the staging area, it is staged. § If it was changed since it was checked out but has not been staged, it is modified. 33

Aside: So what is github? • Git. Hub. com is a site for online

Aside: So what is github? • Git. Hub. com is a site for online storage of Git repositories. • Many open source projects use it, such as the Linux kernel. • You can get free space for open source projects or you can pay for private projects. Question: Do I have to use github to use Git? Answer: No! • you can use Git completely locally for your own purposes, or • you or someone else could set up a server to share files, or • you could share a repo with users on the same file system. 34

Get ready to use Git! 1. Set the name and email for Git to

Get ready to use Git! 1. Set the name and email for Git to use when you commit: $ git config --global user. name “Bugs Bunny” $ git config --global user. email bugs@gmail. com • You can call git config –list to verify these are set. • These will be set globally for all Git projects you work with. • You can also set variables on a project-only basis by not using the --global flag. 35

Create a local copy of a repo 2. Two common scenarios: (only do one

Create a local copy of a repo 2. Two common scenarios: (only do one of these) a) To clone an already existing repo to your current directory: $ git clone <url> [local dir name] This will create a directory named local dir name, containing a working copy of the files from the repo, and a. git directory (used to hold the staging area and your actual repo) b) To create a Git repo in your current directory: $ git init This will create a. git directory in your current directory. Then you can commit files in that directory into the repo: $ git add file 1. java $ git commit –m “initial project version ” 36

Git commands command git clone url [dir] git add files git commit git status

Git commands command git clone url [dir] git add files git commit git status git diff git help [command] git pull git push description copy a git repository so you can add to it adds file contents to the staging area records a snapshot of the staging area view the status of your files in the working directory and staging area shows diff of what is staged and what is modified but unstaged get help info about a particular command fetch from a remote repo and try to merge into the current branch push your new branches and data to a remote repository others: init, reset, branch, checkout, merge, log, tag 37

Committing files • The first time we ask a file to be tracked, and

Committing files • The first time we ask a file to be tracked, and every time before we commit a file we must add it to the staging area: $ git add README. txt hello. java This takes a snapshot of these files at this point in time and adds it to the staging area. • To move staged changes into the repo we commit: $ git commit –m “Fixing bug #22” Note: To unstage a change on a file before you have committed it: $ git reset HEAD -- filename Note: To unmodify a modified file: $ git checkout -- filename 38

Pulling and Pushing Good practice: 1. Add and Commit your changes to your local

Pulling and Pushing Good practice: 1. Add and Commit your changes to your local repo 2. Pull from remote repo to get most recent changes (fix conflicts if necessary, add and commit them to your local repo) 3. Push your changes to the remote repo To fetch the most recent updates from the remote repo into your local repo, and put them into your working directory: $ git pull origin master To push your changes from your local repo to the remote repo: $ git push origin master Notes: origin = an alias for the URL you cloned from master = the remote branch you are pulling from/pushing to, (the local branch you are pulling to/pushing from is your current branch) 39

Branching To create a branch called experimental: • $ git branch experimental To list

Branching To create a branch called experimental: • $ git branch experimental To list all branches: (* shows which one you are currently on) • $ git branch To switch to the experimental branch: • $ git checkout experimental Later on, changes between the two branches differ, to merge changes from experimental into the master: • $ git checkout master • $ git merge experimental Note: git log --graph can be useful for showing branches. Note: These branches are in your local repo! 40