Key Aspects of Software Design and Development
1. What is the Purpose of the Design Phase within the Software Development Cycle?
The design phase seeks to incorporate the essential technological requirements of the user, projecting what will be built in the implementation phase. The design phase aims to find a solution among the various options identified that meet the specified requirements. While analysis seeks to identify the business domain, the project phase seeks to define how a particular solution will be built. At this point, the analysis of available technologies and environmental restrictions are paramount because they define a path likely to adopt a specific technology.
2. What are the Projects Generated within the Design Phase of Software?
- Architectural Design Software
- Project Interfaces
- Project Data
- Project Tasks (Procedural)
3. What are the Requirements to Become a Modular Software Project?
- Start representing the entire thing to be built;
- Refine to provide guidance for the construction of each detail;
- Provide different visions of the thing;
- Consider alternative approaches based on the requirements of the problem, available resources, and project concepts;
- Be traceable to the analysis model;
- Do not reinvent the wheel, i.e., reuse components;
- Minimize the conceptual gap between software and the real world;
- IMPORTANT: A project seeks to structure a modular system as modules/components that are cohesive and loosely coupled.
4. What are the Requirements for a Software Design to be Reliable?
Reliability refers to the preservation of system availability and the integrity of stored information.
The following should be considered: integrity constraints, concurrency control, and disaster recovery.
Moreover, in the aspect of adherence to the model analysis, it shall:
- Contemplate all the explicit requirements contained in the analysis model and all the implicit requirements desired by the customer;
- Be a readable and understandable guide for those who will code, test, and maintain the software;
- Provide a complete picture of the software, addressing functional and behavioral data aspects from an implementation perspective;
- Be structured to accommodate changes (changeability);
- Accommodate unusual circumstances and, if necessary to abort the processing, make it elegant;
- Present a level of abstraction above the source;
- Be subject to quality assessment;
- Be reviewed to minimize errors.
5. What is an Architectural Vision? What are the Best-Known Architectural Visions? Explain Each.
The views capture the major structural design decisions, showing how software architecture is decomposed into components and how components are connected by connectors to generate useful forms.
An Architectural Vision seeks to separate the different areas into separate views in order to manage the complexity of the system. Each view describes different engineering concepts. A view reduces the amount of information that the software architect has to manage at a certain design time.
The major views considered are:
- Overview of Use Cases: Contains the use cases and scenarios that cover significant behaviors in terms of architecture, classes, or technical risks. It is a subset of the use case model.
- Overview of Logic: Contains the most important design classes and their organization into packages and subsystems, and the organization of these packages and subsystems into layers. It contains some use-case realizations. It is a subset of the design model.
- Implementation View: Contains an overview of the implementation model and its organization in terms of modules and package layers. The allocation of packages and classes (the Logical Vision) to packages and modules of the Implementation Vision is also described. It is a subset of the implementation model.
- Process View: Contains a description of the tasks (processes and threads) involved, their interactions and configurations, and the allocation of design objects and classes to tasks. This view need only be used if the system has a significant degree of concurrency. In RUP, it is a subset of the design model.
- Deployment View: Contains a description of the various physical nodes of the largest part of the common platform configurations and the allocation of tasks (from the Process View) to physical nodes. This view need only be used if the system is distributed. It is a subset of the deployment model.
6. What Factors Can Increase the Economy of a Software Project?
- Reuse: Partial program (copy and change), module, module library, project;
- CASE tools;
- Documentation;
- Environment (hardware, software, and peopleware).
- Software architecture adheres to the business model.
7. How is it Possible to Increase the Maintainability of Software?
Maintainability concerns the ease of change. Some actions to reduce maintainability are setting norms and standards for user interfaces, reports, messages, encryption, and file-naming modules and programs; document; modularize.
8. What Kinds of Controls Should We Give a Software for it to Become Fault-Tolerant?
- Files: Records header (header) and end (trailer);
- Backups (backup);
- Log files to undo or redo transactions;
- Mirroring (simultaneous recording on two disks).
9. Give Examples of Types of Failures that Can Occur in Software.
- Human: Typing or operating system error;
- Transaction: Overflow error at runtime, division by zero, etc.;
- System: Hardware problems, lack of energy, etc.;
- Communication: Line failure, etc.;
- Software: Development errors.
10. What Limitations Should be Considered During Software Design?
-
Limitations of technology:
- Cost;
- Storage capacity;
- Processing speed;
- The technology is likely to fail.
-
Impacts of imperfect technology:
- Use different processor/distribution/communication;
- Redundancy: Repetition of activities and data;
- Inclusion of derived data (e.g., totalizers);
- New activities increased as a function of imperfect technology (e.g., audit).
-
Survey of Technological Requirements along with Users:
- Geographic location of users/data transport;
- Operational problems in user activities;
-
Definition of the hardware and software production:
- Firing frequency of activities;
- Volume of data (initial estimate of growth, political evacuation);
- Response time;
- Technical restrictions (new environment?);
- Environmental constraints (temperature, etc.);
- Reliability requirements (minimum time between failures);
- Security constraints (classes of users and access);
- User interface.