Looks like no one added any tags here yet for you.
What is a needs assessment?
Procedures used for prioritizing and deciding how to improve a program or organization and allocate resources
Why is a needs assessment important in system analysis and design?
Identifies needs and what causes these needs and gives a plan for meeting the needs
What skills are necessary to perform an adequate needs assessment
Technical, Interpersonal, Managerial, and Analytical
(TIM-A)
Technical Skills - current technology capabilities and limits
Interpersonal Skills - How to communicate orally and in written form with stakeholders (Users, developers, managers)
Managerial - Manage projects/project change
Analytical - Understands the problems and how to fix them
Three Phases of the NA
Investigation, Data Collection, Data Use
(IDD, or Iced Dunkin Donuts)
Investigation - what are the needs
Data Collection - Surveys or Interviews; Focuses on What, Who, Where, and How
Data Use - How can we use the collected data to meet the requirements?
What are requirements?
What the system must do
Why are requirements often poorly documented?
Difficult to document, too long, contain assumptions, do not reflect the right things
Types of Requirements
Functional - The "What"
What is needed for the system to work
Example: A user should be able to generate and send an e-mail in g-mail
Non-Functional - The "How"
Hidden areas of the system that are important to the users even though they may not realize it. The factors that relate to the system's overall success i.e. scalability, reliability, and security
What is Premature Design?
Designing too early, usually during requirements process
Why is premature design problematic?
solution hopping/assumptions, analysis paralysis, lack of diverse input, unproductive
Why is cleaning up requirements important and how do you go about doing it?
May not necessarily be "perfect" the first draft.
We need to reduce the volume of requirements by removing conflicts, redundancies, and design assumptions.
Separate functional from non functional.
Find commonalities and put them in the area that makes the most sense.
Traceability
Makes sure that what the stakeholders wanted is what was produced
Why do traditional expressions of functionality lead to less than desirable results?
- Can be too complex for user to understand
- Easy to write duplicate/Conflicting requirements
- Does not give a full view of what system will accomplish
Give examples of traditional development tools
Requirements Specifications
Functional Decompositions
Data Flow Diagrams (DFDs)
ERDs
Prototypes
How are use cases better than functional decomposition, DFDs, ERDs, and Prototypes
Functional Decomposition is geared to structured development. Not suitable for web-based and object-oriented development.
DFDs (focus on what happens inside the system) and ERDs (show how data is stored) can cause confusion to users and stakeholders; too much detail
Prototypes encourage quick/dirty coding. Too much focus on UI. Can be mistaken for functional system.
Use Cases - Simplistic; Focus is simply on requirements which makes them easily identified by users; more effective
Goals of use cases?
- Show interactions b/w system and actors
- Neglects implementation-specific language
- Keeps details at a general level
- Appropriate amount of use cases
What roles do use cases provide as tools of requirements specification?
Drive requirements gathering to successful end product.
Business Rule
How a company operates (written and unwritten)
Iterative/Incremental Approaches
Facade (Outline) - Outline scope and show basic, essential, and high-level interactions
Filled (Widen) - Adding detail to use cases
Focused (Focus) - Highlights clear project requirements. By the end, you will have defined the system and should be able to build a successful application
Discuss increasing levels of granularity in development stages.
Granularity - Scope of individual use cases
Too narrow granularity = missing important/valuable details
Too broad = more complex, less readable
Choose granularity according to development effort
traditional and Holistic Iterative/Incremental methods
Waterfall method
Linear model. Software developed one step at a time. Once step is complete, move on to the next.
Rapid Application Devolpment (RAD)
Incorporates Users in Development
Spiral model
iterations to refine scope and reduce risk
Staged delivery
Cutting the project into smaller pieces
What is holistic?
view of the whole project is maintained through a strong vision of project architecture
What is iterative
Redoing something several times, improving it each time (in richness, comprehensiveness, and consistency).
What is incremental
Creating something piece by piece and adding those pieces to the whole
Goals of HI/I
The goal is to achieve adaptivity; capability of making suitable or fitting a specific situation
Principles of HI/I
Learn the Art of "Good Enough" Quality. Don't focus on getting the system in perfect, error free condition. Focus on getting the system in a state that is deployable
Divide and Conqueror
Divide up the tasks among the team.
Create Demonstrable Deliverables
Don't show business people design documents, show them something that works. ex. running code.