Software Development Flashcards
What is the purpose of software documentation and the different types associated with software development?
Software documentation is written text or illustration that accompanies computer software or is embedded in the source code. It either explains how it operates or how to use it, and may mean different things to people in different roles.
Documentation is an important part of software engineering. Types of documentation include:
Requirements – Statements that identify attributes, capabilities, characteristics, or qualities of a system. This is the foundation for what will be or has been implemented.
Architecture/Design – Overview of software. Includes relations to an environment and construction principles to be used in design of software components.
Technical – Documentation of code, algorithms, interfaces, and APIs.
End user – Manuals for the end-user, system administrators and support staff.
Marketing – How to market the product and analysis of the market demand.
What are the steps in the software development life cycle?
1) Planning
2) Analysis
3) Design
4) Testing & Implementation
5) Maintenance
What occurs in the planning stage of the software development life cycle?
The planning stage involves a preliminary analysis, , propose alternative solutions, describe costs and benefits and submit a preliminary plan with recommendations.
What occurs in the analysis stage of the software development life cycle?
The analysis stage defines project goals into defined functions and operation of the solution. It is the process of gathering and interpreting facts, diagnosing problems and recommending improvements to the system. Analyzes end-user information needs and also removes any inconsistencies and incompleteness in these requirements.
A series of steps followed by the developer are:
- Collection of Facts: End user requirements are obtained through documentation, client interviews, observation and questionnaires,
- Scrutiny of the existing system: Identify pros and cons of the current system in-place, so as to carry forward the pros and avoid the cons in the new system.
- Analyzing the proposed system: Solutions to the shortcomings in step two are found and any specific user proposals are used to prepare the specifications.
What occurs in the design phase of the software development life cycle?
Design is carried out which Describes desired features and operations in detail, including screen layouts, business rules, process diagrams, pseudocode and other documentation.
Development is carried out (coding)
What occurs in the testing and implementation phase of the software development life cycle?
A special testing environment is set up then checks for errors, bugs and interoperability.
Acceptance, installation, deployment: The final stage of initial development, where the software is put into production and runs actual business. Also should include aspects such as training
What happens in the maintenance phase of the software development life cycle?
Maintenance: During the maintenance stage of the SDLC, the system is assessed to ensure it does not become obsolete. This is also where changes are made to initial software. It involves continuous evaluation of the system in terms of its performance.
What are the two main development methodologies?
Agile & Waterfall
How does the waterfall method work?
The waterfall model is one of the oldest methodologies and uses a sequential approach
where development is seen to be moving downwards through phases where the output
from each stage becomes the input for the next.
This method is strict and emphasis is placed on planning, sticking to targets and structured
documentation at the end of the development. Testing is carried out at the end of each
phase. It is an easy to implement method however problems can arise if requirements
change or a problem is brought through to the next phase as there is little room to return to
a previous stage of the development.
How does the Agile method work?
Agile methods are people oriented and allow for effective response to change. Creating a
working system that meets the needs of stakeholder and allows for implementation at different time points. Agile principles focus on delivering working software at regular short intervals and encourage practice that accommodates change at
any stage of the development process. This means that all stakeholders play an important
role in the development process facilitating feedback leading to more satisfactory
outcomes. The principles do not act as a structure for development but more as guidelines
on how to deliver software in an agile manner. Agile lends itself best to small projects of
small close teams. Development is carried out in a series of ‘sprints’ based on the
requirements of the system
What is unified modelling language (UML)?
The Unified Modeling Language (UML) is a general-purpose, developmental, modeling language in the field of software engineering, that is intended to provide a standard way to visualize the design of a system.
What are the two main types of UML views?
Static (or structural) view: emphasizes the static structure of the system using objects, attributes, operations and relationships. It includes class diagrams and composite structure diagrams. Since structure diagrams represent the structure, they are used extensively in documenting the software architecture of software systems. For example, the component diagram describes how a software system is split up into components and shows the dependencies among these components.
Dynamic (or behavioral) view: emphasizes the dynamic behavior of the system by showing collaborations among objects and changes to the internal states of objects. This view includes sequence diagrams, activity diagrams and state machine diagrams. Behavior diagrams emphasize what must happen in the system being modeled. Since behavior diagrams illustrate the behavior of a system, they are used extensively to describe the functionality of software systems. As an example, the activity diagram describes the business and operational step-by-step activities of the components in a system.
What are the main steps in the requirement gathering process?
- Requirements gathering
The developers discuss with the client and end users to know their expectations from the software - Requirement organisation
The developers prioritize and arrange the requirements in order of importance, urgency and convenience. - Negotiation and discussion
If requirements are ambiguous or there are some conflicts in requirements of various stakeholders, if they are, it is then negotiated and discussed with stakeholders. Requirements may then be prioritized and reasonably compromised.
The requirements come from various stakeholders. To remove the ambiguity and conflicts, they are discussed for clarity and correctness. Unrealistic requirements are compromised reasonably. - Documentation
All formal & informal, functional and non-functional requirements are documented and made available for next phase processing.
What are functional and non-functional requirements?
Functional requirements are those which define functions and functionality within and from the software system.
EXAMPLES -
Search option given to user to search from various invoices.
User should be able to mail any report to management.
Non functional requirements are are not related to functional aspect of software. They are implicit or expected characteristics of software, which users make assumption of. Non-functional requirements include - Security Logging Storage Configuration Performance Cost Interoperability Flexibility Disaster recovery Accessibility
What is a use case?
Use Cases are the next step in the design process after requirements gathering. Use cases integrate the requirements into a comprehensive package that describes the interaction of the user with the system
Use Cases are text documents, written in plain English, which describe a scenario in which an “Actor” interacts with the “System”.