COSC3810 -- Midterm Review

Ace your homework & exams now with Quizwiz!

What is test-first development?

This approach is where the program is tested after every change has been made. -Tests are written before code, which clarifies requirements

What is a software engineering code of ethics?

Developed by the professional societies in the US. The Code contains 8 principles related to the behavior of and decisions made by professional software engineers, including practitioners, educators, and anyone else who develops software

Requirements elicitation is a non iterative process that can be represented as a spiral of activities -- requirements discovery, requirements classification and organization, requirements negotiation and requirements documentation. (T/F)

False

Requirements specification does not formally document the user and system requirements. (T/F)

False

Scrum is an agile method that does not provide a project management framework. (T/F)

False

The SEI process maturity framework identifies maturity levels that essentially correspond to the use of any software engineering practice. (T/F)

False

Why is it increasingly irrelevant to distinguish between software development and evolution?

Fewer and fewer systems are completely new

What are the two fundamental types of software product?

Generic products - stand-alone systems that are marketed and sold to any customer Customized products - software that is commissioned by a specific customer to meet their own needs

What is a Scrum sprint?

-A sprint is a development iteration -Sprints also tend to be 2-4 weeks long

What UML diagram types do you need to represent the essential features of a system?

-Activity diagrams -Case diagrams -Sequence diagrams -Class diagrams -State diagrams

What are the advantages of using incremental development and delivery?

-Customer value can be delivered with each increment, so system functionality is available earlier -Early increments act as a prototype to help elicit requirements for later increments -Lower risk of overall project failure -Highest priority system services tend to receive the most testing

What perspectives should be used for developing models for a software system?

-External perspective -Interaction perspective -Structural perspective

Name three important agile techniques.

-Extreme programming -Test-first development -Pair programming

What are the shared characteristics of different agile methods of software development?

-Focus on code rather than design -Based on iterative approach to software development -Intended to deliver working software quickly and evolve this quickly to meet changing requirements

What are the identified levels in the SEI's Capability Maturity?

-Initial -Repeatable -Defined -Managed -Optimizing

List 4 questions that should be asked when deciding whether or not to adopt an agile method of software development.

-Is it important to have a very detailed specification and design before moving to implementation? -Is an incremental delivery strategy, where you deliver the software to customers and get rapid feedback from them, realistic? -How large is the system that is being developed? -Are systems that are developed using an agile approach maintainable, given the emphasis in the development process of minimizing formal documentation?

What are the two different approaches to process improvement and change that has been proposed?

-Process maturity approach: focuses on improving process and project management and introducing good software engineering practice -Agile approach: focuses on iterative development and the reduction of overheads int he software process

For what types of system are agile approaches to development particularly likely to be successful?

-Product development where a company is developing a small or medium-sized product for sale -Custom system development within an organization, where the customer is committed to being involved in development process and few external rules and regulations to affect software

What are the possible problems of test-first development?

-Programmers prefer programming to testing and sometimes take short cuts when writing tests -Some tests can be very difficult to write incrementally -Difficult to judge the completeness of a set of tests

What are the barriers to introducing agile methods into large companies?

-Project managers may be reluctant to accept the risks of a new approach -The established quality procedures in large companies may be incompatible with the informal approach to documentation in agile methods -The existing teams may not have the high level of skills to make use of agile methods -There may be cultural resistance if there is a long history of plan-driven development in the company

What are the principal requirements engineering activities?

-Requirements elicitation and analysis -Requirements specification -Requirements validation

What are the development stages in integration and configuration?

-Requirements specification -Software discovery -Software evaluation -Requirements refinement

What are the barriers to introducing agile methods into large companies?

-Scaling up agile methods involve larger, longer projects where there are multiple development teams, which could possible be working in different locations -Informality of agile development is incompatible with the legal approach to contract definition that is commonly used in large companies

**What are three key characteristics of the engineering of web-based software engineering?

-Software reuse is the principle approach for constructing web-based systems -Requirements for those systems cannot be completely specified in advance -Service-oriented approach is usually sued for system construction

What are the four fundamental activities in software processes?

-Software specification -Software development -Software validation -Software evolution

What are three benefits of incremental development, compared to the waterfall model?

-The cost of accommodating changing customer requirements is reduced -Easier to get customer feedback on the development work that has been done -More rapid delivery and deployment of useful software to the customer is possible

List the 5 principles of agile methods:

1. Customer involvement 2. Incremental delivery 3. People not process 4. Embrace change 5. Maintain simplicity

What are the 4 general issues that affect many different types of software?

1. Heterogeneity: software may have to execute on several different types of system 2. Business and social change: which drives requirements for software change 3. Security and trust: our software systems have to be secure against external and internal threats so that we can trust those systems. 4. Scale: software may have to be developed across a range of scales e.f. small systems in portable devices to Inter-scale systems

Name three important agile techniques that were introduced in extreme programming?

1. Requirements expressed as scenarios or user stories, Refactoring -Pair programming -Test-first development

What are three key characteristics of the engineering of web-based software engineering?

1. Software reuse, which is the dominant approach for constructing web-based systems 2. Incremental and agile development, where web based systems should be developed and delivered incrementally 3. Service-oriented systems, where software may be implemented using service-oriented software engineering where the software components are stand-alone web services

What is software engineering?

An engineering discipline that is concerned with all aspects of software production

Why has the Scrum agile method been widely adopted in preference to methods such as XP?

Benefits: -Product broken down into set of manageable and understandable chunks -Unstable requirements do not hold up progress in comparison to XP -Whole team has visibility of everything and consequently team communication is improved -Customers also see on-time delivery of increments and gain feedback on how the product works

What is the distinction between computer science and software engineering?

CS focuses on theory and fundamentals while software engineering is concerned with the practicalities of developing and delivering useful software

What are the four fundamental activities in software processes?

Software specification, software development, software validation, and software evolution

What are the four general issues that affect many different types of software?

Security and trust, scale, heterogeneity, and business and social change

Why are iterations usually limited when the waterfall model is used?

Since the waterfall model partitions the process into distinct stages, it is much harder to respond to changing customer requirements or make changes. Also, a phase must be fully completed before moving onto the next phase.

What are the fundamental activities that are common to all software processes?

Specification, design and implementation, validation, and evolution

List 5 different types of software application.

Stand-alone applications, interactive transaction-based applications, embedded control systems, batch processing systems, and entertainment systems

What software engineering fundamentals apply to all types of software systems?

Systems should be developed using a managed and understood development process, dependability and performance are important, understanding and managing the software specification and requirements are important, and where appropriate reuse software

What are the essential attributes of good software?

The attributes are delivering the required functionality and performance to the user, and the software should be maintainable, dependable, and usable

Functional requirements are statements of the services that the system must provide or are descriptions of how some computations must be carried out. (T/F)

True

Scaling agile methods for large systems is difficult. (T/F)

True

Software engineers have responsibilities to the engineering profession and society. They should not simply be concerned with technical issues. (T/F)

True

Sofware evolution takes place when you change existing software systems to meet new requirements. (T/F)

True

State diagrams are used to model a system's behavior in response to internal or external events. (T/F)

True

The fundamental notions of software engineering are universally applicable to all types of system development. (T/F)

True

List 3 generic process models that are used in software engineering?

Waterfall model, incremental development model, and integration and configuration model


Related study sets

NU140- Chapter 7 Legal Dimensions of Nursing Practice

View Set

10 Characteristics of Data Quality

View Set

Airway management practice challenge 1,2,3

View Set

Animal Farm Vocabulary Chapter 1-10

View Set