Explain why change is inevitable in complex systems and give examples (apart from prototyping and incremental delivery) of software process activities that help predict changes and make the software being developed more resilient to change.
Below is a list of correct/incorrect examples of software process activities that help predict changes and make the software being developer more resilient to change.
1. Recording of requirements rational so that the reason why a requirement is included is known. This helps future change.
2. Requirements traceability that shows dependencies between requirements and between the requirements and the design/code of the system.
3. Design modeling where the design model documents the structure of the software.
4. Code refactoring that improves code quality and so makes it more amenable to change.
You are a software engineering manager and your team proposes that model-driven engineering should be used to develop a new system.
What factor should you take into account when deciding whether or not to introduce this new approach to software development?
1. The expertise of the team in using UML and MDA. (Is expertise already available or will extensive training be required.)
2. The costs and functionality of the tools available to support MDA. (Are tools available in house or will they have to be purchased. Are they good enough for the type of software being developed)
3. The likely lifetime of the software that you are developing. (MDA is most suitable for long-lifetime systems)
4. Requirements for high performance or throughput (MDA relies on code generation that creates code which may be less efficient than handwritten code)
5. The long term benefits of using MDA (are there real cost savings from this approach)
Under what circumstances might a company justifiably charge a much higher price for a software system than the software cost estimate plus a reasonable profit margin?
Circumstances where a high price might be charged:
1. Where a customer expects the developer to take on a considerable amount of project risk.
2. Where the customer has special requirements e.g. for very rapid delivery.
3. When the work is not central to the companies business and so diverts people from other more business-focused activities. The high price is intended to compensate for this.
4. When the customer has no alternative! Think about the ethics of the excessive pricing in this situation.
Please circle the most comprehensive answer: