Chapter 3: Software Processes




  • Sommerville identifies a software lifecycle known as the waterfall model. What are the main stages inside of this lifecycle? For each phase that you discuss, determine what activities occur in this phase and what types of tools would support these activities.


The main stages are:
  1. Gather and define requirements. In this phase, the engineers decide how the finished system will operate both internally and externally. The most useful tool in this stage is documentation – the requirements should be extremely explicit and should be approved by both the engineers and a representative user body.
  2. Design the system. This is where the requirements are allocated to different components of software. After this phase, there should be a clear picture of how the system will be structured. A UML tool or something of the sort is very useful here – seeing the structure as a picture is almost always more clear than a description.
  3. Implement and perform unit tests. The components are written and tested in this phase. Each component should be built so that it can be independently tested. A UML tool (or the like) that can generate code stubs is helpful here, as is a development environment in which the implementer is comfortable. A unit testing tool is required here to do the tests.
  4. Integrate units and perform system tests. During this phase, the components are "glued" together and tested as a system. This is where the engineers need to make sure that the whole system adheres to the requirements. A unit testing tool is also a requirement here.
  5. Maintain. Maintenance occurs whenever problems are found in the software or new requirements are added. Detailed bug reports and/or feature requests are probably the most useful tool here.
bps

  1. Requirements analysis and definition: this is the point where the client tells us what he wants, and the designer figures out how to make it work, the system specifications are written. Some tools that could be used at this stage are word processors, and questionnaires, since this involves getting feedback from users.
  2. System and Software design: this stage involves mapping out the software to be designed, determining the devises needed, models would be used here.
  3. Implementation and unit testing: at this point the actual code is written
  4. Integration and system testing: the software is combined with the system it will be working with and further testing is done.
  5. Operation and maintenance: at this point the system is installed and normal maintenance done on it, ie. Correcting the bugs found in testing, as well as new bugs, installing new software and upgrades.Deb Wright

  • Requirements Analysis and Definition -The system's requirements and constraints are established. They are designed from user scenarios, user profiles, user interatction graphs, and other ways of relaying the current state of affairs and how it will be changed.
  • System and Software Design -An overall architecture of both hardware and software is developed. The main tool here (I think) is graphs which show interaction.
  • Implementation and Unit Testing -The program is written and tested in units. These units were laid out in the previous step. Tools such as JUnit are utilised in this step.
  • Integration and System Testing -The individual units are brought together and tested as a whole. This stage ensures that the requirements defined in the first step are met.
  • Operation and Maintenance -System is installed and used. Tools required here are hardware maintenance/replacement, patches and bug fixes, etc.

Elizabeth Zehner


  • Define the terms validation and verification. Next, enumerate some existing tools that might assist a software engineer when he/she is performing these activities.



Validation is when the software is evaluated to make sure that it has met all of the requirements. Either very complete unit tests can be used here, or actual user testing.Verification is determining whether or not a given phase in the cycle meets its requirements. A unit testing tool is invaluable here. bps


Validation and Verification refer to the testing of software for bugs, prior to its being delivered to the client. #Verification can be considered to be the part of the testing process that makes sure the software meets the specifications that the client requested. Validation is the process of finding and fixing the bugs in the system and making sure that it works correctly. Jwhich and Junit would be tools that would help in this proccess, as both are used to find bugs in software. Deb Wright


Validation is a step in the Verification process. Validation checks the subprograms to make sure they are doing what they're supposed to do. A helpful tool would be JUnit or someother unit tester, a debugger, etc. Verification checks the correctness of the whole system. Alpha testing is good tool for verification checks.

Elizabeth Zehner


One of the reasons that I asked this question was to ensure that we grappled with the definition of these terms. After I read Section 3.5, I often think that validation is somehow a special case of verification and validation. If you do a search on Google you will often find material about Independent Verification and Validation (IV&V). It is often hard to make sense of all of these terms.

Personally, I view the term verification as asking the question "are we building the system right?". Then, I view the term validation as asking the question "are we building the right system?". If you read the initial definition of Sommerville you will see that he proposes a similar understanding. This means that verificiation is part of the testing process and as such any number of testing tools might be used! However, validation involves making sure that we are really developing the software that our customer desires and there is much less tool support for this process. Greg



  • Explain the terms tools, workbenches, and environments. How does your understanding of the term integrated development environment (IDE) fit into your provide definition of the previous terms?


  1. A tool supports an individual task.
  2. A workbench consists of tools integrated to achieve a greater result than the individual tools.
  3. An environment supports the entire development phase – it consists of integrated workbenches.

IDE is not an environment in this sense. An IDE only supports the implementation phase. bps


  1. Tools are individual programs that can be stand alone or a part of a set of tools (workbench), they help the designer with the programing, doing tasks like finding bugs, and checking words, compiling the program, etc.
  2. Workbenches are generally a collection of tools that work with systems and support specific processes or methods , such as the design or specification, and include a list of rules or guidelines that apply to the software.
  3. Environments support most of the software procces and may include several integrated workbenches, and provide infrastructure support for data, control and presentation integration or the process-centered environments are more general and and include process knowledge and a process engine to advise developers on what tools or workbenches to use and when.
  4. An integrated development environment then would be an environment where the tools and workbenches are integrated together and provide specific integrated support for data control and presentation. Deb Wright


  • A Tool supports a single user process. They can either stand alone, or be grouped into a workbench.
  • A Workbench supports a phase of the software design process. Consists of a group (suite?) of tools that are somewhat integrated.
  • A Environment supports a substantial part (more than one phase) of the software design process. Usually includes several workbenches that are somewhat integrated.
  • An IDE, by previously stated definition, should be a well-integrated group of workbenches which support a substantial part of the software design process.

Elizabeth Zehner



Elizabeth Zehner appears to believe that an IDE is the same as an environment. Yet, bps seems to be asserting that an Integrated Development Environment (IDE) is really not an environment if we use the definition provided by Sommerville. I would tend to agree with this assertion from bps. Currently, most IDEs support design and implementation. We are beginning to see IDEs that have testing support integrating into them as well. However, most IDEs do not really support requirements elicitation and analysis. Moreover, most IDEs do not support software maintenance beyond supporting regression testing and the usage of a version control repository. Do you think that we will see an IDE in the next few years that completely supports the software lifecycle? Elizabeth, what made you decide that an IDE and an environment were essentially the same? Greg



Link to this Page