Agile dev midterm

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

Is Git a centralized or decentralized version control system?

Decentralized

Are unit tests typically run on the user interface of a web application, such as those written in HTML, CSS, JSX, or XML?

no

Can User Acceptance Testing be automated?

no

Do unit tests require changes to the code being tested?

no

Does it ever make sense for a developer to approve their own Pull Request?

no

Would a build script written in XML support programming conditional statements, like if/else if/else into a build script?

no

What milestone(s) should all user stories, tasks, and spikes have if they are under development in Sprint 2.

sprint 2

Who should be interviewed as part of the requirements gathering/elicitation process?

stake holders and end users

What label(s) should an Issue that represents a task that is currently under development have?

task

What label(s) should an Issue that represents a user story in the Product Backlog have?

user story

What label(s) should an Issue that represents a user story in the current Sprint Backlog have?

user story

Can Git be used in a Centralized workflow?

yes

Can integration testing be automated?

yes

Would a build script written in Groovy or Javascript support programming conditional statements, like if/else if/else into a build script?

yes

Give a one-sentence description of each of the high-level software engineering activities, regardless of the process model one follows.

1) Specification - understanding what the system must do and how it must work in order to be satisfactory 2) Development - programming the code and building the systems 3) Validation - making sure the product works correctly and meets the specification 4) Evolution - maintenance and refinement of the product

What does a GitHub fork do, in terms of Git?

A GitHub 'fork' is a git 'clone' of a remote GitHub repository. GitHub creates a remote clone of the original remote repository in the user's GitHub account.

User stories that do not benefit the user directly are known in Agile methodologies as spikes.

A Spike is a User Story that is not customer-facing, but is something internal that the team has to do to help their own work.

What perceived problem was this conference organized to address? (NATO)

A software crisis

Which type of UML diagram would you use most often to work out the high-level logic and decision-making of a particular system process?

Activity diagram

Who was the first programmer to realize the need for 'librarian types' to keep software development on track?

Alan Turing

What activities does Scrum include that address the Agile manifesto's preference for "Responding to change over following a plan"?

All activities where a project is defined and redefined at regular intervals, and where feedback from stakeholders is gathered at regular intervals. These include: * sprint planning * product backlog grooming * stakeholder demos

Which are features of any good build system? Automatically performs tests, such as unit tests Clearly communicates the sequence of steps necessary to perform the build Documents all dependencies Integration with a version control system Integration with Slack Only rebuilds components that have not changed since the last build Send reports or notification to the developers of the success or failure of the build or tests

All but slack

What is the advantage of a plug-in architecture to a build system?

Allows developers to find or make plug-ins to help automate builds of a specialized type that are not directly supported in full by the build system code itself.

What should be included in a Git commit message, if the change addresses a documented issue?

Any bug/issue tracking number should be included in the git commit message.

Why does the Waterfall model often lead to software with known problems?

Any significant changes to the specification after it has been "signed off" by the client may trigger a need to backtrack to the specification stage to modify it and get new approval, which risks delaying a project significantly. As a result, most involved try to avoid changes once a project has been specified, even when known flaws are discovered. This often leads to poor quality software.

Define continuous integration, including all steps, IN YOUR OWN WORDS.

Automating and testing software. Identify the manual process, Estimate how freq. and how long it will release, Select a Process for automation, Create the Automation Scripts, Schedule and Trigger events, Improve and Repeat.

Why are we learning about personality types?

Because they help us understand how others, such as recruiters, may view us Because they provide a way to understand the behavior and preferences of our teammates

Which Git/GitHub workflow(s) did you follow in the Git practice assignment?

Centralized workflow Open-source style workflow

What is 'static analysis' of code, and what set of static analysis tools have we discussed in class?

Code that does not require execution, eslint, js lint, jshint .. and many more

What sort of model is based directly on the nouns (and sometimes verbs) written in the specification documentation?

Conceptual model Domain model

Why learn about build systems like Make, Ant, Maven, Gradle, and Grunt when Travis CI, Jenkins or another Continuous Integration automation servers can simply run a bash script when changes are committed to a source code repository?

Continuous Integration servers are used to trigger the creation of a new virtual environment in response to an event such as a change in the code, or a pull request. The virtual environment is then where the system is built and tested. Build system tools are specialized for automating builds, and can be triggered by those Continuous Integration servers. Bash scripts are more general purpose and not specialized for builds, although they certainly can be used to do builds.

What is the difference between continuous delivery and continuous deployment?

Continuous integration is a coding ideal and set of practices that drive dev teams to implement small changes and check in code to version control repositories frequently. Continuous delivery picks up where continuous integration ends. It automates the delivery of applications to selected environments.

3 reasons why software engineering is necessary

Creating software is hard, Artisanal approaches do not scale well, Software is everywhere.

What is the value of testing just a unit, versus a larger amount of code?

Detecting problems in larger amounts of code makes it less easy to identify exactly where any error is located.

Software Engineering is generally considered to be something those with Computer Science degrees are well prepared for.

False

imagine the following scenario: a software engineer earns $100/hr. A given simple project requires a set of 100 unit tests. Each unit test takes an average of 3 minutes for the engineer to write. If automated, the unit tests take a total of 1 minute to run. If the tests are executed manually, the unit tests take a total of 10 minutes to run. How many times must the set of unit tests be run in order for the time savings they offer throughout the lifetime of the project to compensate for the up-front cost of their creation?

Feedback --Writing tests-- 100 tests X 3 minutes/test = 300 minutes = 5 hours to write tests 5 hours @ $100/hour = $500 cost for the engineer to write tests --Running tests automatically-- 1 minutes = 0.0167 hours to run the tests automatically 0.0167 hours @ $100/hour = $1.67 for the engineer to run the tests automatically --Running tests manually-- 10 minutes = 0.167 hours to run the tests manually 0.167 hours @ $100/hr = $16.7 for the engineer to run the tests manually --To recoup the $500 cost of writing the tests-- Each running of the tests saves $16.7 - $1.67 = $15.03 To recoup the cost, they must be run $500 / $15.03 = 33 times... not much!

Should branches be merged frequently or infrequently with the trunk of a Git repository?

Frequently

Which tools, in this class, are we using, in part, to help promote a sense of social belonging?

GitHub Slack

What was the original impetus for Stuart Feldman to create Make in 1976?

His impetus was to was created to solve the all-too-common problem of developers wasting time debugging builds where the problem was human error in performing the build, not software bugs in the code.

If working on a new system from scratch, what can you observe the user doing as part of your requirements elicitation?

If there is no existing system to observe, it is possible to observe end-users a) using a prototype of the system you intend to build; b) using their current alternative to the system you are intending to build.

When do teams update the Product Backlog to add, remove, or update User Stories?

In the middle of each Sprint

What advantages does an Incremental process model offer over the Waterfall model?

Incremental processes have the advantage of involving the client for their feedback and suggestions throughout the process, and changing requirements are welcomed.

Why is ongoing refactoring especially important in Incremental processes versus Waterfall?

Incremental-oriented developers face the challenge of creating elegant, easy to maintain systems, in an environment where parts of software are being slapped on-on-top-of-another in a piecemeal fashion. This requires constant refactoring of old code so that new code integrates structurally with the existing codebase in a reliable, maintainable way.

User Acceptance Testing is a form of....

Integration testing

What is the main difference between unit testing and integration testing?

Integration testing involves multiple units interacting with one-another. Unit testing tests a single unit in isolation.

How does test-driven development relate to a project's 'code coverage'?

It ensures that it is thorough to discover untested regions as the tests are written before the code and most of the program will be written based on them.

Why did we learn bash scripting?

It's generally useful to know for automating tasks

What language(s) is Grunt designed to automate builds for?

JS

Which Myers-Briggs lifestyle trait would be more interesting in clearing an existing Sprint backlog item than in uncovering new ideas for a project?

Judging

What is the relationship between load testing and stress testing of a system?

Load testing tests an application at levels of load that it is designed for. Stress testing tests at higher loads than designed for.

Why might Brooks' Law not apply to today's software development teams?

Many modern tools, such as version control, automated testing, and continuous integration, allow new developers to join a team without disrupting or causing a drag on existing team members.

Which build system(s) that we've discussed host an officially-supported repository of plug-ins?Make Ant Maven Gradle Grunt

Maven Gradle Grunt

Why might it be unusually difficult for a developer unfamiliar with Maven to understand what tasks a Maven build script performs?

Maven is built to follow a conventional build with no need for explicit instructions on how to do that, it is not easy for developers to know what it is doing

Which is/are indicated between entities in domain models?

Multiplicity

What organization hosted a conference in 1968 that officially spurred the creation of software engineering as a discipline?

NATO Science Committee

Whose job is it to maintain the Task Board?

Product Owner

What does GitHub automatically do with CONTRIBUTING.md files in a GitHub repository that makes them valuable?

Provides a link to it automatically to users who create a Pull Request

From a business's point of view, what are the main advantages of continuous integration as opposed to manual processes?

Risk mitigation, Confidence, Consistency of Build.

How does Scrum try to address the challenges inherent in the Cone of Uncertainty?

Scrum breaks up the dev process by dividing it into small pieces to yield a fully functioning product at the end of every sprint/cycle. Therefore there will hopefully never run into an issue of high stakes

How does Scrum relate to Agile?

Scrum is a "framework" for agile software development. In other words, Scrum prescribes a specific workflow that tries to ensure projects follow an agile methodology.

Which Maslow-ian needs are we interested in when discussing software team-building?

Self-actualization Esteem Social belonging

Which type of UML diagram would be most useful for working out the communication and sequence of message necessary to be passed among objects in a order to achieve a particular goal?

Sequence diagram

What defines an extrovert, as compared to an introvert?

Someone who derives more energy from social interaction

In which column(s) of a Task Board is appropriate to place User Stories?

Sprint Backlog

At what Scrum event do teams write Acceptance Criteria and Estimates of Work for User Stories?

Sprint Planning

What are stakeholders and why are they important to software engineers?

Stakeholders are those people or organizations who either have a say in the product, or who could cause problems for the product developers if they desired. They typically include managers or executives in the client organization, important end-users, and others.

Which type of UML diagram would be most useful for communicating the changes to a web-based system triggered by a user of that system moving their pointer, clicking, and typing on various parts of a web-based user interface?

State chart diagram

From a developer's point of view, what are the main advantages of continuous integration as opposed to manual alternatives

Team Communication, Reduced Overhead, Consistency

What is 'regression testing'?

Testing old unit tests that have previously passed before new additions or changes were made to project.

Why should unit tests follow the same standards of good code design for your test code?

That was we can guarantee that each unit is working as expected and we know that is trustworthy, maintainable, and readable.

Why is it a good idea to pull before pushing to a Git remote repository when working on a team project?

That you your branch is up to date and no merging conflicts occur

Who drafts the User Stories and the Acceptance Criteria and the Estimates that go along with each story?

The Product Owner drafts the user stories. The Product Owner and Developers collaboratively draft the Acceptance Criteria. The Developers draft the Estimation of work.

Why should the Product Owner really not be a Software Engineer?

The Product Owner is supposed to be the representative of the stakeholders. This means they must write and speak in "regular" language, not technical jargon. This is generally easier for non-technical people.

Describe the management responsibilities of the Scrum Master

The Scrum Master is a "servant leader". They are not considered managers, but they are enforcers of the rules of Scrum. For example, they remind every how Daily Standups are supposed to be done, how the Product Owner is supposed to write the user stories, etc.

What is the appropriate amount of work to include in each Task?

The amount of work 1 developer can do in about 1 or 2 days

Concisely explain why a client may prefer the Waterfall process model over an Incremental process.

The waterfall process helps clients understand what exactly is being built, how it is being built, how much it will cost, and how long it will take. What is not to like about that?!

Why do planning Poker cards often come with numbers from the Fibonacci Sequence on them?

The reason for using the Fibonacci sequence is to reflect the inherent uncertainty in estimating larger items

What does the term unit in "unit testing" refer to? (pick the best definition)

The smallest testable piece of code in a system A function/method An object A class

Explain the purpose of the Git staging index and how it relates to the Working Copy and Repository.

The staging index allows developers to control what parts of the working copy go into the repository on the next "commit" operation.

In what cases might you perform remote observation rather than in-person observation?

To have a wider variety of users all around the world, it also allows for immediate feedback, and play re runs

What is the ideal ratio of test code to production code?

There is no ratio that is ideal for all projects

Should new features be added to code directly in the repository trunk, or in a branch?

To a branch

Why is it important to write at least the high-level functional requirements in jargon-less natural language?

To not get caught on in too much details and look back on the high level concepts that need to be implemented. (The basic structure)

Why is it best to commit small changes to code when using continuous integration?

To target bugs more easily and having better rollbacks if needed

Why is 'mocking' important for the integrity of unit tests?

Unit testing is ideally done in isolation, so other systems or code outside of the area of focus are not interfering in the test.

Why do both use cases and user stories exist in software engineering practice, and when should you use each?

Use cases and user stories are two different methods of documenting the same thing - user requirements. Which you choose depends upon which development methodology you are following. Agile methodologies often prescribe user stories as the way to document User Requirements. Waterfall, Object-Oriented Systems Analysis and Design (OOSAD) and some others prescribe use cases to do the same thing. Many teams do a bit of both.

What happens to User Stories from the Sprint Backlog that are not completed by the end of the Sprint?

User Stories not implemented in a Sprint are then returned to the Product Backlog

Which of the following are considered "user requirements"?

User stories Use cases

Ant and Maven both use build scripts written in XML. Why do more modern build systems not use XML?

XML is considered overly verbose, as compared with other more syntactically minimal document formats such as JSON or YAML.

What are some of the key differences among build systems? The language in which the build scripts are written Whether the build system is specific to one platform or is platform-agnostic Whether the build system more heavily emphasizes following convention or custom configuration Whether the build scripts can specify specific build targets or not Whether the build system allows for a 3rd-party plugin architecture

all but The language in which the build scripts are written

Which scripting environments that we've learned about have a built-in ability for minimal recompilation of source code?Bash Make Ant Maven Gradle Grunt

all but bash

Which are some features of Make? Allows developers to define instructions for how exactly to build specific targets Build scripts are cross-platform compatible Performs minimal recompilation Tracks dependencies Written in a programming language that will look familiar to most developers

all of the above

Which of the following are advantages of using a code linter over manual checking of code?Abates the risk of personal conflict within a team Checks for correct syntax faster than a human Checks for good code style faster than a human Identifies the same issues every time it is run on the same code

all of the above

What is the difference between multiplicity and cardinality (the quote from Martin Fowler on the Stack Overflow page about this question offers a good explanation - paraphrase it in your own words!)

cardinality is used to indicate how many entities may be linked together. Multiplicity is the the range of allowable cardinality values - the size - that a set may assume

Use cases *always* include...

interactions that actors have with the system

Would a build script written in YAML support programming conditional statements, like if/else if/else into a build script? (take a quick look into YAML if you don't know what it is)

no

How many Tasks should be addressed in a single branch in the version control system if following the Feature Branch Workflow?

one


Ensembles d'études connexes

FINC 3610 Final ExamWhich of the following is true of sole proprietorships and corporations?

View Set

Ch. 9 Examination and Treatment Areas (MA 106)

View Set

Ch. 13: Decentralization and Shared Governance

View Set

Chapter 10 (Projectile and Satellite Motion) Test Review

View Set

Astronomy Hw/Practice Questions Unit 4

View Set

Information Security and Assurance - C725 - Chapter 10 Access Control Systems and Methodology

View Set