1/464
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No study sessions yet.
"The term ""software engineering"" was first suggested in what decade?"
1960s
"The software process includes all of the activities involved in software development. The high-level activities of specification, development, validation, and evolution are part of all software processes."
True
Software costs more to develop than it does to maintain.
False
The fundamental ideas of software engineering do not apply to web-based software in the same way that they apply to other types of software system.
True
System engineering is concerned with some aspects of the development and evolution of complex systems where software plays a major role.
False
It is now generally recognized that it is impractical to specify all the requirements for such systems in advance. Web-based systems are always developed and delivered incrementally.
True
What are the fundamental activities in software processes?
Software specification
Software design
Software development
Software validation
Software evolution
"Software is just a program or programs. It does not includes all electronic documentation that is needed by system users, quality assurance staff, and developers."
False
"There are many different types of system, and each requires appropriate software engineering tools and techniques for their development. All design and implementation techniques are applicable to all kinds of system."
False
"There are universal notations, methods, and techniques for software engineering."
False
"Computer science is concerned with the theories and methods that underlie computers and software systems, whereas software engineering is concerned with the practical problems of producing software."
True
What are the best software engineering techniques and methods?
“While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. There are no methods and techniques that are good for everything.”
What is the difference between software engineering and system engineering?
System engineering is concerned with all aspects of computerbased systems development including hardware, software and process engineering. Software engineering is part of this more general process.
What are the costs of software engineering?
Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.
What is the difference between software engineering and computer science?
Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.
What are the attributes of good software?
“Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable."
What is software?
Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.
What is software engineering?
Software engineering is an engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance.
What differences has the Internet made to software engineering?
"Not only has the Internet led to the development of massive, highly distributed, service-based systems, it has also supported the creation of an ?app? industry for mobile devices which has changed the economics of software."
What are the fundamental software engineering activities?
"Software specification, software development, software validation and software evolution."
What are the key challenges facing software engineering?
"Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software."
Software engineering is an engineering discipline that is concerned with all aspects of software production.
True
"The fundamental ideas of software engineering are applicable to all types of software system include managed software processes, software dependability and security, requirements engineering, and software reuse."
True
Entertainment systems
"These are systems for personal use that are intended to entertain the user. Most of these systems are games of one kind or another, which may run on special-purpose console hardware. The quality of the user interaction offered is the most important distinguishing characteristic of entertainment systems."
Systems for modeling and simulations
"These are systems that are developed by scientists and engineers to model physical processes or situations, which include many separate, interacting objects. These are often computationally intensive and require high-performance parallel systems for execution."
Batch processing systems
"These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs. Examples of batch systems are periodic billing systems, such as phone billing systems, and salary payment systems."
Embedded control systems
"These are software control systems that control and manage hardware devices. Numerically, there are probably more embedded systems than any other type of system. Examples of embedded systems include the software in a mobile (cell) phone, software that controls antilock braking in a car, and software in a microwave oven to control the cooking process."
Systems of systems
"These are systems, used in enterprises and other large organizations, that are composed of a number of other software systems. Some of these may be generic software products, such as an ERP system. Other systems in the assembly may be specially written for that environment."
Data collection systems
These are systems that collect data from their environment and send that data to other systems for processing. The software may have to interact with sensors and often is installed in a hostile environment such as inside an engine or in a remote location. ?Big data? analysis may involve cloud-based systems carrying out statistical analysis and looking for relationships in the collected data.
Stand-alone products
"These are application systems that run on a personal computer or apps that run on a mobile device. They include all necessary functionality and may not need to be connected to a network. Examples of such applications are office applications on a PC, CAD programs, photo manipulation software, travel apps, productivity apps, and so on."
Interactive transaction based systems
"These are applications that execute on a remote computer and that are accessed by users from their own computers, phones, or tablets. Obviously, these include web applications such as e-commerce applications where you interact with a remote system to buy goods and services. This class of application also includes business systems, where a business provides access to its systems through a web browser or special-purpose client program and cloud-based services, such as mail and photo sharing. Interactive applications often incorporate a large data store that is accessed and updated in each transaction."
What are the 4 general issues that affect many different types of software?
Heterogeneity
Business and social change
Security and trust
Scale
What are the essential attributes of good software?
Acceptability
Maintainability
Dependability
Security
Efficiency
What are the shared characteristics of different agile methods of software development?
"The processes of specification, design and implementation are inter-leaved."
The system is developed and delivered as a series of increments or versions.
Extensive tool support is used to support the development processes.
"Large systems need up-front design and some documentation and organizational practice may conflict with the informality of agile approaches, making agile difficult."
True
Validation processes are concerned with transforming a requirements specification into an executable software system.
False
Agile development methods emerged in the late 1990s whose aim was to radically reduce the delivery time for working software systems
True
Web-based systems should not be developed and delivered incrementally. It is now generally recognized that it is best to specify all the requirements for such systems in advance.
False
A software process model is an abstract representation of a software. It presents a description of a software from some particular perspective.
False
Requirements engineering is the process of developing a software design. Designs are intended to communicate the system needs of the customer to the system developers.
False
Prototypes should not be discarded after development because they are a good basis for a production system
False
"A self-organizing group of software developers, which should be no more than 7 people. They are responsible for developing the software and other essential project documents."
Development team
"This is a list of ?to do? items which the Scrum team must tackle. They may be feature definitions for the software, software requirements, user stories or descriptions of supplementary tasks that are needed, such as architecture definition or user documentation."
Product backlog
"The software increment that is delivered from a sprint. The idea is that this should be ?potentially shippable? which means that it is in a finished state and no further work, such as testing, is needed to incorporate it into the final product. In practice, this is not always achievable."
Potentially shippable product increment
"The ScrumMaster is responsible for ensuring that the Scrum process is followed and guides the team in the effective use of Scrum. He or she is responsible for interfacing with the rest of the company and for ensuring that the Scrum team is not diverted by outside interference. The Scrum developers are adamant that the ScrumMaster should not be thought of as a project manager. Others, however, may not always find it easy to see the difference."
ScrumMaster
An estimate of how much product backlog effort that a team can cover in a single sprint. Understanding a team?s velocity helps them estimate what can be covered in a sprint and provides a basis for measuring improving performance.
Velocity
A development iteration. Sprints are usually 2-4 weeks long.
Sprint
"An individual (or possibly a small group) whose job is to identify product features or requirements, prioritize these for development and continuously review the product backlog to ensure that the project continues to meet critical business needs. The Product Owner can be a customer but might also be a product manager in a software company or other stakeholder representative."
Product owner
"A daily meeting of the Scrum team that reviews progress and prioritizes work to be done that day. Ideally, this should be a short face-to-face meeting that includes the whole team"
Scrum
The agile manifesto values individuals and interactions over processes and tools; working software over comprehensive documentation; customer collaboration over contract negotiation; responding to change over following a plan
True
The waterfall model is a document driven model with documents produced at the end of every phase.
True
"The whole team attends short daily meetings (Scrums) where some team members share information, describe their progress since the last meeting, problems that have arisen and what is planned for the following day. "
False
"The principal responsibility of software project managers is to manage the project so that the software is delivered on time and within the planned budget for the project. Agile project management requires a different approach, which is adapted to incremental development and the practices used in agile methods. "
True
"Specification, design, implementation and testing are inter-leaved and the outputs from the development process are decided through a process of negotiation during the plan-driven software development process."
False
"In practice, most practical processes include elements of either plan-driven or agile approaches. "
False
Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan.
True
What are the possible problems of test-first development?
Programmers may take short-cuts when developing tests so that the system tests are incomplete.
Some tests can be difficult to write incrementally.
It is difficult to estimate the completeness of a test set.
Write test that do not test the actual code.
Does not guarantee improved code quality.
Embrace change
Expect the system requirements to change and so design the system to accommodate these changes.
Customer involvement
Customers should be closely involved throughout the development process. Their role is provide and prioritize new system requirements and to evaluate the iterations of the system.
Incremental delivery
The software is developed in increments with the customer specifying the requirements to be included in each increment.
People not process
The skills of the development team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes.
Maintain simplicity
"Focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system."
Test-driven development includes:
Writing tests before code clarifies the requirements to be implemented.
Tests are written as programs rather than data so that they can be executed automatically. The test includes a check that it has executed correctly.
"All previous and new tests are run automatically when new functionality is added, thus checking that the new functionality has not introduced errors."
Usually relies on a testing framework such as Junit.
Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer.
True
What are the key process stages?
Requirements specification
Software discovery and evaluation
Requirements refinement
Application system configuration
Component adaptation and integration
What questions that should be asked when deciding whether or not to adopt an agile method of software development?
Is an incremental delivery strategy realistic?
What type of system is being developed?
What is the expected system lifetime?
How is the development team organized?
Is the system subject to external regulation?
How large is the system that is being developed?
"The four basic process activities of specification, development, validation and evolution are organized differently in different development processes."
True
"Software evolution takes place when you change existing software systems to meet new requirements. Changes are continuous, and the software must never evolve to remain useful."
False
Pair programming includes
"Pair programming involves programmers working in pairs, developing code together."
This helps develop common ownership of code and spreads knowledge across the team.
It encourages refactoring as the whole team can benefit from improving the system code
Agile development practices include
Collective ownership
Continuous software improvement
Test-first development
Customer participation in the development team
The agile manifesto values individuals and interactions over processes and tools; working software over comprehensive documentation; customer collaboration over contract negotiation; responding to change over following a plan
True
"A scrum sprint is often 3-4 months in duration and includes planning, development, testing and deployment."
False
"The ?Scrum master? is a facilitator who arranges daily meetings, tracks the backlog of work to be done, records decisions, measures progress against the backlog and communicates with customers and management outside of the team."
True
What are the advantages of using incremental development and delivery?
Early delivery of critical functionality to the customer
Early increments serve as prototypes to explore requirements Lower risk of overall project failure
More extensive testing of critical customer functionality
"Process improvement is the process of improving existing software to improve software quality, lower development costs, or reduce development time. It is a cyclic process involving process measurement, analysis, and change."
False
What are the principal requirements engineering activities?
Requirements elicitation and analysis
Requirements specification
Requirements validation
"System prototyping, where a version of the system or part of the system is developed quickly to check the customer?s requirements and the feasibility of design decisions. This approach does not support change anticipation. "
False
Validation processes are concerned with transforming a requirements specification into an executable software system.
False
"In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements. "
True
"What are the benefits of incremental development, compared to the waterfall model?"
The cost of accommodating changes to customer requirements is reduced.
It is easier to get customer feedback on development work that has been done.
More rapid delivery and deployment of useful software to the customer is possible.
"Incremental delivery, where system increments are delivered to the customer for comment and experimentation. This supports both change avoidance and change tolerance. "
True
The aim of agile methods is to reduce overheads in the software process by
Focusing on the code rather than the design
Following an iterative approach to software development
Delivering working software quickly
Evolving code quickly to meet changing requirements
The role of the customer in the testing process is to help develop acceptance tests for the stories that are to be implemented in the next release of the system.
True
Software processes are the activities involved in producing a software system. Software process models are abstract representations of these processes.
True
Processes should include activities to cope with change. This may involve a prototyping phase that helps avoid poor decisions on requirements and design. Processes may be structured for iterative development and delivery so that changes may be made without disrupting the system as a whole.
True
"When a system feature is identified with test-test first development, the tests of the code implement that feature are written before the code."
True
"Agile methods are incremental development methods that focus on rapid software development, frequent releases of the software, reducing process overheads by minimizing documentation and producing high-quality code. "
True
"General process models describe the organization of software processes. Examples of these general models include the waterfall model, incremental development, and reusable component configuration and integration."
True
What are 3 generic process models that are used in software engineering?
Waterfall model
Incremental development
Integration and configuration
Software validation is the process of checking that the system conforms to its specification and that it meets the real needs of the users of the system.
True
For what types of system are agile approaches to development particularly likely to be successful?
Custom software development in an organization where there is a clear commitment from the customers to become involved in the development process.
Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer.
True
Design activities include
Architectural design
Database design
Interface design
Component selection and design
Scrum was designed as a managed method and provides a framework for project organization and external visibility of work done.
True
It is increasingly important to distinguish between software development and evolution
False
System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system.
True
What are some of the problems with Agile maintenance
Lack of product documentation
Keeping customers involved in the development process
Maintaining the continuity of the development team
What are the testing stages
Component Testing
System testing
Customer testing
Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer.
True
What are the separate identified phases in the waterfall model?
Requirements analysis and definition
System and software design
Implementation and unit testing
Integration and system testing
Operation and maintenance