2024-12-04T16:58:04+03:00[Europe/Moscow] en true <p>Define phase</p>, <p>Define lifecycle</p>, <p>Define ethnography</p>, <p>Define use case</p>, <p>Define plan</p>, <p>Define design</p>, <p>Define scenario</p>, <p>Define Test Driven Development</p>, <p>Define lifecycle families/models</p>, <p>Waterfall model phases</p>, <p>In the waterfall model, can the phases be done out of order?</p>, <p>True or false: In the waterfall model, several phases can be worked on at once</p>, <p>True or false: In the waterfall model, the project cannot go back to a previous phase</p>, <p>Difference between waterfall model and iterative waterfall model</p>, <p>Circular iterative model diagram</p>, <p>Agile models: general features</p>, <p>Functional requirements definition</p>, <p>Non-functional requirements definition</p>, <p>Trick to tell apart functional from non-functional requirements</p>, <p>Technical and legal issues that might prevent what the customer wants frombeing implemented fall into what category of the requirements?</p>, <p>Requirements phase: specifications definition</p>, <p>Spiral model phases/diagram</p>, <p>User story definition/example</p>, <p>3 main uses of the requirements document</p>, <p>Internal/External plans definition</p>, <p>logical and physical views in software architecture + meanings</p>, <p>Architectural scenario definition</p>, <p>Provess and development views in software architecture + meanings</p>, <p>4 qualities of a good design</p>, <p>Meaning of reuse in implementation phase</p>, <p>Define coupling</p>, <p>6 types of coupling from best to worst, + definitions</p>, <p>6 types of cohesion (of elements within a module) from best to worst, + definitions</p>, <p>Define software measurement</p>, <p>3 areas for software measurement</p>, <p>Software measurement: factors/constraints that make make development harder can be distilled into ______ _______. These are usually used in planning.</p>, <p>Notes software measurement</p>, <p>Software measurement: brief definition of Planning, Monitoring and Managing</p>, <p>Software measurement brings us from the idea of ________ to _________</p>, <p>Cyclomatic complexity (M) formula with edges (E) and nodes (N)</p>, <p>Reasons why software monitoring is so hard</p>, <p>Why is it so hard to measure progress in software projects?</p>, <p>Bitterman’s First Law of Software Metrics</p>, <p>Goodhart's Law</p>, <p>Bitterman's Law of Measurement</p>, <p>Testing: verification vs validation</p>, <p>Code inspections are part of (verification/validation?) testing</p>, <p>Functional testing, non-functional testing, sanity testing are part of (verification/validation?) testing</p>, <p>What does the scribe do during code inspection</p>, <p>Who in the company should never be a part of code inspection?</p>, <p>Test doubles definition</p>, <p>Test doubles examples</p>, <p>4 types of maintenance + definitions</p>, <p>Regression Tests definition</p>, <p>TDD definition</p>, <p>Design degradation definition</p>, <p>What is used to counteract design degradation and too much dependency management</p>, <p>Dependency management/maintenance definition</p>, <p>_________ ________ should be created to manage dependencies between modules in an application</p>, <p>SOLID acronym</p>, <p>Open/Closed principle definition</p>, <p>Liskov Substitution definition</p>, <p>Interface segregation definition</p>, <p>What SOLID principle is being violated here?</p>, <p>What SOLID principle is being violated here?</p>, <p>What SOLID principle is being violated here?</p>, <p>Dependency Inversion definition</p>, <p>Waterfall model: The work product for each phase is a typically a __________</p>, <p>4 main ideals of agile</p>, <p>5 Xp values</p>, <p>What lifecycle does the planning game belong to</p>, <p>3 Xp practices</p>, <p>Xp: define continuous integration</p>, <p>What lifecycle does collective code ownership (anyone can refactor code) belong to</p>, <p>Xp: An iteration is the time during which a team will work on a ....</p>, <p>Parts of an iteration (Xp)</p> flashcards
Software Engineering and Architectures

Software Engineering and Architectures

  • Define phase

    a set of related activities that occur around the same time

  • Define lifecycle

    a set of phases and rules for changing between them

  • Define ethnography

    observation of people involved in the business process the system is meant to integrate with

  • Define use case

    a description of some piece of system functionality as a series of steps (a story), as understood/observed by a user of the system

  • Define plan

    a description of how limited resources (money, time, people) are to be deployed in order to accomplish a goal

  • Define design

    the process of breaking a problem into pieces and defining those pieces and the interfaces between them, with the aim of enabling software development

  • Define scenario

    shows how a use case can be implemented, given the architecture

  • Define Test Driven Development

    a development process in which the test is written before the code

  • Define lifecycle families/models

    Groups of lifecycles that are very similar

  • Waterfall model phases

    RDI TDM

    Requirements

    (Analysis)

    Design

    Implementation

    Testing

    Deployment

    Maintenance

  • In the waterfall model, can the phases be done out of order?

    No

  • True or false: In the waterfall model, several phases can be worked on at once

    False

  • True or false: In the waterfall model, the project cannot go back to a previous phase

    True

  • Difference between waterfall model and iterative waterfall model

    In iterative models, you can go back and forth between phases

  • Circular iterative model diagram

  • Agile models: general features

    The number and names of the phases can differ, but the common features are:

    - Spend a minimal amount of time understanding the end goal

    - Instead, build something based on what is known now

    - Get feedback based on what has been built in order to understand problem

    better

    - Use feedback to improve system

    - Until the user is happy (or out of money)

    -Coding and testing intermingled

    - You can change to whatever phase allows you to make progress

  • Functional requirements definition

    • Statements of services the system should provide, how the system should reactto particular inputs and how the system should behave in particular situations

    • May also state what the system should not do

  • Non-functional requirements definition

    • Constraints on the services or functions offered by the system such as timingconstraints, constraints on the development process, standards, etc.

    • Often apply to the system as a whole rather than individual features or services

    •Eg. response time must be under 0.5 seconds; System must not crash when user cancels order

  • Trick to tell apart functional from non-functional requirements

    If you can point to a piece of code that makes something happen, that somethingis probably a functional requirement• If something is a limitation on how something can be implemented, or is theresults of many parts of the system interacting, that something is probably a non-functional requirement

  • Technical and legal issues that might prevent what the customer wants frombeing implemented fall into what category of the requirements?

    Specifications

  • Requirements phase: specifications definition

    TLDR: How exactly the system must achieve the requirements

    Specifications are the detailed descriptions of both functional and non-functional requirements. They translate high-level requirements into precise, actionable guidelines for developers and testers. Specifications clarify the behavior of the system and how to achieve desired performance or standards.

    For functional requirements: A specification might describe exact input formats, error handling, and expected outputs. For example, a specification for the login feature could specify that the system must validate user credentials against a database and display an error message for incorrect logins.

    For non-functional requirements: A specification might define measurable goals such as "the application must process 100 transactions per second" or "encryption must be AES-256."

  • Spiral model phases/diagram

  • User story definition/example

    A user story is an informal, general explanation of a software feature written fromthe perspective of the end user or customer

    Eg. As a customer, I want to order a Big Mac because I am hungry

  • 3 main uses of the requirements document

    -        Basis of contract

    -        Basis of planning

    -        Basis for testing

  • Internal/External plans definition

    Internal: planning for the developers External: planning for the client/customer

  • logical and physical views in software architecture + meanings

    -  Logical

    -shows the system's functionality and how it is organized into components-the view most people think of when they think of a software architecture-typically represented using class diagrams, sequence diagrams, and

    activity diagrams

    -  Physical

    -shows the system's physical components and how they are interconnected-often minimal for software-only systems-can be useful for systems where part of the processing or storage

    happens in the cloud-Or for an embedded system, like a kiosk

    -typically represented using deployment diagrams and network diagrams

  • Architectural scenario definition

    shows how a use case can be implemented, given the architecture

  • Provess and development views in software architecture + meanings

    -  Process

    -shows the system's dynamic behavior, including how its componentsinteract with each other and with the environment-Useful for systems that engage in a lot of parallel processing-Or distributed systems where otherwise isolated components must

    interact periodically-typically represented using state diagrams and sequence diagrams

    -  Development

    -depicts a system from the standpoint of a programmer and is concerned

    with software organization and administration-typically includes:-Architectural layers-Communications paths-Packages-Starts to look like the logical view as details are added-Or on smaller systems

  • 4 qualities of a good design

    CorrectnessUnderstandabilityEfficiencyMaintainability

  • Meaning of reuse in implementation phase

    Using code/software that someone else wrote

  • Define coupling

    a measure of how much one piece of software depends on another

  • 6 types of coupling from best to worst, + definitions

    -Data

    -Same parameters/arguments used in different modules

    -Stamp

    - Modules share a composite data structure (eg. an Object), but not all the

    elements are used by each module

    -Control

    -One module controls the behavior of another module

    -External

    -The degree to which the system relies on external entities

    -Common

    -two or more modules in the system share (access/manipulate) global

    data

    - Content

    -one module directly accesses or modifies the content of another module

  • 6 types of cohesion (of elements within a module) from best to worst, + definitions

    -Functional

    -elements perform a single, well-defined task or function

    -Sequential

    -elements are arranged in a specific sequence, with the output of one

    element serving as the input for the next element

    -Communicational

    -elements operate on the same input data or share data through

    parameters, but the data itself is external to the module

    -Procedural

    -elements are grouped because they must happen in a particular order to

    achieve a singular goal but otherwise have nothing to do with each other

    -Temporal

    -elements are executed at the same time or within the

    same timeframe in order to fulfill some purpose, but don't have to

    happen in any particular order

    -Coincidental

    -Elements are not related to each other

  • Define software measurement

    Attempting to assign a numeric value to an attribute of asoftware project/process

  • 3 areas for software measurement

    Planning, Development, Testing/QA

  • Software measurement: factors/constraints that make make development harder can be distilled into ______ _______. These are usually used in planning.

    function points

  • Notes software measurement

    One way to measure code complexity is to use cyclomatic complexity, which usually involves creating a control graph of the program's logic and computing an equation that uses the number of nodes and edges

  • Software measurement: brief definition of Planning, Monitoring and Managing

    -        Planning (how do we think it might go?)

    -        Monitoring (how is it going?)

    -        Managing (how can it be controlled?)

  • Software measurement brings us from the idea of ________ to _________

    Planning, Monitoring

  • Cyclomatic complexity (M) formula with edges (E) and nodes (N)

    M = E – N + 2

  • Reasons why software monitoring is so hard

    -        Every project is new

    -        Many managers have never coded

    -        So much money is on the line

    -        Difficult to change course

    -        Time pressure

    -        Programmer misjudgment due to optimism

    -        History of failure in software projects

  • Why is it so hard to measure progress in software projects?

    -        Setbacks are inevitable

    -        Change affects reqs and goals

  • Bitterman’s First Law of Software Metrics

    Any measure of coding productivity will punish better coders

  • Goodhart's Law

    When a measure becomes a target, it ceases to be a good measure

  • Bitterman's Law of Measurement

    Never be measured

  • Testing: verification vs validation

    -        Verification: defects in construction

    -        Validation: defects in functionality

  • Code inspections are part of (verification/validation?) testing

    verification

  • Functional testing, non-functional testing, sanity testing are part of (verification/validation?) testing

    validation

  • What does the scribe do during code inspection

    Records results

  • Who in the company should never be a part of code inspection?

    Managers

  • Test doubles definition

    programming constructs used in testing to simulate the behavior of real objects or components

  • Test doubles examples

    Dummy, Stub, Mock, Fake

  • 4 types of maintenance + definitions

    Perfective

    -Aims to add new features over time

    Corrective

    -Aims to fix bugs

    Adaptive

    -Modifying the software system to adapt to changes in the environment

    Preventive

    -Modifying the software to prevent future problems

  • Regression Tests definition

    • The single most important thing a fix can do is not break anything that previouslyworked• The best way to ensure this is to run every test against each new fix to see whathappens• The best way to do that is to automate running all tests• When tests are used this way they are called regression tests, and the process ofrunning them automatically is called automated regression testing

  • TDD definition

    Test Driven Development

    - A way of building software where the tests are written first- TDD checks units one by one

    - Both tests and units should be small

  • Design degradation definition

    Degradation of software design- Caused by changing requirements- This results in changes to software that violate the original design philosophy (i.e.hacks)- Also known as design rot

    • It is not that the design has gotten worse• It is that the problem has changed, and the original design is no longer such a good fit

  • What is used to counteract design degradation and too much dependency management

    SOLID

  • Dependency management/maintenance definition

    The process of minimizing dependencies, and understanding the remainingones

  • _________ ________ should be created to manage dependencies between modules in an application

    dependency firewalls

  • SOLID acronym

    Simple responsibility principle

    Open/Closed principle

    Liskov Substitution

    Interface Segregation

    Dependency Inversion

  • Open/Closed principle definition

    software entities should be open for extension, but closed for modification (extension does not require modification)

  • Liskov Substitution definition

    Derived classes must be substitutable for their base classes

  • Interface segregation definition

    Clients should not be forced to depend upon interfaces that they do not use

  • What SOLID principle is being violated here?

    Interface segregation

  • What SOLID principle is being violated here?

    Liskov Substitution

  • What SOLID principle is being violated here?

    Open/Closed

  • Dependency Inversion definition

    A Class should depend on Abstraction, not Implementation

  • Waterfall model: The work product for each phase is a typically a __________

    document

  • 4 main ideals of agile

    Individuals and interactions over processes and tools

    Working software over comprehensive documentation

    Customer collaboration over contract negotiation

    Responding to change over following a plan

  • 5 Xp values

    Communication

    Simplicity

    Feedback

    Courage

    Respect

  • What lifecycle does the planning game belong to

    Xp

  • 3 Xp practices

    Pair Programming, Test-Driven Development, and Continuous Integration

  • Xp: define continuous integration

    Check in code early, check in code often.

  • What lifecycle does collective code ownership (anyone can refactor code) belong to

    Xp

  • Xp: An iteration is the time during which a team will work on a ....

    set of cards

  • Parts of an iteration (Xp)

    planning (The planning game), coding (sitting together, with an on-site customer), testing, and delivering a working increment of the product. Meetings at the beginning and end of an iteration.