Presentation is loading. Please wait.

Presentation is loading. Please wait.

CISC/CMPE320 - Prof. McLeod

Similar presentations


Presentation on theme: "CISC/CMPE320 - Prof. McLeod"— Presentation transcript:

1 CISC/CMPE320 - Prof. McLeod
Winter 2013 CISC/CMPE320 2/19/2019 CISC/CMPE320 You should be able to log in to Bitbucket, but I have not had a chance to create your repositories. Bitbucket is integrated with Jira. Lots of team activity yesterday! I’m only waiting on one team for its manager and executive summary. Some interesting and fun project concepts are ahead! Assignment 1 due this week – 7pm Friday. Fall 2018 CISC/CMPE320 - Prof. McLeod Prof. Alan McLeod

2 CISC/CMPE320 - Prof. McLeod
Teamwork RAD will be due by 7pm, next Friday – Oct. 12. Create, edit and present the document from Confluence only. Don’t me anything like a pdf or a word doc. More shortly: Jira and Confluence can work together to help you build your product backlog and your first sprint. Fall 2018 CISC/CMPE320 - Prof. McLeod

3 CISC/CMPE320 - Prof. McLeod
Today What is a RAD? What is SCRUM all about? Back to functions still… (The demo program SortAlgorithmTemplateExample.cpp has been updated.) Fall 2018 CISC/CMPE320 - Prof. McLeod

4 Project Deliverable – the RAD
“Requirements Analysis Document”. The purpose of this deliverable is to make sure you have started on the design of your app. You don’t need to have written any code, but after you have created the RAD, you should have a pretty good overall idea of what you are building. You still may not have decided on the architectural details (see the SDD for this!). Fall 2018 CISC/CMPE320 - Prof. McLeod

5 Project Deliverable – the RAD, Contents
A broad-view summary of what you are planning to build. Consider inputs and outputs and what you are trying to accomplish. Who are the target user(s)? A diagram might best describe these concepts. If you are building a game, what parameters are you going to adjust to ensure the playability of the game? A list of functional requirements. You may have been calling these “features”. What exactly does the program have to do, and in what order? Sketches or prototypes of the GUI interface (all windows) along with a description of how the user will navigate through the interface. A list of the other roles assigned to each team member, on the assumption that everyone is a coder first. Fall 2018 CISC/CMPE320 - Prof. McLeod

6 Project Deliverable – the RAD, Cont.
The information listed above does not have a natural representation in Jira other than in a document in Confluence. So, that is where it should be. As you expand on the design, you will start creating issues and tasks that have a time to completion that you can estimate (at least in relative terms). These will form successive sprints. Fall 2018 CISC/CMPE320 - Prof. McLeod

7 CISC/CMPE320 - Prof. McLeod
SCRUM Requirements Requirements are collected from project stakeholders (“you” in your case!). Spend some time to make sure you have considered all the features you need to have in your system. Requirements are split into: Functional Requirements Non-Functional Requirements. Functional is like a “feature”. Non-Functional is “how well” the feature needs to be implemented. Fall 2018 CISC/CMPE320 - Prof. McLeod

8 User Stories The SCRUM methodology lists requirements in the format:
As a [stakeholder], I want to [goal] so that [motivation]. Stakeholder – for whom are we doing this? Goal – what are we doing? Motivation – why are we doing it? Fall 2018 CISC/CMPE320 - Prof. McLeod

9 CISC/CMPE320 - Prof. McLeod
User Stories, Cont. User stories need to be clear to everyone and verifiable. The latter means that you need to be able to later confirm that you have met the requirements of the story. Focus on user needs, rather than on the solution or technology domain. Fall 2018 CISC/CMPE320 - Prof. McLeod

10 CISC/CMPE320 - Prof. McLeod
User Stories, Cont. Examples of Functional Requirements: As a user, I want to be able to save my game progress so that I can re-start the game from where I left off. As a level designer, I want to be able to use a text editor to design and edit levels for simplicity. Fall 2018 CISC/CMPE320 - Prof. McLeod

11 CISC/CMPE320 - Prof. McLeod
User Stories, Cont. Examples of non-functional requirements: As a user, I want to be able to save my game in less than 2 seconds so I only have to wait a short time. As a user, I want to be able to play this game on an Android device or on my Mac, so I can play it anywhere. Fall 2018 CISC/CMPE320 - Prof. McLeod

12 CISC/CMPE320 - Prof. McLeod
User Stories, Cont. Keep collecting user stories until you think you have covered everything. Separate them into functional and non-functional. Try to keep them from overlapping. Break overly large requirements up, if you can. Something overly large will be characterized by a long time-to-completion that is difficult to estimate. Fall 2018 CISC/CMPE320 - Prof. McLeod

13 CISC/CMPE320 - Prof. McLeod
Back to SCRUM The functional requirements will form the basis of your product backlog, expressed as issues in Jira. You will prioritize these and estimate time requirements (or story points). Select some items from the backlog to form a sprint. See: Fall 2018 CISC/CMPE320 - Prof. McLeod

14 CISC/CMPE320 - Prof. McLeod
User Stories, Cont. You will list requirements in Confluence. See: and: Confluence gives you an easy tool that will convert a user story to Jira issues. See the instructions linked above. Fall 2018 CISC/CMPE320 - Prof. McLeod

15 Back to Functions For a While
Continue with: Pointers to functions Initializer Lists as parameters Lambda functions constexpr applied to functions C++11 C++11 C++11 C++14 Fall 2018 CISC/CMPE320 - Prof. McLeod

16 CISC/CMPE320 - Prof. McLeod
Pointers to Functions You can define a pointer to a function. See FunctionsAsPointers.cpp Note that the return type and parameter list must match up. The example does not look useful, but you can also pass function pointers as parameters. The function could be a comparator, for example. Fall 2018 CISC/CMPE320 - Prof. McLeod

17 Pointers to Functions, Cont.
This is mostly a C usage. There are better ways to do this including function templates and by taking advantage of polymorphism – this is all C++! See another example: SortAlgorithmTemplateExample.cpp modified from an example in cplusplus.com. Also has a Lambda function! Fall 2018 CISC/CMPE320 - Prof. McLeod

18 Initializer List Parameter Type
C++11 You can use std::initializer_list<type> as a parameter type to allow you to pass an initializer into a function. An initializer is a list of items of type contained in { }. #include <initializer_list> Already used by standard container classes like vector. See InitializerList.cpp. Fall 2018 CISC/CMPE320 - Prof. McLeod

19 CISC/CMPE320 - Prof. McLeod
Lambda Functions C++11 Wikipedia has a decent discussion on lambdas at: Also called “anonymous functions”, which they are. A function that is implemented without actually naming it. The basic syntax: [capture](parameters) -> returnType {function_body} Fall 2018 CISC/CMPE320 - Prof. McLeod

20 CISC/CMPE320 - Prof. McLeod
Lambda Functions, Cont. The capture part allows you to access variables that are scoped to where the lambda is created. You can capture stuff by value or by reference. The parameters section is just like a parameter list for a normal function. auto can be used as a parameter type in C++14. The returnType section is actually optional provided all return statements return the same type. Or, in C++14, you can use auto. The body of the function is contained within { }. Fall 2018 CISC/CMPE320 - Prof. McLeod

21 CISC/CMPE320 - Prof. McLeod
Lambda Functions, Cont. A lambda function can be assigned to a variable. The easiest thing to do is to specify the type of that variable as auto. See a simple example of a lambda function in SortAlgorithmTemplateExample.cpp. Fall 2018 CISC/CMPE320 - Prof. McLeod

22 constexpr Applied to Functions
This keyword can be used with a function or a class to tell the compiler that it is a compile time constant expression. A constant expression yields the same result during compilation or run-time. For example, this function is a constant expression: int getFortyTwo() { return 42; } C++11 C++14 Fall 2018 CISC/CMPE320 - Prof. McLeod

23 constexpr Applied to Functions, Cont.
By stating instead: constexpr int getFortyTwo() { return 42; } The compiler will now evaluate this function and substitute the constant into any code that invokes this function. Results in “code optimization”, which is a big deal in C++. Can be used for an entire class or when declaring float or double constants. Fall 2018 CISC/CMPE320 - Prof. McLeod

24 constexpr Applied to Functions, Cont.
The function cannot be a void return function. In C++11 you could only have declarations and a single return statement. Now, in C++14, you can also have loops and conditionals. Fall 2018 CISC/CMPE320 - Prof. McLeod


Download ppt "CISC/CMPE320 - Prof. McLeod"

Similar presentations


Ads by Google