List the top 3 reasons of failure for cancelled projects uncovered by the Chaos report Answer: Incomplete requirements; lack of user involvement; lack of resources.
List 3 of or more of Royce’s top ten principles for modern software management. Answer: Change management should be established Use model-based and machine processable notation to capture design Plan to have incremental releases Establish a configurable process
List at least 3 of Davis’s software engineering principles discussed in the book. Answer: Evaluate design alternatives Use different languages for different phases Put technique before tools Inspect code
List the 3 basic management strategies recommend by the GAO (General Accounting Practices) as key to ensuring the delivery of high quality software on time and within budget. Answer: Focused attention on the software development environment; Disciplined development process; Methodical use of metrics to gauge cost, schedule and performance targets.
List at least 3 of the 8 principles for ethics and professional practices in software engineering recommended by the ACM code of ethics. Answer: Act consistent with the public interest. Maintain integrity and independence. Advance the integrity and reputation of the profession. Act in the best interests of their client and the employer consistent with the public interest.
List the four most important reasons for project success uncovered by the Chaos report Answer: User involvement, executive management support, clear requirement statements, proper planning.
Define the depth versus the breadth issue in software complexity. Answer: The breadth of software complexity usually refers to “the number of” functionality, components, interfaces, etc. of the software while the depth of the software complexity refers to the “relations and interactions” among these functions, components, etc.
The following are five factors that should be considered in deciding how many post-release support personnel will be needed. Answer: i) how many customers/users are expected; ii) the quality of the product at release time in terms of known bugs that are still in the product; iii) amount of user training that was provided before release; iv) projected number of problems and changes that may be arriving, and v) how well trained are the support personnel.
The following are the three main areas that need to be coordinated in large software projects: Answer: a) the process, b) the product, and c) the people. The size, complexity, and schedule of the product dictate the process. The product and process also dictate the type and number of people needed.
What is software integration and why is this important in large software construction? Answer: A large software project is usually simplified via decomposition and the different parts are assigned to different people. As the parts are completed they have to be brought together and execute as one major function. The steps and tasks involved in bringing the parts together, such as joint compilation and build, is called software integration.
Why is a development process needed? Answer: When there is a large number of people involved in a project, a development process is necessary to help guide and coordinate their activities.
Differentiate “vertical” application software versus “horizontal” software application. Answer: The horizontal software refers to the common services such as UI interface, DB interface, or error messaging. The vertical application is a specific application such as claims processing or inventory update.
List some, at least two, technical concerns in developing large systems. Answer: Large system requires software engineers to consider many aspects of development, including a) architecture and design decomposition, b) choices of language, database, network, middleware, and c) the process and methodologies to be used for development.
The following are two non-technical concern in developing large systems. Answer: Estimation and planning of the project AND the people management aspect of the large project, especially ensuring that the communication among people are facilitated and taking place.
Describe some, at least one, way to simplify a complex problem. Answer: A common attribute among the methodologies of simplification is to “lessen” the relationships, number of functionalities, amount of interactions, etc. One such technique is decomposition, and another is modularization.
List kinds of design constraints imposed in most systems (and, in particular, in the system described in chapter 1). Answer: User Interface, Input sizes, platforms, schedule requirements
List kinds of non-functional requirements found in most systems (and, in particular, in the system described in chapter 1). Answer: Performance, Real-Time Requirements, modifiability
What is the difference between functional and non-functional requirements ? Answer: Functional requirements specify what a program needs to do, whereas non-functional requirements specify how are the functional requirements to be achieved.