Four requirements engineering activities -Q1
- Requirements Elicitation
"Requirement gathering" - the practice of collecting the requirements of a system from users, customers and other stakeholders.
- Requirements Analysis
Take note of possible conflicting requirements of stakeholders. Determines needs or conditions to meet for altered product or project.
- Software Requirements Specification (SRS)
An SRS lays out function/non-functional requirements for a software system that will be developed, use case sets too.
- Requirements Validation
Checking that the documented requirements and models are consistent and meet the needs of the stakeholder.
Identify 5 other types of software requirement -Q2
- Business Requirements - High level business goals of the organisation building the product, or customer who comissioned the project. Usually provided as single page of high level bullets.
- Market Requirements - Customer's wants and needs for product/service. Outlines market needs.Also, have a prioritised bullet list or table, less than 5 pages long.
- Functional Requirements - Cover the functionality of product in general. Depending on the product, FR's can be several hundred pages.
- Non - Functional Requirements - Not related to "functionality" of product. - Cover goals such as Reliability, Scalability, Security, Integration. Many projects don't specify these explicitly.
- UI Requirements - User interface specs aren't considered "requirements" in traditional requirements management theory. UI specs are indeed requirements. Should be considered an integral part of requirements for software that uses a UI. - Issues surrounding disability, e.g. visual impairment.
Explain what is meant by software design -Q3
- Software Design is the process by which any agent creates a specification for a piece of software that is created to reach goals.
- Also, Software Design is about looking at a problem that can be solved by developing a software solution, having planned and implemented it. This includes low level component and algorithm design and high level architecture design.
Identify 5 categories of a role in a SD project-Q4
- Manager - Manages the project overall, decides when to employ more staff as well as when to let staff go. Is solely responsible for the progress of the project he or she is managing.
- Testers - Software testers are employed to test various builds of a software application to ensure it is free of critical program crashing bugs as well as eliminating bugs that can improve program efficiency, stability and functionality.
- Designers - Designers will do the designing of the software application, from designing how the interface should look to designing the logical data model, which gives indication of how data flow (data input/output) should be handled in the program's code.
- Programmers (or Developers) - Programmers will carry out the actual implementation of creating the application's interface as well as coding the core components in order to allow to application to function.
- Systems Analyst - Systems Analysts carry out an analysis of a current system (if one exists) and compare it to the system that will replace it. Most importantly, a systems analyst would perform a cost-benefit analysis, in order to justify whether the benefits outweigh the costs, or vice versa.
Identify 4 risks that SD projects contain -Q5
- Poor productivity - Due to long project deadlines, it is often found that there is a lack of urgency in staff, and so that urgency is only found when the deadline of the project draws near. This is commonly dubbed as "Student Syndrome", the belief that "Given a deadline, people tend to wait until the deadline is nearly here before starting the work". Having short iterations, right people on team will help.
- Requirements Inflation - As the project is in progression, new features can emerge (from the client) that weren't identified at the start of the project that will threaten deadlines and estimates. The only way this can be best managed is by having regular client - developer meetings.
- Employee Turnover - Key personnel leave project, taking critical information away that can delay and derail the project. A key method of resolving this issue would be to share details about the key elements of the project team-wide as well as increasing collaboration.
- Inherent Schedule Flaws - Software development, given the intangible nature and uniqueness of software, is inherently difficult to estimate and schedule. To resolve this, manager should get the team more involved in planning and estimating. Get early feedback from stakeholders.
Identify 4 critical success factors for SDP's -Q6
- Strong customer involvement - This is a primary factor to the success of a software development project. If the customer was not heavily involved, the requirements that will evolve, will not be anticipated unless the client and developer relationship is not maintained.
- High calibre team - This is a most important success factor for a project; this will have a direct impact in terms of keeping focus, sticking to deadlines and also impacts on cost and timelines of the project.
- Agile software development - This is a group of software development methods in which requirements and solutions evolve through collaboration between self-organising, cross functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change.
- Learning from failed projects - The team that is employed in developing the software project should have the time to reflect upon failed projects and learn from them when working on a new software project, this will ensure better success for this project.