Software Engineering Test 1
What are the shared characteristics of different approaches to rapid software development?
"The processes of specification, design, and implementation are inter-leaved." User interfaces are often developed using an interactive development system that supports rapid UI development. The system is developed and delivered as a series of versions
What 3 characteristics does software dependability require?
Reliability Security (stopping access to malicious users) Safety (system failure should not cause physical or economic harm)
List the 3 generic process models that are used in software engineering?
The waterfall model Reuse-oriented software engineering Incremental development
How many things can our short term memory accommodate:
~7 things
List 5 different types of software application
-stand-alone -interactive transaction-based -batch processing systems -systems for modeling and simulation -embedded control systems -entertainment systems -data collection systems -systems of systems
Four Ethics of Software Engineering
Confidentiality Competence (not misrepresenting skills) Intellectual property rights Computer misuse
What does software engineering place importance on?
Cost effective development
Paradigm shift of the ~1970s
Current techniques did not scale up. Established the discipline of software engineering.
What software engineering fundamentals apply to all types of software systems?
Dependability and performance are key system characteristics. Effective use should be made of available resources. Systems should be developed using a managed and understood development process. Understanding and managing the software specification and requirements are important.
What two basic actions does a developer have implementing a system?
Developing a program/programs and/or configuring an application system
What are characteristics of throw-away prototypes?
Discarded after development May be impossible to meet all non-functional requirements Structure is degraded through rapid change Not meet normal standards
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 More extensive testing of critical customer functionality Lower risk of overall project failure
What are the claimed benefits of model-driven engineering?
Engineers can work at a high level of abstraction without concern for implementation details Errors are reduced and the design and implementation process is sped up. By using powerful generation tools, implementations of the same system can be automatically generated for different platforms
Why is it increasingly irrelevant to distinguish between software development and evolution?
Few software systems are now completely new. A more realistic model of software development is of an iterative process that lasts for the lifetime of the software.
What are the two fundamental types of software product?
Generic products that are designed to meet the needs of many different customers. Customised products designed to meet the specific needs of a single customer.
What are the benefits of prototyping?
Improved system usability Closer to requirements Improved design Improved maintainability Reduced dev effort
What are the three benefits of incremental development, compared to the waterfall model?
It is easier to get customer feedback on development work that has been done. The cost of accommodating changes to customer requirements is reduced. More rapid delivery and deployment of useful software to the customer is possible.
What is described in a context model?
It shows what is outside of the system boundary The immediate external environment of the system defining the system's context The forecasted external environment of the system The dependencies that a system has on its environment
What are the essential attributes of good software?
Maintainability Acceptability Dependability Efficiency Security
Paradigm shift of ~2000
New lifespan models emphasize software evolution. Iterative and Agile methods are adopted.
Basic process activities
specification development validation evolution
What are the advantages of incremental delivery?
-Customer value delivered with each increment -Early increments act as prototypes to help shape later requirements -Lower failure risk -Highest priority system receives most testing
What are the two main approaches to process improvement?
-process maturity approach (improving process and project management, introducing good software engineering practice) -agile approach (iterative dev and reduction of overhead)
What are the 5 levels of the SEI capability maturity method?
-Initial: Uncontrolled -Repeatable: Management procedures defined and used -Defined: Process management procedures and strategies -Managed: Quality management strategies defined and used -Optimizing: process improvement strategies defined and used
What are the three steps of the process improvement cycle?
-Measure -Analyze -Change
What are the problems with incremental delivery?
-Most systems rely on basic facilities used by different parts of the system -Specification of iterative processes are developed along with software which conflicts with many organizations' requirement for a complete system specification
Approaches for dealing with complexity:
-Simplified models -Decomposition (splitting software into smaller parts) -Understand software as-needed (only what you need for current task) -Abstraction (e.g. class hierarchy)
What are the main characteristics of incremental delivery?
-System broken down into deliverable increments -User requirements are prioritized -Highest priority requirements are in earlier increments -Requirements for an increment frozen when development for that increment begin
What are three process metrics that can be taken to measure the process improvement?
-Time to complete -Resources completed -Number of occurrences of an event
What may process improvement aim to accomplish?
-increase software quality -reduce costs -speed up development
When did software separate from hardware?
1950s (became individual product and a distinct technology from computer hardware)
What percent of requirements will change during the development?
30%
US Software Industry
7.1% of GDP 11.6% private sector 100,000 software & IT service companies 2 million people employed in growing industry
What is illustrated in a UML sequence diagram?
A sequence of interactions between the actors in a system's environment and the objects in the system
How is software discontinuous?
A small change in in put can result in huge change of output (i.e. right vs. wrong password gives access to none or all of the features of a system)
Advantages/Disadvantages of software reuse:
Advantages: Reduced costs and risk due to less software being developed from nothing. Faster delivery and deployment of the system Disadvantages: Compromise of requirements is likely. No control over evolution of reused system elements
What is software engineering?
An engineering discipline concerned with all aspects of software production from specification to system maintenance.
What perspectives may be used for system modelling?
An interaction perspective A structural perspective An external perspective A behavioral perspective
What 4 characteristics does software efficiency require?
Avoiding resource wastefulness Responsiveness Processing time Memory utilization
Why are iterations usually limited when the waterfall model is used?
Because of the cost of producing and approving documents, iterations are costly and involve significant rework. Hence they are limited Iterations usually lead back to the drawing board.
What are the 3 general issues that affect many different types of software?
Business and social change, which drives requirements for software change. Heterogeneity - Software may have to execute on several different types of system. Security and trust - our software systems have to be secure against external and internal threats so that we can trust those systems.
Why is change inevitable in all large software projects?
Business changes New technologies Changing platforms
What are strategies to reduce the costs of rework?
Change anticipation Change tolerance
How is generalization used to simplify the models of a system with many similar objects?
Common attributes and methods are associated with a super-class Specialized classes implement specific behavior while inheriting common attributes/methods from a super class
What are the development stages in reuse-based development?
Component analysis System design with reuse Requirements modification Development and integration
What are the three stages of testing?
Component testing System testing Acceptance testing
What are the distinctions between computer science and software engineering?
Computer science is concerned with theories and methods of computers and software systems. Software engineering is concerned with the practice of software production.
What are the basic assumptions that underlie event-driven modeling?
Internal and external events trigger a transition from one state to another The system can be represented as a model with a finite number of discrete states.
List some questions that should be asked when deciding whether or not to adopt an agile method of software development.
Is the system subject to external regulation? How large is the system that is being developed? What type of system is being developed? How is the development team organized? What is the expected system lifetime? Is an incremental delivery strategy realistic?
Briefly describe the advantages of pair programming.
It helps support refactoring. It serves as an informal code review process. It supports the idea of common ownership and responsibility for the code.
What are the types of abstract system model that are recommended by the MDA method?
One or more platform-specific models Platform-specific model Platform-independent model Computation-independent model
List the main principles of agile methods.
People not process Maintain simplicity Incremental delivery Customer involvement Embrace change
What are the 4 sectors in each loop in Boehm?s spiral model?
Planning Risk assessment and reduction Objective setting Development and validation
Complete the definition of a "Software engineering code of ethics" A set of *** that set out, in a general way, *** of expected *** for professional ***.
Principals Standards Behavior Software Engineers
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.
ACM/IEEE Code of Ethics Principles
Public: Acting consistently with public interest Client and employer: Acting in the best interest of their client and employer that is still consistent with public interest Product: Making sure their products meet the highest professional standards. Judgment: Maintaining integrity and independence in their professional judgment. Management: Managers and leaders should promote an ethical approach to management and maintenance of software development. Profession: Advancing the integrity and reputation of the profession consistent with public interest. Colleagues: Being fair and supportive of colleagues Self: Participate in lifelong learning regarding their profession and promote an ethical practice of the profession.
What are three key characteristics of the engineering of web-based software engineering?
Requirements for those systems cannot be completely specified in advance. Software reuse is the principal approach for constructing web-based systems. User interfaces are constrained by the capabilities of web browsers.
What are the four main activities in the requirements engineering process?
Requirements validation Requirements elicitation and analysis Requirements specification Feasibility study
What are the costs of change?
Rework (ex. reanalyzing requirements) and reimplementing new functionality
For what types of system are agile approaches to development particularly likely to be successful?
Small and medium-sized software product development. Custom software development in an organization where there is a clear commitment from customers to become involved in the development process
What are the four fundamental activities in software processes?
Software development Software evolution Software validation Software specification
What are the fundamental activities that are common to all software processes?
Software evolution Software design and implementation Software specification Software validation
What are some characteristics of a Scrum sprint?
Software is implemented and delivered to system stakeholders. Features are selected for development. A short planning unit in which work to be done is assessed.
Types of reusable software
Stand-alone application systems (configured for use in a particular environment; COTS) Collections of objects in a package with a component framework (such as .NET or J2EE) Web services
What UML diagram types may be used to represent the essential features of a system?
State diagrams Use case diagrams Class diagrams Activity diagrams Sequence diagrams
What are two ways to cope with changing requirements
System prototyping (supports change anticipation) Incremental delivery (supports change avoidance and change tolerance)
What are some very important characteristics of extreme programming?
Test-first development Pair programming Requirements expressed as scenarios
What is test-first development?
Tests are automated and all tests are run when a new increment is added to the system. When a system feature is identified, the tests of the code implementing that feature are written before the code.
What are the six fundamental best practices in the RUP?
Use component-based architectures Control changes to software Visually model software Manage requirements Develop software iteratively Verify software quality
Software Invisibility
The behavior of software is visible, but not it's properties. Use of visualization or signification to deal with invisibility.
What are the three 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.
What are the barriers to introducing agile methods into large companies?
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. Project managers may be reluctant to accept the risks of a new approach
What is software design and implementation
The process of converting the system specification into executable system
What is software specification?
The process of establishing what services are required and the constraints on the system's operation and development
What are the principal components of a textual use-case description?
The response of the system The data that is exchanged Comments and other information The actors involved The stimulus that triggers the use case The description of the interactions
What are the principal components of a textual use-case description?
The stimulus that triggers the use case The actors involved The data that is exchanged The response of the system Comments and other information The description of the interactions
How are activity diagrams used in describing the context of use of a system?
They are used to describe the business processes in which the system is used and the other systems which are also used in these processes.
What is the purpose of verification and validation?
To show that a system conforms to its specification and meets requirements of the system customer
Characteristics of Internet software engineering
Trend towards web-based systems over local systems Web services allow application functionality accessed over the web Cloud computer: An approach to the provision of computer services where applications run remotely on the cloud. Users pay according to use. Web-based systems are complex distributed systems but fundamental principles of software engineering are still applicable.
What 3 characteristics does software acceptability require?
Understandable Usable Compatible
List the 4 activities during the design process
architectural design database design interface design component selection and design
The requirements engineering process
elicitation (the practice of collecting the requirements of a system from users, customers and other stakeholders) analysis of requirements specification of requirements (defining requirements in detail) validation
Real software processes are interwoven sequences of activities that are
technical collaborative managerial