Software Methods and Tools
ICS 121, Spring 2000
Midterm Exam Study Guide
General Format and Scope
Specific Materials Covered
2. Assignments one, two and three.
3. Readings from Schach text: specified sections of the following chapters:
4. Readings from Mythical Man-Month, first half
Topic Review
Software Engineering Scope
Software engineering is multi-person construction of multi-version software.
Software costs and problems: typically delivered late, over budget, and faulty.
Software engineering attempts to provide the tools to consistently fashion software to solve appropriate problems in an orderly, predictable manner.
Software development requires a broad range of skills; systems are too complex to be developed by an individual.
Requirements must address all of user needs; design decomposition is critical to mastering complexity.
Testing and maintenance costs are outrageously high, addressed in part by lifecycle validation, test planning, and anticipating change.
Software is unique.
Software Engineering Principles
|
Rigor and Formality |
Well-defined, precisely-stated, sound steps, which may be written out in a mathematical notation. |
|
Separation of Concerns |
Individual aspects are identified, especially to divide responsibility. |
|
Modularity |
Decomposition of a problem into individual components. |
|
Abstraction |
Identification of important aspects of a problem and ignoring details. |
|
Anticipation of Change |
Assumption that some modification must be planned for. |
|
Generality |
Identification of more than the immediate problem. |
|
Incrementality |
Plan for delivering subsets of a software system. |
Software Qualities
|
Product Qualities |
||
|
Correctness |
external |
the software behaves according to requirements |
|
Reliability |
external |
users feel they can depend on the software |
|
Robustness |
external |
the software behaves "reasonably" even in unanticipated circumstances |
|
Performance |
external |
the software uses available resources economically |
|
Usability |
external |
the software is well suited to the circumstances of the end users |
|
Understandability |
internal |
the software can by easily analyzed by people who didn't write it |
|
Verifiability |
internal |
the satisfaction of particular properties of the software can be easily determined |
|
Maintainability |
internal |
the software is easy to change to fix faults or add new functionality |
|
Reparability |
internal |
faults in the software can be corrected with minimal effort |
|
Evolvability |
internal |
new functionality can be added easily |
|
Reusability |
internal |
the software can serve as part of a new system |
|
Portability |
internal |
the software can run in new environments with little or no effort. |
|
Interoperability |
internal |
the software can coexist and cooperate with other systems |
|
Process Qualities |
||
|
Productivity |
external |
performance of the development process |
|
Timeliness |
external |
ability to deliver software on time |
|
Visibility |
internal |
all steps and current status are documented clearly and can be easily accessed |
Software Production
Basic phases: requirements analysis and specification, architectural and detailed design, implementation and integration, operation and maintenance.
Software lifecycle consists of phases, intermediate products, and reviews.
Build and Fix approach is not a lifecycle model.
Stagewise and Waterfall lifecycle models develop software in successive phases.
The spiral model is a metamodel guided by risk assessment.
A software process is a device for producing a software product; a software process description can be multiply instantiated.
Lifecycle V&V
Validation is comparison to [informal] user needs, while verification is comparison to a produced [formal] specification.
Test planning must determine what properties should be tested, who should perform the testing, when does testing stop.
Testing should be done in phases that roughly correspond to the development phases, where planning for each testing phase should be done in the corresponding development phase. Testing phases are performed in reverse order of the development phases.
Lifecycle reviews can be done at any phase. Walkthroughs are a two-step process, while inspections are a five-step process.
Cleanroom is the ultimate lifecycle review process.
Prototyping and Scenarios
Prototyping and scenario building are knowledge acquisition activities.
Both are mockups of the eventual software product, which help to ensure that the users and client play an active role in requirements analysis so that their needs are elicited.
A rapid prototype is a hastily coded (read hacked up), executable software mockup that exhibits some key functionality.
Scenarios are typically user interaction mockups, a series of diagrams depicting a series of events and the reaction of the system.
Mockups demonstrate the behavior of the system in a way eventual users can comprehend.
Mockups in requirements analysis address completeness, adequacy, usability, consistency, feasibility.
Mockups are especially useful in exploratory programming and prototyping software lifecycle models.
Prototyping can be done throughout the lifecycle: from analyzing and acquiring requirements knowledge, to take the place of the requirements specification, to evaluating design alternatives, to providing an initial implementation that is refined. Which are good uses?
Prototyping tools include: executable specification languages, very high-level languages, 4th generation languages, graphical user interface toolkits, domain-specific application generators.
Cognitive Walkthroughs help to "test" the usability of an interactive system by evaluating the mockup on sample human-computer interactions. The focus is on the tasks and interface and analyzing usability attributes such as learnability, efficiency, memorizability, error recovery, user satisfaction.
Requirements Analysis and Specification
Requirements analysis addresses client/users' needs, considers both functional and non-functional requirements, and develops a contract between client and developer.
Requirements state what and not how. A requirements specification should be abstract, complete, consistent, unambiguous, precise, feasible, even, modifiable, reference tool. Each of these present common problems in requirements specification.
Requirements specification components (purposes, desirable characteristics)
Requirements analysis techniques range from interviews to system modeling; the important thing to remember is that the client is in charge while the developer learns and organizes.
Acceptance test plans are developed during requirements analysis; system test plans, which are more comprehensive, are developed during refinement of the requirements specification.
Requirements Specification Models
System models enable understanding by abstractly describing the system in a notation the user can also comprehend.
Structured Systems Analysis is a structured (semi-formal), graphical technique with a functional perspective based on hierarchical dataflow diagrams.
Entity-Relationship Models are a structured (semi-formal), graphical technique with a data orientation that is often used to supplement dataflow diagrams.
Finite state machines are a [semi-]formal, graphical technique based on specifying states and transitions between states.
Petri Nets are a formal, graphical technique that provides the capability to specify synchronization and timing for concurrent and real-time systems.
Use Cases are descriptions of a small task the user (actor) would do when using the system, often corresponding ot a feature of the system.