Application software - may be written in obsolete
Application data - often incomplete and inconsistent.
Business processes - may be constrained by software
structure and functionality.
Business policies and rules - may be implicit and
embedded in the system software.
Answer to section 7:
The fundamental activities that are common to all software processes are:
Specification: It relates to the initial specifications on how to build the software. The process of establishing what services are required and the constraints on the system's operation and development.
Design: It relates to the process of converting the system specification into an executable system.
Validation: It is intended to show that a system conforms to its specification and meets the requirements of a system customer.
Evolution: Software is inherently flexible and can change. The properties like scalability and flexibility is addressed here.
Answer to section 8:
The advantages of incremental development and delivery are:
Customer value can be delivered with each
increment so system functionality is available
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.
Answer to section 9:
The six fundamental best practices of RUP are:
Develop software iteratively
Use component-based architectures
Visually model software
Verify software quality
Control changes to software
Answer to section 10:
The five common project management activities are:
Proposal writing: Usually done before getting the project.
Project planning and scheduling: Done as a part of the planning process.
Project costing: Project feasibility...
A project milestone is a predictable state where a formal report of progress is presented to management.
Application domain experience: For a project to develop a successful system, the developers must understand the application domain. It is essential that some members of a development team have some domain experience.
Programming language experience: This is normally only significant for short duration projects where there is not enough time to learn a new language. While learning a language itself is not difficult, it takes several months to become proficient in using the associated libraries and components.
Problem solving ability: This is very important for software engineers who constantly have to solve technical problems. However, it is almost impossible to judge without knowing the work of the potential team member.
Educational background: This may provide an indicator of the basic fundamentals that the candidate should know and of their ability to learn. This factor becomes increasingly irrelevant as engineers gain experience across a range of projects.
Personality: This is an important attribute but difficult to assess. Candidates must be reasonably compatible with other team members. No particular type of personality is more or less suited to software engineering.