Return to Video

lib.utexas.edu/.../Requirements_Analysis_part_2.mp4

  • 0:00 - 0:03
    There's other forms of software
    requirements.
  • 0:03 - 0:07
    There's also architectural requirements.
    By component naming, you want to be
  • 0:07 - 0:12
    consistent. Compatibility with other
    systems. Interfaceability, you want
  • 0:12 - 0:16
    loose coupling to allow you to meet
    that one.
  • 0:16 - 0:23
    Upgradability, so this is important if you
    want to -- if you think you'll be
  • 0:23 - 0:27
    putting out future versions at a
    later time.
  • 0:27 - 0:33
    And even buildability, can you do
    daily builds? Can you make that easy
  • 0:33 - 0:37
    to be able to deploy more software,
    more quickly to more customers.
  • 0:37 - 0:41
    So there's a lot of things that go
    into the architectural aspects
  • 0:41 - 0:44
    of how you build your software
    that roll up into non-functional
  • 0:44 - 0:48
    requirements. There's constraints --
    requirements related to constraints like
  • 0:48 - 0:50
    system design, there may be
    hardware restrictions,
  • 0:50 - 0:53
    standards conformance,
    legal issues,
  • 0:53 - 0:56
    organizational issues,
    we've talked about functional or
  • 0:56 - 1:00
    non-functional, and may even come from
    users and organizations
  • 1:00 - 1:04
    and be conflicting, so those all need
    to be resolved as well.
  • 1:04 - 1:07
    So these fall into the category of
    contraints.
  • 1:07 - 1:10
    Good requirements have to be --
    have to have a number of attributes.
  • 1:10 - 1:15
    They have to be possible,
    feasible to actually do within budget.
  • 1:15 - 1:18
    You have to be necessary,
    someone has to really want them,
  • 1:18 - 1:21
    you have to trace it back to a
    use case or user story.
  • 1:21 - 1:27
    You have to be prioritized. Unfortunately,
    our customers can't say that everything is
  • 1:27 - 1:31
    top-priority, so we have to find a way
    of prioritizing them.
  • 1:31 - 1:36
    Unambiguous is only one interpretation.
    It's easy to read, easy to understand.
  • 1:36 - 1:40
    You have to be concise. Only the
    information needed, don't need to go
  • 1:40 - 1:45
    into noisy explanation, that's not
    necessary.
  • 1:45 - 1:49
    And then Verifiable. If you can't test it
    or measure it, then you don't know
  • 1:49 - 1:52
    whether you'll be done. So these are
    just some imporant characteristics
  • 1:52 - 1:55
    of requirements that need to be
    understood.
  • 1:55 - 2:00
    In this next section, let's talk about
    the requirements development process.
  • 2:01 - 2:06
    Here, Weinberg shows these steps
    to ellicit and analyze requirements.
  • 2:06 - 2:10
    Starts with problem recognition,
    discovering and gathering,
  • 2:10 - 2:15
    then evaluation and synthesis.
    Modeling, we'll talk about modeling,
  • 2:15 - 2:20
    and then specification --
    packaging and format final review for --
  • 2:20 - 2:24
    this is his process for eliciting
    and analyzing requirements.
  • 2:24 - 2:28
    And the first circled section there
    is what we'll concentrate on first,
  • 2:28 - 2:33
    the elicitation analysis, then we'll go
    into the modeling, and then finally talk
  • 2:33 - 2:37
    a little bit about -- we'll talk about
    specification then a little bit about
  • 2:37 - 2:40
    modeling and validation.
  • 2:40 - 2:45
    At a high level, Carl Weiger's
    requirements development process
  • 2:45 - 2:50
    is somewhat similar. Elicitation into
    analysis, there may be some clarification
  • 2:50 - 2:54
    that has to go back into the
    elicitation phase.
  • 2:54 - 3:01
    Into the specicication, validation may
    cause us to rewrite the specification.
  • 3:01 - 3:05
    Validation may also cause us to
    reevaluate the requirements
  • 3:05 - 3:10
    and even to close and correct gaps
    in the requirements which takes us
  • 3:10 - 3:13
    all the way back to
    the elicitation phase.
  • 3:13 - 3:17
    So you can see even in the
    requirements process,
  • 3:17 - 3:23
    it can't be waterfall-ish. It's got
    to have feedback. Re-do clarification,
  • 3:23 - 3:28
    reevaluation, so even just the
    requirements phase itself
  • 3:28 - 3:35
    is a multi-phase process or subprocess
    and so rework and reevaluation often
  • 3:35 - 3:42
    is necessary. From a capability maturity
    model integrated software framework
  • 3:42 - 3:47
    at level two maturity -- maturity
    level two, you start to already see
  • 3:47 - 3:51
    requirements, management coming
    into play, so this is important already
  • 3:51 - 3:58
    at level two. The staged model and
    so what this is basically saying --
  • 3:58 - 4:03
    saying that of the seven basic things
    you need to be able to do
  • 4:03 - 4:07
    from project management perspective
    and key knowledge areas,
  • 4:07 - 4:12
    requirements management along with
    project planning, project monitoring
  • 4:12 - 4:18
    and control, supplier agreement,
    management measurement analysis,
  • 4:18 - 4:22
    project planning and quality assurance,
    and configuration management.
  • 4:22 - 4:27
    These are the top seven that form
    the basis, one of which is requirements.
  • 4:28 - 4:31
    Some more details here. Each of the
    maturity levels.
  • 4:31 - 4:35
    The name of that maturity level --
    initial, managed, defined,
  • 4:35 - 4:37
    quantitatively managed
    and optimizing --
  • 4:37 - 4:41
    And you can see where requirements
    management is at level two,
  • 4:41 - 4:44
    but requirements development is
    at level three.
  • 4:44 - 4:49
    These things show early and are
    very important to set the basis,
  • 4:49 - 4:52
    the foundations for all the maturity
    levels to come,
  • 4:52 - 4:56
    so requirements are very important
    to address early.
  • 4:56 - 4:59
    There's a five-step process to do
    problem analysis during the
  • 4:59 - 5:03
    requirements phase. Step one is to
    identify the problem.
  • 5:03 - 5:08
    The little template there can be used
    to specify that problem.
  • 5:08 - 5:11
    You basically fill it out, so on the left,
    the problem of, then you describe
  • 5:11 - 5:16
    your problem effects, and then you
    identify the stakeholders affected by
  • 5:16 - 5:22
    the problem, the result of which is an
    impact on some set of stakeholders
  • 5:22 - 5:24
    in business activities,
    you need to describe that.
  • 5:24 - 5:28
    And then the benefits of your new system
    are indicated.
  • 5:28 - 5:32
    The proposed solution -- you indicate
    the proposed solution,
  • 5:32 - 5:36
    list of few key benefits that your
    new system wiill provide.
  • 5:36 - 5:40
    Once you identify the problem.
    we have the root cause of problems,
  • 5:40 - 5:44
    so you can use in step two,
    fishbone or Ishikawa diagram
  • 5:44 - 5:51
    to help you identify the problem.
    Step three, identify the actors.
  • 5:51 - 5:54
    Step four, draw the system boundaries
    so you know what's inside
  • 5:54 - 5:59
    and what's outside. And step five,
    you need to be able to identify
  • 5:59 - 6:03
    the constraints on your proposed
    solution.
  • 6:03 - 6:09
    This is an actual example of an Ishikawa
    diagram from industry
  • 6:09 - 6:15
    trying to address the issue or the
    problem of a Linux distribution technology
  • 6:15 - 6:21
    that was difficult to use. You can see
    the main focal areas are on technology,
  • 6:21 - 6:25
    people, process and quality
    and customer support, and logistics,
  • 6:25 - 6:30
    and you can see some of the details --
    we went down to about three levels here...
  • 6:31 - 6:35
    to allow us to get the data
    we needed to make adecision
  • 6:35 - 6:39
    on the requirements, changes we needed
    to get our new product out the door.
  • 6:39 - 6:44
    So I just wanted to show you what
    it looks like when you do this
  • 6:44 - 6:50
    in real industry environments.
    These techniques I'm talking to you about
  • 6:50 - 6:55
    are actually used in industry settings
    and are very effective.
  • 6:55 - 6:59
    Constraints actually come in many forms.
    You can see the different sources here,
  • 6:59 - 7:05
    system constraints, environmental
    resource, and schedule,
  • 7:05 - 7:10
    economic, political, and technical.
    There's some examples there.
  • 7:11 - 7:16
    Each of these sources of constraints
    needs to be evaluated very closely.
  • 7:17 - 7:23
    In the past, I've been burned by not
    properly understanding the constraints
  • 7:23 - 7:29
    that, for example, legal issues with
    open source software
  • 7:29 - 7:32
    if you don't have that documented
    very carefully.
  • 7:32 - 7:36
    People have been bitten on that one.
    Security requirements, there's different
  • 7:36 - 7:40
    security requirements for here
    versus Europe.
  • 7:40 - 7:44
    So you have to really go into the details,
    you know, licensing issues.
  • 7:44 - 7:48
    There are multiple licensing types
    for open-source software,
  • 7:48 - 7:52
    which one are you going to use?
    So these all have to be considered
  • 7:52 - 7:55
    during a requirements phase as
    constraints on the problem,
  • 7:55 - 7:59
    these limit the degrees of freedom
    so you need to consider these early
  • 7:59 - 8:01
    during this phase.
  • 8:01 - 8:04
    The next thing you want to do is
    separate the problem from the solution.
  • 8:04 - 8:10
    You have the problem situation,
    you need to obviously create a
  • 8:10 - 8:14
    problem statement and implementation
    statement and then that's going to be used
  • 8:14 - 8:20
    ultimately for verification, the
    implementation, definition back to the
  • 8:20 - 8:24
    problem statement to make sure you're
    building what you were told to build
  • 8:24 - 8:28
    and then there's going to be a validation
    step back to the problem situation
  • 8:28 - 8:31
    to make sure you're actually
    solving problem.
  • 8:31 - 8:34
    There will be some correctness
    and correspondence relationships
  • 8:34 - 8:39
    between the problem statement
    and the problem situation
  • 8:39 - 8:47
    to the system and we will -- but it first
    starts with, rather than proposing
  • 8:47 - 8:54
    the solution, first separate problem
    situation and look at it from top-down.
  • 8:54 - 8:58
    The most obvious problem might not be
    the one that you need to solve,
  • 8:58 - 9:01
    so that's why it's good to separate
    the problem first,
  • 9:01 - 9:05
    look at it independently,
    discuss the problem statement
  • 9:05 - 9:11
    with your stakeholders, and look at
    the different design choices.
  • 9:11 - 9:17
    So, again, the most obvious problem may not
    be the one you're actually trying to solve.
  • 9:17 - 9:22
    You want to check for the solution
    correctly solves the stated problem.
  • 9:22 - 9:24
    But, also, check that
    the problem statement
  • 9:24 - 9:28
    corresponds to the real needs
    of the stakeholders.
  • 9:30 - 9:32
    Problems can be separated
    in different ways.
  • 9:32 - 9:36
    For example, let's consider this one
    requirement.
  • 9:36 - 9:39
    You want to prevent unauthorized access
    to a University of Texas machine.
  • 9:39 - 9:42
    Well, we can separate this into different
    domains.
  • 9:42 - 9:45
    On the left, you see the application
    domain.
  • 9:45 - 9:49
    These are the things that the machine --
    the computer, cannot observe directly.
  • 9:49 - 9:54
    Like, students, intruders, sysadmin,
    signed forms, even stickies
  • 9:54 - 9:57
    with your password on them.
  • 9:57 - 10:01
    This is in, I'll call this the real world
    domain, or the application domain.
  • 10:01 - 10:03
    On the right-hand side is
    the machine domain.
  • 10:03 - 10:06
    This is where your software is going
    to run things that are private
  • 10:06 - 10:07
    to the machine.
  • 10:07 - 10:11
    The encryption algorithms, the password
    files, etc.
  • 10:11 - 10:14
    And then the that thing in the middle --
    the shared things --
  • 10:14 - 10:18
    Think of this almost as the interphase
    requirements for the system.
  • 10:18 - 10:23
    Where you need to deal with things, like
    T-cards, or passwords, or user names,
  • 10:23 - 10:28
    or things being typed at the keyboard.
    Shared things between the real world,
  • 10:28 - 10:30
    and the machine.
  • 10:30 - 10:33
    Normally in the form of the user
    interphase,
  • 10:33 - 10:38
    and this is where we also begin to think
    about our user interphase requirements.
  • 10:38 - 10:42
    So, now we can think of these domain
    properties, and requirements, on the left.
  • 10:42 - 10:45
    Again, that's the application domain.
    That's where we have domain properties,
  • 10:45 - 10:47
    and requirements.
  • 10:47 - 10:52
    Domain properties, think of them as things
    in the application domain that remain true
  • 10:52 - 10:54
    whether or not we ever build the system.
  • 10:54 - 10:57
    You know the sun's going to come up,
    and the sun's going to set.
  • 10:57 - 11:01
    These things are true regardless of
    whether we ever build a system or not.
  • 11:01 - 11:05
    The requirements are the things in
    the application domain
  • 11:05 - 11:10
    that we want to be true by delivering
    on the system we're proposing.
  • 11:10 - 11:13
    So, those are the things in the application
    domain. On the right-hand side,
  • 11:13 - 11:17
    in the machine domain, we have
    computers and we have programs.
  • 11:17 - 11:21
    The things that actually implement --
    that control one way or the other
  • 11:21 - 11:24
    the application domain.
    And then in the middle,
  • 11:24 - 11:29
    we have the specification. The specification
    is a description of the behaviors
  • 11:29 - 11:33
    that our program has to have in order
    to meet the requirements.
  • 11:33 - 11:37
    Normally written in terms of shared
    phenomenon.
  • 11:37 - 11:40
    Again, things through the user interphase.
  • 11:40 - 11:45
    Data being passed back and forth between
    the machine and the user. Things like this.
  • 11:45 - 11:49
    Some of that is described in
    the specification.
  • 11:49 - 11:52
    Which is the shared phenomenon.
  • 11:52 - 11:56
    Now, in this application, and machine
    domain, kind of Venn diagram here,
  • 11:56 - 11:58
    we can shift things around as well.
  • 11:58 - 12:00
    We can move the boundaries.
  • 12:00 - 12:03
    If we're building an elevator control
    system, for example,
  • 12:03 - 12:06
    here's how that might look. The application
    domain would be the real world.
  • 12:06 - 12:09
    You know, people waiting; people in
    the elevator; people wanting
  • 12:09 - 12:13
    to go to a particular floor; the elevator
    motors and safety rules
  • 12:13 - 12:16
    that are bolted to the elevator.
  • 12:16 - 12:19
    We have the scheduling algorithms,
    and the control programs
  • 12:19 - 12:22
    actually running in the machine domain,
    and then we have all this
  • 12:22 - 12:25
    overlap. All this intersection.
  • 12:25 - 12:28
    The elevator call buttons; the floor
    request buttons; etc.
  • 12:28 - 12:32
    Now, we could move things from
    the application domain
  • 12:32 - 12:35
    into the shared domain
  • 12:35 - 12:38
    by changing how the system's
    going to behave.
  • 12:38 - 12:42
    We can add sensors, for example,
    to detect when people are waiting.
  • 12:42 - 12:45
    And doing this type of thing changes
    the nature of the problem being solved.
  • 12:45 - 12:48
    So, all this --
  • 12:48 - 12:52
    The application domain, the shared
    domain, the machine domain,
  • 12:52 - 12:55
    what goes where can change based on
    how we define the problem.
Title:
Video Language:
English

English subtitles

Revisions