Software Engineering
Who should be involved in a requirement review?
Key Stakeholders from the user groups
What are the essential attributes of good software?
Maintainability Efficiency Acceptability Dependability
Programmers sit together at the same computer to develop the software.
Pair Programming
Which one is NOT the Extreme Programming (XP) key practices? Pair programming Refactoring Product Backlog Test-first development User stories for specification
Product Backlog
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.
In incremental delivery, the highest priority system services tend to receive the most testing. (T/F)
True
Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer. (T/F)
True
What is the difference between validation and verification?
Validation is the process of checking whether the specification captures the customer's requirements, while verification is the process of checking that the software meets specifications.
Briefly describe at least two major differences between the classic waterfall software process model and agile development methods such as extreme programming.
Waterfall is Sequential/Linear and Agile is Iteratively in a Continuous Cycle Agile is Flexible while Waterfall is Structured Agile is for smaller companies and Waterfall is for Larger companies
Which question no longer concerns the modern software engineer? Why can't software errors be removed from products prior to delivery? Why does software take a long time to finish? Why does it cost so much to develop a piece of software? Why does computer hardware cost so much?
Why does computer hardware cost so much?
______ are software that control and manage hardware devices.
embedded control
Which one is Not True? incremental delivery is good for replacement systems as increments have more functionality than the system being replaced. waterfall model of software development is a reasonable approach when requirements are well defined. incremental model of software development is a good approach when a working core product is required quickly. waterfall model is mostly used for large systems engineering projects where a system is developed at several sites
incremental delivery is good for replacement systems as increments have more functionality than the system being replaced.
_______ is an engineering discipline that is concerned from the early stages of system specification through to maintaining the system after it has gone into use
software engineering
As the first stage of software process, understanding and managing the software ___________ and requirement are important.
specification
Stages of testing consists of component testing, _____ testing, and acceptance testing.
system
What is test-first development?
An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented.
XP and agile principles
-Incremental development is supported through small, frequent system releases. -Customer involvement means full-time customer engagement with the team. -People not process through pair programming, collective ownership and a process that avoids long working hours. -Change supported through regular system releases. -Maintaining simplicity through constant refactoring of code.
Scrum Master?
A person who ensures that the team is productive, facilitates the daily Scrum, enables close cooperation across all roles and functions, and removes barriers that prevent the team from being effective
What is a Scrum sprint?
A short (3-4 weeks) planning unit in which work to be done is assessed, features are selected for development, the software is implemented and delivered to system stakeholders
What are the specific activities that describe Extreme Programming process?
Coding Testing Listening Designing ----------- New Versions built several times per day Increments delivered to customers every 2 weeks All tests must run for every build to be accepted
What are the five framework activities of SW process?
Communication Planning Modeling Construction Deployment
Software __________ includes a range of characteristics including reliability, security and safety. The software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system.
Dependability
Software engineering concerns about the technical process of software development but not about the developmental tools & methods. (T/F)
False
Which one is not True about Agile method? Based on an iterative approach to software development Focus on the code rather than the design Focus on comprehensive documentation Intended to deliver working software quickly and evolve this quickly to meet changing requirement
Focus on comprehensive documentation
What are the functional requirements and non-functional requirements?
Functional requirements define what the system should do. Non-functional requirements -(performance, security, or availability) not concerned with specific system functions. Specify required system properties or may define constraints on the system implementation
Which one is NOT true? Software evolution takes place when you change existing software systems to meet new requirements. Changes are continuous, and the software must evolve to remain useful Software engineers have responsibilities to the engineering profession and society. They should not simply be concerned with technical issues but should be aware of the ethical issues that affect their work. General process models include the waterfall model, spiral evolution development, and reusable component configuration & integration. Design and implementation processes are concerned with transforming a requirements specification into an executable software system.
General process models include the waterfall model, spiral evolution development, and reusable component configuration & integration.
Which one is True about Extreme Programming? Increments are delivered to customers every 2 weeks In Extreme programming method, large amounts of overtime are required to improve productivity Until the programmers get the program running, we cannot test the software quality The customers are excluded from the member of the development team because they are not responsible for bringing system requirements to implementation.
Increments are delivered to customers every 2 weeks
What are the specific activities that describe Scrum process?
Initial phase - planning phase, establishing general objectives Sprint Cycles - ea. cycle develops an increment Project Closure - completes required docs
The system is assembled from existing configurable components.
Integration and Configuration
Which one is not True about Web-based Software Engineering? Software may be implemented using service-oriented software engineering, where the software components are stand-alone web services. It is practical to specify all the requirements for web-based SW in advance Software reuse is the dominant approach for constructing web-based systems Interface development technologies such as AJAX and HTML5 have emerged that support the creation of rich interfaces within a web browser
It is practical to specify all the requirements for web-based SW in advance
Which one is NOT true about Prototyping? Error checking and recovery may not be included in the prototype Prototype structure is usually degraded through rapid change so the prototype probably will not meet normal organizational quality standards. Prototyping is useful to focus on non-functional requirements such as reliability and security rather than focus on the functional requirements Prototype can be used in the requirements engineering process to help with requirements elicitation and validation
Prototyping is useful to focus on non-functional requirements such as reliability and security rather than focus on the functional requirements
This is done continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.
Refactoring
List requirements validation techniques
Requirements Review - Systematic analysis of the requirements Prototyping - Using an executable model to check the requirements Test-Case Generation - Developing tests for requirements to check testability
Which one is NOT true? Requirements are never frozen and new requirements can be added even if the development of an increment is started. A prototype system may show some key features of the system to customers so it helps anticipate possible changes before significant rework is required Incremental development is good way to reduce the cost of rework because changes may be implemented in increments that have not yet been developed In incremental development, it is hard to identify common facilities needed by all increments
Requirements are never frozen and new requirements can be added even if the development of an increment is started.
What are the main activities of Requirement engineering process?
Requirements elicitation. Requirements specification. Requirements verification and validation. Requirements management.
What are the four fundamental activities in software processes?
Specification Design and Implementation Validation Evolution
What are the problems of Requirements Elicitation?
Stakeholders don't know what they really want. Stakeholders express requirements in their own terms. Different stakeholders may have conflicting requirements. Organizational and political factors may influence the system requirements. The requirements change during the analysis process. New stakeholders may emerge and the business environment may change.
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
List the key issues stressed by an agile philosophy of software engineering.
The informality of agile development is incompatible with the legal approach to contract definition that is commonly used in large companies. Agile methods are most appropriate for new software development rather than software maintenance. Yet the majority of software costs in large companies come from maintaining their existing software systems. Agile methods are designed for small co-located teams yet much software development now involves worldwide distributed teams.
Program Backlog
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.