Applying Software Development to Key Domains
| Question | | Possible Answers |
1. | Name a few business domains. | 1. | Some of the popular business domains (also called verticals) are: · Retail · HealthCare · Insurance & Finance · Utilities · Consumer electronics |
2. | Why is it necessary to have domain knowledge while working on software projects? | 2. | Every domain has its unique requirements, processes, and terminology that determines what kind of software solution will be appropriate for it. Therefore, the project team and the organization should have sufficient knowledge of the domain to understand its intricacies and suggest business solutions. Lack of knowledge about customer’s domain will hamper you while gathering requirements and understanding their systems properly. Incomplete or incorrect requirements will lead to effort and cost overruns and may even result in project failure. |
Software Process Models
| Question | | Possible Answers |
3. | What is the need for a software process? | 3. | · Allows division of labor: It becomes easier for each team member to understand their role and responsibilities · Promotes teamwork and communication: Everyone in the team is aware of what others are doing · Eases project management: Supervisors and managers have a better control on project is they are aware of the exact status of work · Allows expertise reuse or reassignment: Load balancing across projects is easier if there is work transparency · Eases training: It is easier to identify the best practices and standardize · Promotes productivity and better development: It enables teams to produce good work consistently |
4. | What is a software process model? | 4. | Software process model is a sequence of activities and events that define the strategies for developing software. The software process models are used to develop formal descriptions of software life cycle activities based on the type of the project. |
5. | What are the different types of software process models? | 5. | There are many types of software process models and their further variations and adaptations. However, following are the most popular software process models: · Waterfall · Incremental & Iterative · Spiral · Prototype |
6. | What are the typical phases of a Waterfall model? | 6. | The standard waterfall model for software development consists of the following phases:
7. Deployment |
7. | How is a project done in an Iterative model? | 1. | The Iterative model follows a staged delivery approach. The development cycle goes through Concept, Requirements Analysis, and Architectural Design phases. At this point, the team implements pieces of the solution with current understanding of requirements and shows them to the customer. The customer approval and feedback is taken to complete the components. The team goes back to the previous phases to plug in the feedback and evolving set of requirements, thus going into an iterative cycle. In the iterative model, the team works on the full functionality of the software to deliver a partial system, presents to the customer, takes inputs and start another iteration of the development cycle. Evolutionary or Incremental model is similar to iterative model. In this model, the team delivers a part of the software after completing the first cycle of Concept, Requirements Analysis, and Architectural Design phases. In the incremental model, the team delivers a full system with partial functionality in the first round. This is evaluated by the customer and the feedback is plugged as the team iterates back into the development cycle to work on another functionality of the system. |
8. | How is software developed using a Spiral model? | 2. | Spiral model is a refinement of the traditional waterfall, explicitly recognizing that development undergoes more than one cycle. The spiral incorporates risk analysis into the process, and allows developers to stop the process as well as clients, depending on expected returns from new requirements. A project developed using the Spiral model will incorporate the following phases: 1) Planning 2) Risk analysis 3) Engineering 4) Customer evaluation 5) Go, no-go decision 6) Constructing the completed system Spiral model goes through series of Waterfalls, starting with a very rough notion of the system and becoming more detailed over a period. |
9. | What is Prototype model? | 1. | A project following the prototype model will typically go though the following phases: · Gather requirements · Quick design · Build Prototype · Customer evaluation of prototype · Refine prototype · Engineer product The prototype model is basically a code-and-fix approach but is useful in following situations: · Requirements are vague or unknown · Need to explore user interface · Need to explore functionality · Need incremental development and delivery It is appropriate for situations in which the requirements cannot be extracted in detail. This model is also applicable in research labs, which create new, first-of-a-kind software or where the development team needs to work upon a technical requirement and evaluate the feasibility of the requirement. For example, a customer wants to develop a software interacts with different types of back-end software and OS to generate a consolidated report. The team will like to first validate that interaction between different types of back-end systems is feasible before moving into the project headlong. Such small projects are referred to as proof-of-concept.
Evolutionary Prototyping (Start with initial concept, design and implement an initial prototype, iterate as needed through prototype refinement until acceptable, complete and release the acceptable prototype) |
Model for Complex Projects
Solution to task | Rationale behind solution |
The project has the following characteristics: · The scope is very big · The requirements are not complete and might be evolving · There is a question of feasibility of the system because of compatibility issue between GPS technologies · The project is complex, as the system must adhere to standards, technologies, and legal directives of each country. In view of the complexities involved in the project and the magnitude of scope, it is best that the project be divided in 11 mini-projects, one for each country. The feasibility of the entire project can be validated by doing a quick proof-of-concept to find out whether the technologies across different countries are compatible. | Each mini-project can be an independent project that follows a different Software process model. As the requirements are not completely provided it might be best to opt for an incremental model for each mini-project. The proof-of-concept can be a quick project based on RAD model, as there is no maintenance and deployment involved in the process. |
Defining Key Software Attributes
| Question | | Possible Answers |
10. | What are software attributes? | 7. | Software attributes, also known as quality attributes are properties of a software delivered by the system to the users. For example, reliability, maintainability, performance to name a few. |
11. | How will you define non-functional requirements? | 8. | Non-functional requirements are attributes, which are implicit in nature and not easily measurable. |
12. | Define the following software attributes: w Performance w Correctness w Reliability w Usability w Portability w Scalability w Reusability w Productivity w Verifiability w Maintainability | 9. | Performance: Responsiveness of the system. Correctness: Accuracy of the system. Reliability: Uptime of the system. Usability: User-friendliness of the system. Portability: Implementation of the system on different platforms. Scalability: Increase in capabilities of the system. For example, increased number of users, geographical spread. Reusability: Reuse in other systems other than the original application. Productivity: Measurable output or efficiency of the system. Verifiability: Ability of the system to crosscheck information. Maintainability: Aptitude of the system to undergo repair and evolution. |
System-Specific Quality Requirements
Solution to task | Rationale behind solution |
Key Attributes or quality requirements 1. Security | It is an example of real-time application. Security is the key attribute because the owner’s personal details along with account details are stored in the system. |
2. Response Time | As the vehicle passes the toll bridge, the server has to react in time as the charged amount is to be displayed to the vehicle-owner. |
3. Availability | The system should exhibit 100% availability. Apart from these, there can be other issues like correctness, compatibility. |
Critical Software Attributes
Solution to task | Rationale behind solution |
Critical attributes § Performance § Scalability § Security Trade-off Flexibility/Usability | Critical attributes Performance As the company plans to have a centralized database, the system should be efficient enough to support the load of simultaneous transactions. Scalability The company might expand in near future. The system should take care of further increase in number of stores. Security According to the senior management, the system should provide restrictive access to employees of different profiles. Trade-off Flexibility/Usability Customisation and flexibility might not be required in this system as the system is meant for proper handling of sales data. |