Software Engineering - Midterm

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

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

-A unit test is a test written by the programmer to verify that a relatively small piece of code is doing what it is intended to do. They are narrow in scope, they should be easy to write and execute -An integration test is done to demonstrate that different pieces of the system work together. Integration tests cover whole applications, and they require much more effort to put together. They usually require resources like database instances and hardware to be allocated for them

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 recompliation, -tracks dependencies, -written in a programming language that will look familiar to most developers.

What is the difference between multiplicity and cardinality?

-Cardinality is used to specify how many entities are linked together. -Multiplicity tells you the minimum and maximum allowed members of the set.

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

-Use cases describe how an actor may achieve their goals using the application. -User stories document requirements from a users perspective by speaking from the point of view of the actor involved. -Use cases require some degree of expertise or technical proficiency, while user stories are 'dummy proof'

What labels should an Issue that represents a user story in the current Sprint Backlog have (give the complete set)?

1 sprint backlog and 0 product backlog

What labels should an Issue that represents a task that is currently under development have (give the complete set)?

2 in process and task

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

A benefit of test-driven development is code coverage- every bit of code has a test developed for it before the code to be tested has even been written

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

A short explanation of the purpose of the change in present tense. If the change addresses known changes requests, include bug/issue tracking number in the commit message.

What is a Spike, and how does it differ from a User Story?

A spike is a task that isn't related to a user story since it's not connected to an end user. (testing, for example)

What are Acceptance Criteria?

Acceptance Criteria is the agreed upon definition of "done" for each user story

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 -Activity diagrams are used to explore the logic and steps of complex multi-step processes, including those involved in a particular use case or multiple use cases.

Who is widely regarded as the first computer programmer (based on what is known from comments written in 1843)?

Ada Lovelace

Who is the first programmer to realize the need for 'librarian types' to keep software development on track (based on comments written in 1947)?

Alan Turing

Use cases *always* include...

All interactions each actor will have with the system

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

Allows third party plug-in developers to add integrate with any tool that can be executed from the command line

Is automation ethical?

As population grows, automation is necessary to make sure everyone has access to necessities. It is also beneficial to have these technical skills while working machines.

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

Because 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

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

Code analysis that doesn't require execution of the code. we have discussed ESLint, JSLint, Pylint

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

Continuous integration offers the advantage of discovering problems rapidly and always maintaining a shippable version of the product

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

Domain model

Describe the trunk-based Git workflow and how it compares with the feature branch workflow.

Feature based is that everything should be kept in a branch until completion. Trunk based instead has changes all made to the change continuously, or in smaller chunks.

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

Forking is github specific. Creates a clone that goes straight to the github account

When setting up Jenkins to repeatedly poll a source code repository, where does that strange scheduling syntax, like 'H/15 * * * *' come from?

From the time it's scheduled to run

Can Git be used in a Centralized workflow?

Git is decentralized but can be used in a centralized work flor

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

Git staging is middle group between local copies of code and the main repository. Any modified files that you want in your repository can be added to the staging area after they're done being edited on your local machine. Later, they can be committed to the repository. Valuable because you can select certain files to commit

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

Github, Slack

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

Grooming product backlog - changing product specifications in the middle of a sprint Sprint review - team re-prioritizes and restructures user stories and backlog Communication with product owner - any changes with the client are known quickly.

Why is software engineering a necessary and useful discipline. Give 3 specific reasons

Having a standard system helps onboard new developers. Additionally, it makes it easier for a large scale system to run efficiently. Client expectations can be met easier since certain expectations of the process have been established. Finally, you're less error prone .

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

In order 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.

Why is there a difference in how often refactoring must be done in iterative vs. waterfall methodologies?

In waterfall, you're not making incremental changes. Since you know what the project is, you don't need to make code "better"

User Acceptance Testing is a form of...

Integration Testing

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

Javascript

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

Who created the first unit testing framework, and what programming language was it created for?

Kent Beck, Created for java

Who invented Git?

Linus Torvalds

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

Load testing usually refers to making sure the system behaves as expected at the anticipated 'normal' load level stress testing usually refers to subjecting the system to more than the anticipated load and seeing what happens under extreme circumstancesWhat is the relationship between load testing and stress testing of a system?

Which build tools that we've learned about have a built-in ability for minimal recompilation of source code?

Make, Ant, Maven, Gradle

Which build systems that we've discussed host an officially-supported repository of plug-ins?

Maven, Gradle, Grunt

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

Mocking is primarily used in unit testing. An object under test may have dependencies on other (complex) objects. To isolate the behaviour of the object you want to test you replace the other objects by mocks that simulate the behavior of the real objects

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

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

No No Yes

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

No ideal ratio for all projects

Would he/she be regarded as a software engineer, in today's understanding of the title? Why or why not?

No, because there wasn't a system of software engineering and she wasn't writing code.

Is the Agile manifesto the first attempt to create an iterative software engineering methodology?

No, extreme programming was the first well regarded methodology. This included continuous integration, unit testing, and short coding cycles.

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

Product owner, with the help of the scrum master and the developers

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

Project is broken into smaller chunks and the team can consistently groom the backlog and re-factor the sprints. This, along with the daily stand ups to stay up to date on progress, takes out the uncertainty of time estimates and blockers.

What is refactoring of code, and when is it performed in iterative software engineering methodologies?

Refactoring is any changes you make to a code, usually when you're adding updates or making code better.

What is 'regression testing'?

Regression testing is a term to describe the re-running of old tests (whether unit or integration tests) after making changes to a system, in addition to the new tests that test the new functionality.

How does 'Scrum' relate to 'Agile'?

Scrum was inspired by Agile's activities and short coding schedule. -Scrum is just one of the many iterative and incremental agile software development method

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 -Sequence diagrams show the interactions that are necessary between objects, and the order in which those interactions occur, in order to achieve a desired goal

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

Since making changes is so difficult, they're often avoided. This can mean sloppy code or bugs.

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

So that everyone involved can understand the requirements (client, user, etc)

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

Specifications - creating user stories and an idea of how the system should function Development - designing and programming the software, breaking things up into tasks Validation - testing to validate that software works Evolution - evolution of code, refactoring if necessary.

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

Stakeholder- anyone with vested interest on the project. Important to engineers because they are usually the client, or connected to the client, so they must agree to the project.

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 -State chart diagrams indicate the behavior of an entity in response to specific events. This can be especially useful for modeling real-time systems, or systems whose behavior heavily depends upon asynchronous events.

How does Git differ from Subversion?

Subversion is centralized, while github has many independent versions. Because of this, in Subversion you can't roll back entire repositories easily.

Does Grunt perform minimal recompilation of code?

TODO

How does 'continuous deployment' compare with 'continuous delivery'?

TODO

How does 'continuous integration' compare with 'continuous deployment'?

TODO

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

Testing just a unit creates a set of test cases to accurately test the components including testing core functions and methods by giving them both valid and invalid inputs to see if they return the proper output. it is much easier to debug a unit than a larger amount of code.

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

The smallest testable piece of code in a system

What perceived problem was this conference organized to address?

There were many software problems due to the multitude of methods. Wanted to maintain a consistent approach to engineering

How are new User Stories that are conceived of during a Sprint handled, and when does this happen?

They can be added during backlog grooming

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

They're moved back to the product backlog, where they're re-prioritized.

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

To reflect the inherent uncertainty in estimating larger items

Which of the following are considered "user requirements"?

User stories, use cases

What labels should an Issue that represents a user story in the Product Backlog have (give the complete set)?

User story label, 0 product backlog

Why do more modern build systems not use XML?

XML today is generally considered to be an overly verbose markup language with a lot of redundancy. Some XML build scripts can seem unnecessarily complex

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

You know the entire requirements and cost up front. However, difficult to re-scope and make changes, since a new budget and plan will have to be established.

Describe the Git workflow followed by many open source projects on GitHub?

You make your own clone and pull your clone and make your changes. You commit/pull to your own clone. Then, you make a pull request to the master. This can be accepted/rejected.

Define continuous integration, including all steps

continuous integration allows developers to merge code many times a day into a shared repository. Every time there's another merge, it's checked by automated testing

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

continuous integration, continuous delivery and continuous deployment allow end-users-the users of the system-to get the value of the work more quickly to solve business needs more rapidly and with agility

What tasks can bash scripts perform that are of use in continuous integration workflows?

helpful in automation of backups and deploys, which help make continuous integration (and the testing that it requires) so easy.

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

limits the scope and focus and allows you to find bugs easier and leads to better code overall. -Find and address bugs more quickly, reduce code review time, build stuff faster, reduce feedback time

Whose job is it to maintain the Task Board?

product owner

Why should the Product Owner ideally not also act as a Developer?

product owner represents the user and should be developing user stories from the user's point of view. They also usually work for the client or stakeholder and being a developer could create a conflict of interest between developer and client interests.

Describe the management responsibilities of the Scrum Master

reinforces practices of scrum for developers and product owners, helps PO understand how to enter user stories to backlog, facilitates sprint planning and daily scrum, helps development team understand acceptance criteria and time estimates

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

solves the problems of waterfall (difficulty to re-scope or change the project). Accommodates the idea of changing scope and features.

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

to avoid merge conflicts and in order to merge your new code with previous changes in the repository

Give two reasons why Brooks' Law may not apply to today's software development teams

version control has simplified how developers interact and continuous interaction has automated many tasks

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

when someone makes a pull request, it checks this file to make sure it's been done correctly.


Ensembles d'études connexes

Natural History Self test 1,2,3 and Quiz 1

View Set

The Ultimate Exam Study Guide Stat 226

View Set

Chapter 17 - Gene Expression: Gene→Protein

View Set

Supply Chain Chapter 6 Strategic Sourcing

View Set

Comptia A+ Hard Drive Technologies

View Set