What is the most important differences between generic software product development and custom software development? What might this mean in practice for users of generic software products? The essential difference is that in generic software product development, the specification is owned by the product developer. For custom product development, the specification is owned and controlled by the customer. The implications of this are significant – the developer can quickly decide to change the specification in response to some external change (e.g. a competing product) but, when the customer owns the specification, changes have to be negotiated between the customer and the developer and may have contractual implications. For users of generic products, this means they have no control over the software specification so cannot control the evolution of the product. The developer may decide to include/exclude features and change the user interface. This could have implications for the user’s business processes and add extra training costs when new versions of the system are installed. It also may limit the customer’s flexibility to change their own business processes.


Explain why there are fundamental ideas of software engineering that apply to all types of software systems. Because of all software systems have common quality attributes, including availability, modifiability, performance, security and safety, testability and usability, the fundamental software ideas provides common solutions or tactics to support those qualities.


Based on your own knowledge of some of the application types discussed in the textbook (chapter 1, section 1.1.2), explain, with examples, why different application types require specialized software engineering techniques to support their design and development. Different application types require the use of different development techniques for a number of reasons: a) Costs and frequency of change. Some systems (such as embedded systems in consumer devices) are extremely expensive to change; others,must change frequently in response to changing requirements (e.g. business systems). Systems which are very expensive to change need extensive upfront analysis to ensure that the requirements are consistent and extensive validation to ensure that the system meets its specification. This is not cost effective for systems that change very rapidly. b) The most important ‘non-functional’ requirements. Different systems have different priorities for non-functional requirements. For example, a real-time control system in an aircraft has safety as its principal priority; an interactive game has responsiveness and usability as its priority. The techniques used to achieve safety are not required for interactive gaming; the extensive UI design required for games is not needed in safetycritical control systems. The software lifetime and delivery schedule. Some software systems have a relatively short lifetime (many web-based systems), others have a lifetime of tens of years (large command and control systems). Some systems have to be delivered quickly if they are to be useful. The techniques used to develop short-lifetime, rapid delivery systems (e.g. use of scripting languages, prototyping, etc.) are inappropriate for long-lifetime systems which require techniques that allow for long-term support such as design modelling.


1.3 What are the four important attributes that all professional software should have? Suggest four other attributes that may sometimes be significant.
important attributes are maintainability, dependability, performance and usability. Other attributes that may be significant could be reusability (can it be reused in other applications), distributability (can it be distributed over a network of processors), portability (can it operate on multiple platforms) and inter-operability (can it work with a

9 For each of the clauses in the ACM/IEEE Code of Ethics shown in Figure 1. Legal binding from the source of certification can ensure the that the software engineer is trusted. business and social change. (3. 1.3) Certification improves the public image of the profession.8 Discuss whether professional engineers should be certified in the same way as doctors or lawyers. No assurance that certified software engineer will guarantee fool-proofed project. • Disadvantages – – Certification may not reflect the performance of the software engineer.g. (1.5) Certification generally means establishing and checking educational standards and is therefore a mechanism for ensuring course quality.4 Apart from the challenges of heterogeneity. (2. Decompositions of the 4 key attributes e.wide range of other software systems).8) . safety. and trust and security. availability. • Advantages – – Competitive since they have been trained according to the standardize training procedure. identify other problems and challenges that software engineering is likely to face in the 21st century (Hint: think about the environment).3. 1. l Problems and challenges for software engineering (p13) • • Developing systems for multicultural use Developing systems that can be adapted (make suitable) quickly to new business needs (or market requirement) Designing systems for outsourced development (maybe Oral) Developing systems that are resistant to attack (information security) Developing systems that can be adapted and configured by end-users (user can design or assemble what they want) • • • 1. dependability decomposes to security. Advantages of certification l l l Certification is a signal to employers of some minimum level of competence. etc. suggest an appropriate example that illustrates that clause.

• An interactive system that allows railway passengers to find train times from terminals installed in stations. (4) Certifying body is likely to be accepted at a national and international level as ‘speaking for the profession’. Since this type of system is a safety-critical system. • A system to control anti-locking in a car. – Waterfall model. many countries are planning or have developed computer systems that track large numbers of their citizens and their actions. – Iterative model. – Spiral model. A virtual reality system to support software maintenance A university accounting system that replaces an existing system An interactive system that allows railway passengers to find train times from terminals installed in stations. . suggest the most appropriate generic software process model which might be used as a basis for managing the development of the following systems. we need to designed a perfect system with no errors since error may lead to a lifethreatening situation • A virtual reality system to support software maintenance.l l Certification implies responsibility in the event of disputes (argue). Clearly this has privacy implications. CHAPTER 2 2. Discuss the ethics of working on the development of this type of system. (We want to focus on maintaining software not focusing on the virtual system performance and esthetics) • A university accounting system that replaces an existing system. it is better to develop a waterfall model to swift the progress. The requirement of this type of system is rarely change or perhaps fix. Since the this type of system might be a legacy system.1. (6) Certification may increase the status of software engineers and attract particularly able people into the profession. Therefore. A system to control anti-lock braking in a car. we have to iteratively develop part of the system one by one and integrate it to the existing system concurrently.10 To help counter terrorism. Giving reasons for your answer based on the type of system being developed. (1) 1.

to allow some implementation flexibility. The people involved in the process must be able to understand the user’s environment and application domain. 2. So we need to have Requirements before being able to modify it. User requirements may likely to change and fast delivery is essential to be implemented. They should be expressed in natural language and may not be expressed in great detail. Why is this model less appropriate for real-time systems engineering? Business software systems usually complex. a) The user requirements are intended to describe the system’s functions and features from a user perspective and it is essential that users understand these requirements. Real-time systems usually involve many hardware components which are not easy to change and cannot be incremental. . The system requirements are developed after user requirements have been established. 2. software intensive.2. In other words how can we modify a requirement before establishing a requirements and also same is true for validation because at the end the system is required to be validated before delivery.3 Why reuse-based process model is essential to have two separate requirements engineering activities in the process? To make the reuse software engineering a complete model we need to add two more activities of the software process because if we look at the process stages of reuse engineering it starts at component analysis and thenRequirement modification. prototype model can save time of development to focus on essential function first to be later completed.– Prototype model. There is a fundamental difference between the user and the system requirements that mean they should be considered separately.4 Suggest why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements engineering process. Also real-time systems usually safety critical which needed be built based on well planned process. b) The system requirements are much more detailed than the user requirements and are intended to be a precise specification of the system that may be part of a system contract. 2. Therefore. So incremental development is better. They may also be used in situations where development is outsourced and the development team need a complete specification of what should be developed. Explain why incremental development is the most effective approach for developing business software systems. and frequently being changes when business goals or processes are changed.

but just tools to aid the development process.9 The Rational Unified Process recognizes that a single process model presents only a single view. so the RUP incorporated three perspectives. that describes the activities that are enacted. (i) Its justification in terms of problems with ‘waterfall’ methods. (ii) The main elements of the method and how it should be progressed. 3. that describes the phases of the model as time progresses. . It is good for business since the system can be used early if the essential functionality is available and be later improved as the user requirements change. rapid delivery is not good for critical-system development since the delivery of the system needs to be perfect and without failures.2. due to the pressures of development. However. However.7. c) Such error messages as there are will likely be vague. Define the types of risk associated with a software development project and discuss whether it is possible to manage the risks involved. two of them being dynamic. What are the advantages of providing static and dynamic views of the software process as in the Rational Unified Process? 2.1 Explain why the rapid delivery and development of new system is often more important to business than the detailed functionality of theses systems • • • Rapid delivery focuses on the delivery of the system. a) The user interface may be minimal and not intuitive. so the entire process can be understood. d) Generally. Rapid delivery can make profit swiftly. prototypes are not viewed as high quality products. It is good for a system that is required to show the result of the system. they have several faults. The strength in using both is that phases of the development process are not tied to any one specific workflow. 2. and static. b) There may be no error detecting or handling code.8. (iii) An important part of the spiral method is risk analysis and management. Explain why systems developed as prototypes should not normally be used as production systems. ANSWER: Here one should note that prototypes are often used as production systems.

3 When would you recommend against the use of an agile method for developing a software system? Explain your answer. the overheads of formal communication and process assurance are avoided.3. 3. b) Working software over comprehensive documentation.2 Explain how the principles underlying agile methods lead to the accelerated development and development of software. it is very difficult to coordinate their work with other teams. This allows useful functionality to be developed and delivered earlier than would be possible if contracts were required. Agile developers argue (rightly) that being responsive to change is more effective than following a plan-based process because change is inevitable whatever process is used. analyzing and negotiating requirements to be included in a system contract. This contributes to accelerated development because time is not spent developing. the programmer’s time is focused on the development and testing of code.4 Extreme programming express user requirements as stories. a system specification that is available before development starts makes a detailed specification analysis possible. Agile methods should probably also be avoided for critical systems where the consequences of a specification error are serious. d) Responding to change over following a plan. This means that the team can focus on the development of working software. advantages and disadvantages of this approach to requirements description. By taking advantages of individual skills and ability and by ensuring that the development team knows what each other are doing. The principles underlying agile development are: a) Individual and interactions over processes and tools. • Advantages . However. c) Customer collaboration over contract negotiation. Agile methods should probably not be used when the software is being developed by teams who are not co-located. List and explain at least two respectively. There is significant overhead in changing plans to accommodate change and the inflexibility of a plan means that work may be done that is later discarded. Furthermore. Rather. some ideas from agile approaches such as test first development are certainly applicable to critical systems. 3. the informal communication which is an essential part of agile methods is practically impossible to maintain. If any of the individual teams use agile methods. agile developers argue that it is more effective to get feedback from customer’s directly during the development about what is required. In those circumstances. Rather than spending time developing. checking and managing documentation. with each story written on a card.

The measures that can be taken to get around such difficulties are: can be moved to some offices and accommodated. Increase communication in discussing the software before development results in fewer false start and less rework. Discuss the difficulties that this new policy might cause and how you might get around these problems. · · · · · Pair programming is not possible. The difficulties that may arise with this policy if making employees work from home are: ·   The benefits obtained through agile methods will be less effective. regularly. Crossing out redundant scenarios can be a cumbersome tasks. – 3. the senior management who introduce the policy are unaware that software is developed using agile methods. your company decides to close a number of offices and to provide support for staff to work from home. Communication gap between the members of a team The benefit of error detection and evaluation through pair programming is lost. Due to sudden changes in the teams. 3. It is easy to identify what type of operation that is required in the user’s stories. Rather than completely closing some offices and asking people to work from home. However. The code is prone to be edited and enhanced to increase effectiveness and testing the code will outputted in a non-biased result. The number of errors avoided by the formal inspection is such that less time is spent to repairs bugs in the testing phase. Encourages refactoring.10 To reduce costs and the environmental impact of commuting.• Scenarios cope with most of common operation. Pair programming makes the code less defective. which rely on close team working and pair programming. • • • Continuous reviewing of the program by two different individuals is more effective than one individual which may be bias and undetectable. . employees Communication within the members of the team must be improved and must communicate Information regarding project should be shared and communicated. (Just look for the verb in the scenario cards) – Customer focus in the scenario card increase the chance that the software produced will actually meet the needs of the users Disadvantages – Using scenarios on a card can bring to a function overlooked or omission which can be a time-consuming process to complete the system – Two different scenarios can lead to the same function as it will be conflicted each other.6 Suggest at least two reasons why the productivity rate of programmers working as a pair is roughly the same as two programmers working individually. the project development may be slowed down.

over-the-limit transactions. debit transactions. print the ticket. If charge is complete. Once a destination has been selected.2 Discover the ambiguities or omissions in the following statement of requirements for part of a ticket issuing system. incorrect personal ID numbers. improper cards. credit card number. and PIN Pre-condition – None Post-condition – None Side effects – Charge to the customer’s credit account . a menu display of potential destinations is activated. The rail ticket is issued and their credit account charged. When the credit transaction has been validated. when input. credit card number. If unsuccessful again. ask customer to swipe their card again and re-input the PIN. Function – Give customer a rail ticket. prompt customer that the transaction is taking place. either by swiping a card. personal ID number Outputs – Tickets.4. calculate the charge for the trip. Resolve the identified ambiguities in some appropriate way. details could be given on how the credit information is input. 4. error messages Action – Ask the customer for their destination. Cases need to be considered for invalid credit transactions. calculate the total. and prompt for swiping of a credit card. Users select their destination and select a credit card and a personal identification number. otherwise. or manually entering the numbers. An automated ticket issuing system sells rail tickets. When the user presses the start button. print no ticket.3 Rewrite the above description using the structured approach described in this chapter. prompt that the transaction has failed. Requires – Destination. inserting a card. the ticket is issued. Inputs – Destination. if unsuccessful. along with a message to the user to select a destination. and report error to customer. and charge credit account accordingly Description – Determine customer’s destination. if successful print the ticket and return to start state. and return to start state. prompt customer for PIN. and charge the customer the appropriate amount. users are requested to input their credit card. Its validity is checked and the user is then requested to input their personal identifier.

In the event of the fuel cutoff engaging. and a network connection is provided for the destination database and credit transactions. and has sufficient credit to be charged. Upon successful verification. The estimated time for a complete transaction would be about thirty seconds. the user shall enter the requested amount. Upon receipt of the destination from the user. Following the appropriate prompts for a cash withdrawal. and enter a desired amount requested in dollars.5 Using the technique suggested here. Upon verification of the card. giving twenty for the user interactions. and return to its ready state. If the amount requested is not greater than the amount in the account. for the next transaction to take place. The reliability this system relies on the durability of the physical user interface. and the mechanism for dispensing the tickets. any remaining money shall be refunded to the user’s credit account B ) The cash dispensing function in a bank ATM. where natural language is presented in a standard way.4. and calculate the appropriate fee. the size of the ticket rolls that the unit can accept. The system shall continue to function so long as roll of ticket paper is in the machine. setting out its expected reliability and its response time? The ticket system shall respond to user inputs to provide tickets and charge accounts in a timely manner. The customer swipes the card through the reader and then specifies the amount of fuel required. Pumping shall be unlocked until the fuel-cutoff is engaged. The fuel is delivered and the customer’s account debited. 4. and the unit shall verify that the card is a credit card. the database shall be accessed to determine the distance from the unit’s location. five for validation and verification of the users account. write plausible user requirements for the following functions: A ) An unattended petrol (gas) pump system that includes a credit card reader. The user shall be prompted to swipe their credit card. is valid. the unit shall print a ticket. . cash shall be dispensed. and enter their PIN. to the desired destination. The user shall enter their bank card in the slot provided.4 Write a set of non-functional requirements for the ticket issuing system. and five for printing and dispensing the ticket. or the predetermined amount of money worth of has been deployed. the network connection in the area the system is placed. and the card shall be returned. the user shall be prompted to select the octane level of their fuel. The unit shall then prompt the user to input their card information.

If withdraw is chosen.C ) The spelling check and correcting function in a word processor. If the word is not found. One approach that can be used is to explicitly identify system level non functional requirements and list them separately.7 Using your knowledge of how an ATM is used. All transactions are complete. 1. 4. the user shall be notified that the word is incorrect. and the project managers who are in charge of the budget and scheduling of the system. If the user chooses a word given.8 Who should be involved in a requirement review? Draw a process model showing how a requirement review might be organized. as well as those involved with the development of the system. it shall be replaced and the notification of the misspelled word shall be removed. a list of closely matched words shall be provided for the user. and display a happy message for the user 4. the spelling of said word shall be checked against an existing database. 6. the user is prompted to take the dispensed money 10. . 5. When the user enters a word. the amount is compared with the balance. 4. 4. 7. develop a set of use-cases that could serve as a basis for understanding the requirements for an ATM system. If the user so chooses to correct the misspelled word. 2. The user is prompted to take their card 11. 3. separated by any white space or punctuation. the user is prompted to enter the amount to be withdrawn 8.6 Keeping track of the relationsships between functional and non functional requirementts is difficult because non functional requirements are sometimes system level requirement are sometimes system level requirements rather than requirements which are specific to a single function or group of functions. The primary stakeholders should be involved in the requirements review. If withdraw is chosen. The user is prompted to enter a card The user enters their card The user is prompted to enter their PIN The user enters their PIN The user is prompted to withdraw or check balance The balance is displayed If withdraw is chosen. the money is dispensed 9. and if enough money is available.All system requirements which are relevant for each functional requirements should be listed.

9 .4.

Sign up to vote on this title
UsefulNot useful