1- What is the software process? What is software process
model? Software process > a set of activities required to develop software. Software process model > abstract representation for a process. “Describes process from particular perspective.” 2- Mention some perspectives for the software process model. • Specifying a data model. • Designing a user interface. • Products. • Roles. • Pre and post conditions. 3- What are the categories of software process? 1. Plan-driven: are processes where all of the process activities are planned in advance and progress is measured against this plan. 2. Agile : planning is incremental and it is easier to change the process to reflect changing customer requirements. 3. Hybrid : most processes include mixture of both types 4- Do you think that Agile is the most widely used process type? Yes, I guess because in Agile planning is incremental and it is easier to change the process to reflect changing customer requirements. 5- Mention some of software process models • Waterfall : Plan-driven model. Separate and distinct phases of specification and development. • Incremental : Specification, development and validation are interleaved. May be plan-driven or agile. • Integration and configuration: The system is assembled from existing configurable components. May be plan-driven or agile 6- Based on your understanding, what are the possible phased of waterfall process model? 1. Requirements definition. 2. System and software design. 3. Implementation and unit testing. 4. Integration and system testing. 5. Operation and maintenance.
7- Do you think that waterfall model are no longer used? Why?
No, it uses when > the requirements are well understood, changes are limited, and for large and critical systems. 8- What is incremental development model? Incremental Model is a process of software development where “requirements divided into multiple standalone modules of the software development cycle.” In this model, each module goes through the requirements, design, implementation and testing phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete system achieved. 9- Incremental software development could be very effectively used for customers who do not have a clear idea about the systems needed for their operations. Discuss! Because it gives the customer the ability to change or modify his requirement. 10- What are the possible activities of any software process model? 1. Specification : The process of establishing what services are required and the constraints on the system’s operation and development. 2. Development : The process of converting the system specification into an executable system. - design : Design a software structure that realizes the specification - Implementation : Translate this structure into an executable program 3. Validation: involves checking and review processes and system testing. 4. Evolution : Software is inherently flexible and can change. 11- Based on your understanding, what is requirements elicitation and analysis? Why it's so important in the requirement engineering process? It's a process of interacting with customers and end-users to find out the requirements, what services the system should provide, and the other constrains. Requirement elicitation determines the success or failure of a project and proper requirement elicitation is prerequisite for project success and therefore, without complete, clear and consistent requirement project is doomed to failure.
12- What are the possible documents produced from the
requirement engineering process? The software requirements document “the official statement of what is required of the system developers.” It contains both the user and system requirements. It is NOT a design document. It should set of WHAT the system should do rather than HOW it should do it. 13- Why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements engineering process? Because the user requirements written for the customers and it is statements in natural language describe what the system does without details, but the system requirements: structured document setting out detailed descriptions of the system’s functions, services and operational constraints. 14- What are the common design activities in software design and implementation activity? 1. Architectural design : where you identify : • the overall structure of the system, • the principal components (subsystems or modules), • their relationships and how they are distributed. 2. Database design: data representation in DB 3. Interface design : where you define the interfaces between system components. 4. Component selection : - search for reusable components. - design reusable components 15- Based on your understanding, mention the difference between software verification and validation? Verification > system meets its specs. “Are we building the product right?” Validation > meets the requirements of the customer. “Are we building the right product?” 16- Explain why software testing should always be an incremental, staged activity? Because if it's done only at the end of development, there will be so many errors. And those stages are: 1. Component testing > individual components are tested independently. 2. System testing > testing the whole system. 3. Customer testing > testing with customer data to check that system meets the customer’s needs. 17- Are programmers the best people to test the programs that they have developed? Discuss! No, because it is very difficult to find errors and mistakes in their own developed program. Thus, testing should be conducted by testers and end users, so that, all possible errors can be found on easy bases. 18- What is the difference between component testing, system testing and UAT (User Acceptance Testing)? 1. Component testing > individual components are tested independently. 2. System testing > testing the whole system. 3. UAT > testing with customer data to check that system meets the customer’s needs. 19- Based on your understating about software evolution and requirement changes, how do you anticipate/tolerate with changes? Discuss! Change anticipation: where the software process includes activities that can anticipate possible changes before significant rework is required, It can be anticipated by : • experience. • Community trends. • Similar products. • Flexible architecture. • System prototype for next project phase. Change tolerance: • Adopt process that welcomes changes at low costs. • Incremental delivery. 20- Based on your understanding, what is software prototype? Why is it used? What are the possible uses for it? Prototype > is an initial version of a system used to demonstrate concepts and try out design options. Usage: 1. In requirements engineering process to help with requirements elicitation and validation. 2. In design processes to explore options and develop a UI design. 3. In the testing process to run back-to-back tests. 21- Based on your understanding, what are the possible steps/process you would follow to develop a prototype? 1. Establish prototype objectives. 2. Define prototype functionality. 3. Develop prototype. 4. Evaluate prototype. 22- [You have developed a prototype of a software system and your manager is very impressed by it. He proposes that it should be put into use as a production system! with new features added as required. This avoids the expense of system development and makes the system immediately useful. Discuss with your manager explaining why prototype systems should not normally be used as production systems. ] In other words: talk about throw-away prototypes. 1) Based on rapid prototyping languages or tools. 2) May involve leaving out functionality. 3) Focus on functional rather than non-functional requirements such as reliability and security. 4) not a good basis for a production system 5) It may be impossible to tune the system to meet non-functional requirements; 6) Prototypes are normally undocumented; 7) The prototype structure is usually degraded through rapid change; 8) The prototype probably will not meet normal organizational quality standards. 23- Based on your understanding, what is incremental delivery and development? What is the pros of using it? Incremental delivery means that: Development and delivery are broken down into increments, each increment delivering part of the required functionality. Pros: 1) Customer value can be delivered with each increment so system functionality is available earlier. 2) Early increments act as a prototype to help elicit requirements for later increments. 3) Get feedback early, adapt to changes afterwards Lower risk of overall project failure. 4) The highest priority system services tend to receive the most testing. 24- Based on your understanding, why we need continuous software process improvement? What is the role of SPI engineer? Why: 1. Enhancing software quality. 2. Cost reduction. 3. Development acceleration. SPI role: understanding existing processes and changing these processes to meet the items above. 25- What are the possible approaches for software process improvements? • CMM. • Agile. 26- What are the major difference between CMM and Agile approach for software process improvement? CMM focuses on improving process and project management and introducing good software engineering practice. Agile focuses on iterative development and the reduction of overheads in the software process.