Final Exam Flashcards

1
Q

Describe architecture in the small…

A

concerned with the architecture of individual programs; is there a database, user interface; how is the program decomposed into components

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Describe architecture in the large…

A

concerned with the architecure of the complex enterprise systems that include other systems; how is the work distributed over the various components; communication between networks, on the same system, and what are the pieces involved in; ex. front end interaction with users and what those interactions cause the back end to do; individual pieces and what is allowed in their connections

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Describe the five parts of the 4+1 View Model of Software Architecture…

A

***for both design and documentation, you usually need to present multiple views of the software architecture

logical view - shows key elements as classes and objects

process view - how is the running system going to work; what is the communication between objects; how does the data flow from when the user enters it to when it ends up in the database

development view - how is the software broken down for the use of the programs; hierarchy of class; what utilities should be provided; how the piece should be structured to get it to work

physical view - what portions of hardware will the system use; distribution; display system

use case diagrams will link together views

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Describe what architectural patterns are…

A

Patterns are a means of representing, sharing and reusing knowledge. An architectural pattern is a stylized description of a good design practice, which has been tried and tested in different environments. Patterns should include information about when they are and when the are not useful. Patterns may be represented using tabular and graphical descriptions.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Describe the three main activities of configuration management…

A

version management - tracks current and previous version of the file; can roll back to a previous version; prevents undoing of work; throw this out and roll back to previous version

system integration - do compilations; link software; specify what version of components are used

problem tracking - keep track of errors reported - which development team and users; developers can grab bugs and indicate that they’re working on those bugs to fix them

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Describe open source development…

A

idea is to make code open and useable with the expectation that companies will make money through support rather than making money from code development; upload new versions; everyone can contribute to the development of systems; ex. Linux os - paying for support not product, Java, Apache web server, mySQL database management system - people write and maintain these, one person oversees - are changes really enhancements, but others can make changes; shift from development costs to maintenance cost

business model - can develop code faster and cheaper; people working on it want the facilities the program provides; group of people who collectively wrote software to collectively use it

licensing - just because it’s free, doesn’t mean there isn’t a license involved!; whoever wrote the code still owns the code

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Describe the two goals of program testing…

A

Ans

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What are the two goals of program testing?

A

Ans

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is verification?

A

showing that the program functions correctly; program that works perfectly, but doesn’t satisfy user needs isn’t helpful; are we building the product right

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is validation?

A

have a test for every requirement - functional and non-function requirements (ex. task done in a certain amount of time); once system is mostly complete or complete, agile testing would be done in increments; are we building the right product

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Describe the four goals of successful project management…

A

delivered on time - customer view

within budget - development company view

met all of customers expectations and needs

maintain a good function developing team - work well together and to the best of their abilities

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Describe the the project management activity of ‘project planning’…

A

project planning - time the project will take, deadlines, who is assigned to what tasks

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are the five project management activities?

A

project planning

risk management

people management

reporting

proposal writing

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Describe the the project management activity of ‘risk management’…

A

ans

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Describe the the project management activity of ‘people management’…

A

sometimes project managers pick the people on their team, or may have permission to hire new people - who would be best in terms of skill and background, or no role in that - only one development team - this is what you have to work with; put in structures and ways of working and behaviors to make the team as effective as possible

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Describe the the project management activity of ‘reporting’…

A

ans

17
Q

Describe the the project management activity of ‘proposal writing’…

A

ans

18
Q

Describe the problems associated with the project management activity of ‘people management’…

A
  • consistency - treat team members in a comparable way; people that are more important to the team - who is responsible for the subdivisions? - they will be treated different as they have more authority and knowledge than other team members
  • respect - all can contribute despite strengths and weaknesses
  • inclusion - include everyone in the development process
  • honesty - what’s going well and what’s going bad
19
Q

Describe ‘transaction processing applications’.

A

data-centered applications that process user requests and update information in a system database

information processing that is divided into individual, indivisible operations called transactions. Each transaction must succeed or fail as a complete unit; it can never be only partially complete.

20
Q

Give and example of a ‘transaction processing application’…

A

ATM - The output, for example, may be an operation that dispenses $100 from the ATM. If the system dispenses the $100 before the transaction commits, and the transaction ends up aborting, then the bank gives up the money but does not record that fact in the database. If the transaction commits and the system fails before it dispenses the $100, then the database says the $100 was given to the customer, but in fact the customer never got the money. In both cases, the transaction’s behavior is not all-or-nothing.

21
Q

Describe context and interaction models…

A

how the software will be used and who will be using it (context); how system interacts with things in its environment (interaction); demonstrate through use cases; ex. weather station, stations collect data that is transmitted to a central point for processing; start, restart, configure

22
Q

Describe one way to identify object classes, their attributes, and methods…

A

grammatical approach - based on natural language description of the system; look at description of project and identify all the nouns in the description, nouns becomes object classes and their attributes, while verbs become methods for classes

23
Q

Describe what design patterns are and why are they useful…

A

looked at patterns at a lower level of design process - patterns for methods, classes; if there are certain ways of developing software we should develop it and customize it to specific problem; don’t have to think about how to structure, just have to plug in at concrete level what’s involved in the system

24
Q

What are the elements of design patterns?

A

name - pattern identifier

description - what were going to do with it; maps onto the motivation of why we want to use it

problem description - how does this apply to the problem

solution description

consequences - what will result from using the pattern and what will be problematic; what are the ripple effects; ex. abstract coupling

25
Q

Describe the problems associated with open source development…

A

should we use open source? look at repositories of software that someone has already written vs. in house development

if you develop a program using open source code, you should then open source your code

26
Q

What do verification and validation do?

A

establish confidence in the system; user expectations; software purpose - ex. Microsoft; marketing environment

27
Q

What are program inspections and why are they useful?

A

aka. code reviews - useful ways of doing defect testing; these can identify approximately 60% - 90% of defects in software - find program errors effectively; do not require execution of a system and can be done prior to completion of program

28
Q

Why are the advantages of program testing?

A

errors can mask other errors - if overall behavior is correct, are those really errors, YES!, different call orders may cause errors

software doesn’t have to be complete, but must mimic code that isn’t complete (specialized test harness)

quality attributes - compliance with standards, portability, and maintainability; how to rework code so that it’s easier to understand and easier to rework in the future

29
Q

Describe automated unit testing and its value…

A

when ever there is a change, we want to run all of tests (regression testing), want to build a collection of tests into development system

value - if test fails on new increment, you know where the problems lies; allows for continuous integration and deployments

30
Q

Describe partition testing…

A

when we look at an algorithm, we identify categories of inputs, can’t try every possible input, so we look for groups of values that should behave similarly, should only have to call with one or two values from the collection, ex. negative numbers, positive numbers, zero - run with a few negative numbers and positive numbers and a few zeros; can also look at output that a method will produce - try different input to cause different outputs; if we choose a few things from the partition, would indicate the the whole thing is correct - this includes valid and invalid input - make sure that something isn’t corrupting the data; varies with how much data is passed to the method

- guidelines
    - arrays with single value
    - arrays with different sizes
    - first, middle, last elements are tested
    - testing on all errors - make sure they are caught properly
    - ***fall under the notion of stress testing - push the system to its limits; ex. buffer, push things into the buffer until it overflows - how does it handle that event
31
Q

Describe guideline-based testing…

A

what types of things cause errors and where do those errors occur

boundary testing, ex. testing student programs, code input should be between 1 - 10, problems occur at 0, 1, 10 , 11, inside boundary, outside boundary, test extremes, reading from the file - first line and last line of file read correctly

32
Q

Describe the difference between evolution and servicing/maintenance…

A

evolution - may be finding errors, new requirements; lots of changes to requirements in this stage; what is the impact of the hardware, software, business processes - global effects, plan the release and implement the change

servicing - bug fixes; only critical changes; no new added functionality; can stay in this state for a long time - legacy systems, sometimes the hardware will stay around to support the legacy systems through federal subsidies

33
Q

Describe the handover problems between agile and plan-based development (both directions)…

A

agile development but plan-based evolution - evolution team expects detailed documentation but it’s not produced in agile processes

plan-based development but agile evolution - evolution team may start development with creating of automated tests; system code may not have been refactored and simplified; aren’t interested in documentation, but rather, automated tests; tests wouldn’t be delivered with the software

34
Q

Describe what a legacy system is…

A

older systems rely on languages and technology that is no longer used - system hardware, support software; system is out of date or in need of replacement - replacement is risky and expensive; been maintained over a long period of time, so the structure has been degraded - difficult to maintain; may have legacy processes and procedures

35
Q

Describe refactoring…

A

technique to improve the quality of existing code. It works by applying a series of small steps, each of which changes the internal structure of the code, while maintaining its external behavior. You begin with a program that runs correctly, but is not well structured, refactoring improves its structure, making it easier to maintain and extend. Reduces problems with future change!

always look for improvements throughout development and evolution process; ex. rename attributes and methods, reorganize class hierarchy