Software Engineering
Give 5 reasons why eliciting requirements is difficult?
-Stakeholders don't know what they really want. -Stakeholders express requirements in their own terms. -Different stakeholders may have conflicting requirements. -Organisational 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
Regarding the software engineering code of ethics, what are the Issues of professional responsibility?
Confidentiality Competence Intellectual property rights Computer misuse
What are the three benefits of incremental development, compared to the waterfall model?
The cost of accommodating changing customer requirements is reduced. It is 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.
What are the two different approaches to process improvement and change that have been proposed?
The process maturity approach, which focuses on improving process and project management and introducing good software engineering practice. The agile approach, which focuses on iterative development and the reduction of overheads in the software process.
What is the distinction between the terms 'shall' and 'should' in a user requirements document, which is written in natural language?
Use language in a consistent way. Use shall for mandatory requirements, should for desirable requirements
List 3 generic process modelsthat are used in software engineering
Waterfall model Incremental Development Integration and Configuration
What are the benefits of prototyping?
Improved system usability A closer match to users' real needs Improved design quality Improved maintainability Reduced development effort
What are the stages in the requirements change management process?
1. Problemanalysis and change specification 2. Change analysis and costing 3. Change implementation
What information should be included in a scenario?
A description of the starting situation; A description of the normal flow of events; A description of what can go wrong; Information about other concurrent activities; A description of the state when the scenario finishes
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 is ethnography and how is it used in requirements elicitation?
A social scientist spends a considerable time observing and analyzinghow people actually work. People do not have to explain or articulate their work. Social and organisational factors of importance may be observed. Ethnographic studies have shown that work is usually richer and more complex than suggested by simple system models
Why has the Scrum agile method been widely adopted in preference to methods such as XP.
Agile methods such as XP adopt an informal approach to planning and control that is inconsistent with organizational management policies. Scrum was designed as a managed method and provides a framework for project organization and external visibility of work done
What is software engineering?
An engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use.
Why are iterations usually limited when the waterfall model is used?
Because that the waterfall model is the difficulty of accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase.
What is the distinction between computer science and software engineering?
Computer science focuses on foundations of computing including, algorithms, programming languages, theories of computing, artificial intelligence, , and hardware design. Software engineering, on the other hand, focuses on technical and managerial leadership for large and complex systems.
List the 5 principles of agile methods.
Customer involvement Incremental delivery People not process Embrace change Maintain simplicity
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. The highest priority system services tend to receive the most testing
What information should be included when a standard format is used for specifying functional requirements?
Definition of the function or entity. Description of inputs and where they come from. Description of outputs and where they go to. Information about the information needed for the computation and other entities used. Description of the action to be taken. Pre and post conditions (if appropriate).
What is the distinction between functional and non-functional requirements?
Functional requirements: Statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. May state what the system should not do. Non-functional requirements: Constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc. Often apply to the system as a whole rather than individual features or services
What are the two fundamental types of software product?
Generic Products -stand alone systems that are marketed to any customer who wishes to buy them -Examples: PC software such as graphics programs, project management tools; CAD software; software for specific markets such as appointments systems for dentists. Customized Products -software that is commissioned by a specific customer to meet their own needs. -Examples: embedded control systems, air traffic control software, traffic monitoring systems.
What are the 4 general issues that affect many different types of software?
Heterogeneity: increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices. Business and social change: business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software. Security and trust: as software is intertwined with all aspects of our lives, it is essential that we can trust that software. Scale: software has to be developed across a very wide range of scales, from very small embedded systems in portable or wearable devices through to internet scale, cloud based systems that serve a global community.
What are incremental development and delivery?
Incremental development: Develop the system in increments and evaluate each increment before proceeding to the development of the next increment; Normal approach used in agile methods Evaluation done by user/customer proxy. Incremental delivery: Deploy an increment for use by end-users; More realistic evaluation about practical use of software; Difficult to implement for replacement systems as increments have less functionality than the system being replaced
List 4 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?
What are the essential attributes of good software?
Maintainability Dependability and security Efficiency Acceptability
How do managers and test engineers use a system requirements document?
Managers: use the requirements document to plan a bid for the system and to plan the system development process Test engineers:use the requirements to develop validation tests for the system.
List 3 types of non-functional requirement?
Product requirements:efficiency, dependability, security Organizational requirements:environmental, operational, development External requirements:regulatory, ethical, legislative
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.
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 activities of the requirements engineering process?
Requirements elicitation; Requirements analysis; Requirements validation; Requirements management
Name three important agile techniques that were introduced in extreme programming?
Requirements expressed as scenarios or user stories, Refactoring, Pair programming, Test-first development.
What is requirements management?
Requirements management is the process of managing changing requirements during the requirements engineering process and system development
What are the development stages in integration and configuration?
Requirements specification Software discovery and evaluation Requirements refinement Application system configuration Component adaptation and integration
For what types of system are agile approaches to development particularly likely to be successful?
Small and medium-sized software product development where the specification is controlled by the software development company. 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 Specification, where customers and engineers define the software that is to be produced and the constraints on its operation. Software development, where the software is designed and programmed. Software validation, where the software is checked to ensure that it is what the customer requires. Software evolution, where the software is modified to reflect changing customer and market requirements.
List 3 to 4 characteristics of the engineering of web-based software engineering
Software reuse Incremental and agile development Service-oriented systems Rich interfaces
What software engineering fundamentals apply to all types of software systems?
Some fundamental principles apply to all types of software system, irrespective of the development techniques used: -Systems should be developed using a managed and understood development process. Of course, different processes are used for different types of software. -Dependability and performance are important for all types of system. -Understanding and managing the software specification and requirements (what the software should do) are important. -Where appropriate, you should reuse software that has already been developed rather than write new software.
What are the fundamental activities that are common to all software processes?
Specification -defining what the system should do Design and implementation -defining the organization of the system and implementing the system Validation -checking that it does what the customer wants Evolution -changing the system in response to changing customer needs
List different types of software application.
Stand-alone Interactive transaction-based Embedded control systems Batch processing systems Entertainment systems Systems for modeling and simulation Data collection systems Systems of systems
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 process.
What is a use-case?
Use-cases are a kind of scenario that are included in the UML. Use cases identify the actors in an interaction and which describe the interaction itself. A set of use cases should describe all possible interactions with the system.
What are user requirements and system requirements?
User requirements: Statements in natural language plus diagrams of the services the system provides and its operational constraints. Written for customers. System requirements: A structured document setting out detailed descriptions of the system's functions, services and operational constraints. Defines what should be implemented so may be part of a contract between client and contractor.
What checks should be applied during requirements validation?
Validity: Does the system provide the functions which best support the customer's needs? Consistency: Are there any requirements conflicts? Completeness: Are all functions required by the customer included? Realism: Can the requirements be implemented given available budget and technology? Verifiability: Can the requirements be checked?
What is test-first development?
When a system feature is identified, the tests of the code implementing that feature are written before the code. Tests are automated and all tests are run when a new increment is added to the system.