Software engineering is focused on the research, education, and application of engineering processes and methods to significantly increase software productivity and software quality while reducing software costs and time to market.
Software Engineering (SWE) and Computer Science(CS) have overlapping concerns, but how could one could generalize the differences between SWE and CS?
Computer scientists are primarily concerned with the design of algorithms, languages, hardware architecture, systems software, applications software, and tools. Software engineers learn much more about creating high-quality software in a systematic, controlled, and efficient manner.
Given thes two sets of issues, which is more applicable to a Computer Scientist and which to a Software Engineer?
design patterns formal specifications
estimation machine learning
scalability queueing theory
What are the software life-cycle activities?
1. software development process (the process contains the steps that will transform initial system concept into operational system)
2. software quality assurance (did we build the software right? did we build the right software?, test the software.
3. software project management (plan, schedule, estimate time and effort, risk management, etc)
List 6 software development processes.
How do we validate that we have built the right software?
acceptance (testing phase)
usability test (testing phase)
How do we verify we have built the software right?
proofs of correctness
integration test (testing phase)
automated test (testing phase)
What are 5 activities associated with Software Project Management?
1. effort cost and estimation (rss required, est delivery date)
3. risk analysis and management (foresee possible risks and develop risk reduction measures)
4. administration and coordination (monitor progress, adapt when problems/changes occur)
5. configuration management (tool to coordinate changes to requirements, goals, and software; basically tool to manage entire process)
What are the steps in the Waterfall Process Model?
1. System Requirements Definition
2. Software Requirements Analysis
3. Software Design
4. Coding & Unit Testing
5. Integration & Integration Testing
6. Acceptance Testing
What is notable about the Waterfall Process Model?
It is widely used in the military, and you never move backward in the steps.
What are some pros for the Waterfall Process Model?
1. It accommodates updates to large systems that rarely need major changes.
2. It permits pipelining of tasks (requirements analysis, design, coding, testing).
3. It makes planning, scheduling, and tracking progress simple.
What are some cons for the Waterfall Process Model?
1. Project cancellation is rarely mitigated by early achievements in design and analysis, only by late achievements in late code and testing. (projects might be obsolete by completion if it takes too long)
2. Early feedback from users is difficult to obtain since early iterations are not available to be examined (process shortfall)
3. Strict development stages and milestones make revisiting earlier stages difficult.
Is the Waterfall Process Model even useful?
The sequential approach of the waterfall model is rather old-fashioned but still effective in some circumstances.
Begin Kung Ch 2
Besides the Waterfall Process Model, list 5 other process models.
1. Prototyping Process Model
2. Evolutionary Process Model
3. Spiral Process Model
4. Unified Process Model
5. Agile Process Models
Name three Software Development Methodologies.
1. Agile Methodology: Scrum
2. Agile Methodology: XP
3. Agile Methodology: AUM
Describe the Prototyping Process Model.
The prototyping process model employs prototypes to validate the user requirements for new software before progressing too far in the development process. Note that it does not specify high or low fidelity prototypes.
What are the steps in the Prototyping Process Model?
1. Initial requirements
---loop until customer is satisfied
4. Customer Evaluation
5. (if customer isn't satisfied) Review & update
Describe the Evolutionary Process Model.
Like the Prototyping Process Model, prototyping is used to ensure customer's needs are met. But, coding is done gradually over the prototype development. Therefore, the prototypes are less disposable as the process progresses.
What are the steps in the Evolutionary Process Model?
1. Prototype version 1 (scope, concept, requirements)
2. Prototype version 2 (changes, features, functions, specifications)
3. Prototype version 3 (changes, defects, performance)
n. Prototype FINAL version (total package)
* note that each step involves respecify->redesign->reevaluate (these are circular)
Describe the Spiral Process Model.
The Spiral Process Model is a variation of the Evolutionary Process Model. It emphasizes extensive risk assessment to allow for early adaptation to changes and identification of problems.
What are the steps in the Spiral Process Model?
The spiral begins at the center and progresses outward. The plane that contains the spiral can be divided into 4 quadrants:
Q1. Determining the current phase's objectives, alternatives, and constraints.
Q2. Analyzing the strategy for achieving this phase's goals from the viewpoint of risk.
Q3. Putting into practice a solution to reach the Q1 goals in view of the Q2 risks.
Q4. Assessing the results of the risk-reduction strategies and planning the next phase.
Each "level" of the spiral considers the following part of the development process:
4. Integration and Test Plan
Describe the Unified Process Model.
This iterative approach emphasizes a heavily structured hierarchy of activities and milestones. Task categories sometimes persist throughout several phases of the project, while other task categories occur primarily in one phase.
What are the steps in the Unified Process Model?
There are not steps per se, but there are four phases:
inception - validate initial costs and budget
elaboration - identify problem domain & mitigate risks
construction - build an operational software system
transition - validate system & train users
Each task category occurs during at least one project phase:
Analysis & Design
Describe Agile Process Models.
Agile Process models acknowledge the difficulty in predicting the software development process.
Agile development is characterized by:
*small, highly competent development teams
*principal measure of progress is working code
*changes in requirements are welcome, even if late
*developers, customers, and managers are all on the same team
*software delivery is stressed more than analysis and design
What are Software Development Methodologies?
Unlike the process models, which lay out the phases of software development, software development methodologies detail the actual steps taken to accomplish the software development.
What methodology is used with the Unified Process Model?
The Dynamic Systems Development Method
What are the steps in the Dynamic Systems Development Method?
1. Feasibility study - identify risks, determine time constraints, determine resource constraints
2. Business study - prioritize requirements; design architecture; plan to build, test, deploy, and support; resolve risks
5. Implementation - Implement, train users, user approval & user guidelines, assess impact on business
What is Scrum?
Scrum is an Agile methodology in which prioritized requirements are achieved in strict time intervals with regular team input.
What are the three phases in Scrum?
The pregame phase, the development phase, and the postgame phase.
Describe the three phases in Scrum?
During the pregame phase, the product backlog lost is developed containing priorities and effort estimates. Planning and high-level design/architecture is worked out in this phase.
In the development phase, certain tasks from the product backlog list are allocated to a sprint time period (usually about 2 weeks). After the sprint, the product backlog list is updated to remove completed requirements, and tasks that may have arisen are added to the product backlog list. This phase is repeated (or continues) until there are no more requirements on the product backlog list.
Integration, system testing, documentation, and release are handled in the postgame phase.
What is XP?
XP is an Agile methodology that emphasizes rapid feedback, stressing simplicity, and embracing change.
What are the 6 phases in XP?
exploration - stories
planning - stories for next iteration (include priorities and effort estimates)
iterations-to-release - (pair programming) - analysis - design - planning for testing - testing (continuous integration) (feedback from testing integrated into design)
productionizing - small release - ALL releases must have customer approval
maintenance - updated releases
death - final release
What is AUM?
AUM stands for Agile Unified Methodology. It begins with a brief planning phase (identify requirements and derive use cases). Then there is an iterative phase which continues until final implementation and testing.
What are the two phases in AUM?
Describe the phases in AUM.
Planning: acquiring requirements
deriving use cases from requirements
allocating use cases & subsystems to iterations
producing an architectural design
Iterative: accomodating requirements change
user interface design
behavior modeling & responsibility assignment
deriving class design diagram
test-driven, deployment, integration, deployment
Begin Kung Ch 3
What is stepwise refinement?
Stepwise refinement is a traditional, top-down approach used to design software.
1. Start with initial problem statement
2. Break it into a few general steps
3. Break each general step into more detailed steps
4. Repeat until each step is specific enough to be written in pseudocode
5. Translate pseudocode into real code.
What is a traceability matrix?
A traceability matrix is a document used to correlate system requirements and user requirements, or between test cases and system requirements. The former can help identify user requirements that the system doesn't meet or system requirements that the users don't deem necessary. The latter ensures that all system requirements will be adequately tested.
What is UML?
Unified Modeling Language is a graphical modeling language for sketching classes and procedures prior to coding.
Name a few UML diagram types.
Use Case Diagram
*note there are 13 diagram types in UML 2.0*
What does a Use Case diagram do?
Models interactions between the software system and the "outside world."
What does an Activity Diagram do?
Models sequential and parallel activities taking place within the software system.
What does a Class Diagram do?
Models the software system's classes as well as their relationships with each other.
What does an Object Diagram do?
Models instances of classes, usually as a means of clarifying the class itself.
What does a Sequence Diagram do?
Models the sequence of interactions between system objects when the order is important.
What does a Communication Diagram do?
Models the means by which objects within the software system interact.
What does a Timing Diagram do?
Models the change in state of system objects over time, usually in response to external events.
What does an Interaction Overview Diagram do?
Models the "big picture" system interactions by tying together Sequence, Communication, Timing Diagrams.
What does Composite Structure Diagram do?
Models how objects work together inside a class to help achieve system goals.
What does Component Diagram do?
Models the reusable, replaceable classes and subsystems within the software system.
What does the Package Diagram do?
Models logically related groups of classes into organized structures.
What does the State Machine Diagram do?
Models the state of system objects and the transitions that may cause the state to change.
What does the Deployment Diagram do?
Models physical configuration of software and hardware that will comprise system's implementation.
In iterative software development processes (i.e., spiral), UML diagrams are often used as a _________ for the software system.
blueprint (it provides detailed specifications to which the developers adhere)
Agile software development tends to use UML diagrams as a _________ of the software system.
sketch (it provides rough guidelines for the developers to follow)
The _________________ was specifically developed to take advantage of UML's features, with Use Case Diagrams assisting in developing requirements and other UML diagrams aiding in the analysis & design.
UML _________________ assist developers in understanding customer and user software needs.
Use Case Diagrams
________________ describe what a system does from the point of view of an external observer.
Use Case Diagrams
List 3 ways Use Case Diagrams are helpful.
1) new use cases -> new requirements
2) their notational simplicity provides a good way to communicate with clients
3) collecting scenarios for a use case may suggest corresponding ideas for test cases
When an arrowed association exists between an actor and a use case, what is being indicated?
The arrow indicates that the actor is invoking the use case. Non-arrowed associations only indicate that the actor is involved in some way.
The <<__________>> relationship indicates that one use case *might* reuse the behavior of another use case, depending on how the system is implemented.
The <<__________>> relationship / stereotype is used to indicate that the actor or use case is a more specialized version of the associated actor or use case.
inherit. This is also known as the generalization relationship.
The <<___________>> relationship indicates that one use case definitely reuses all of the behavior of another use case.
_____________________ can be drawn around use cases to indicate the scope of the system, e.g., to identify which use cases will be delivered in each major release of the software system.
system boundary boxes.
Configuration management is used in environments where multiple developers are working on the same software to ____________.
prevent one developer from overwriting changes made by another developer. Version control is one facet of this.
______________ is a version control system designed to eliminate such dangers from collaborative efforts.
Configuration management enforces orderly application of programmer's changes to the system. One means of protecting everyone's changes is to permit ____________ to have write accesss to any file at a time.
one developer. This is hard to administer, and unnecessary (what if two developers need to modify different parts of the same file).
Subversion doesn't enforce serialization to accomplish configuration management. Instead, developers can edit whatever files they want and then merge their respective versions. What happens if Subversion finds potential conflicts when merging files?
The developers must manually resolve the conflicts themselves.
Begin Kung Ch 4
There are 6 categories of techniques used to elicit a customer's needs. What are they?
1) traditional (individual) - questionnaires, interviews, process analysis
2) group oriented - focus groups, brainstorming, workshops
3) early feedback - prototyping (high and low fidelity)
List and describe the three traditional (individual) methods of eliciting requirements.
1) questionnaires - predefined lists of questions. Issues not in the questionnaire don't get addressed. (-)
2) interviews - face to face question-and-answer session with stakeholder. Interviewees can be inadvertently led to emphasize or deemphasize interviewer's viewpoint. (-)
3) process analysis - stakeholders provide step-by-step explanation of how they currently operate and how they want to operate with the new software. Critical steps might be skipped by stakeholder because to them they are obvious. (-)
List and describe the three Group-Oriented methods of eliciting requirements.
1) focus groups - future users interviewed in moderated yet informal setting. Subjective; often a bitch session. (-)
2) brainstorming - informal debate among stakeholders. Hard to control; doesn't work if stakeholders aren't trying to reach solution. (-)
3) workshops - agenda driven discussions in which experiences are shared and problems are identified. Without clear goals, can be a waste of time. (-)
List and describe the two Early Feedback methods of eliciting requirements.
1) high fidelity prototyping - developer creates a prototype with the appearance of the specified interface. Clients my be reluctant to ask programmer to make changes to what appears to be nearly complete. (-)
2) low fidelity prototype - developer creates a rough prototype to provide the broad strokes of the application. Clients may not get a clear idea of the developer's conceptualization if the prototype is too rough. (-)
List and describe the two Model-Driven methods of eliciting requirements.
1) goal-based modeling - by tying software requirements to user's software goals, developers can avoid over-specifying or missing actual requirements. Articulating the goals of the software might be difficult and time-consuming. (-)
2) scenario-based modeling - use cases are expanded into full narratives about how particular users will utilie the software system to make the requirements of the system clearer. Developing the scenarios can be an arduous process, involving extensive creativity.
List and describe the three cognitive methods of eliciting requirements.
1) protocol analysis - users are asked to verbalize their thought processes as they perform tasks in order to gain insight into how they think about those tasks. Users can have difficulty verbalizing while performing tasks; often their actions have become automatic. (-)
2) laddering - similar to an interview, but interviewer probes progressively deeper with each response from the user. Users may get frustrated by the repetitive and tedious questions. (-)
3) card sorting - Class-responsibility-collaboration cards are a popular brainstorming tool for analyzing object-oriented software projects. This happens late in the process; the application should be pretty well-understood at this point.
List and describe the two Contextual methods of eliciting requirements.
1) ethnographic - observe potential users in their actual work environment as unobtrusively as possible. Users' behavior may be altered due to the knowledge that they are being observed. (-)
2) conversation analysis - transcripts of audio- or video-recorded interactions are analyzed to discern patterns of behavior that can subtly impact a system's requirements.
What are Functional Requirements?
Functional Requirements are software requirements necessitated by the use cases the software is designed to accomplish. Functional requirements are the actions the software will be able to perform.
What are Non-Functional Requirements?
Non-functional requirements stipulate the inherent properties of the planned software. Examples are fault tolerance, compliance, documentation, maintainability, reliability, price, security. The non-functional requirements are not essential to the users of the software (the software's function), but are important requirements.
Begin Kung Ch 5
What is domain modeling?
Domain modeling is a conceptualization process. It aims to identify important domain concepts, their properties, and relationships between the concepts. The result is protrayed in a diagram called the domain model.
To assist a software development team in understanding the domain in which a new software application will be employed, _________ is used.
What are the 5 steps in domain modeling?
1) collecting information - (business process descriptions, operating procedures, software requirements, business forms)
5) reviewing & inspecting - (feedback regarding errors and abnormalities)
_________________ describe a software system's structure by illustrating its classes, their attributes, and their interrelationships.
UML Class Diagrams
(T/F) There is a 1:1 relationship between classes in the UML Class Diagram and classes in the software application.
(T/F) Accessors and mutators must be included in UML Class Diagrams.
false, in fact they are clutter unless they perform an unusual function
UML Class diagrams show the interrelationships between classes with ___________.
arrows and sets of numbers like (0, *) to indicate that the class at the other end of the arrow can have >=0 instances of the class by the numbers.
Each class box contains three types of information. What are they?
class attributes (data members)
Name and describe the three symbols used to show access restrictions in class boxes.
+ - public
- - private
# - protected
Role names are used on arrows to indicate ___________.
the relationship between two classes
How are generalizations (inheritances) represented in UML Class Diagrams?
Abstract superclasses (classes that will not have an actual instance in the program) and derived subclasses are represented in UML diagrams with triangular arrowheads. They show that one class is derived from another (therefore can access public and protected attributes and operations).
What is aggregation with regard to classes?
Aggregation is the "part of" relationship. E.g., a cashier station is part of a bank branch.
How is aggregation shown in UML class diagrams?
Diamond-shaped aggregation markers are used to show aggregation in UML diagrams. E.g., a cashier station is part of a bank branch would have a diamond marker at branch (on the "owning" class). It is a weak association.
What is the rectangular qualification marker used to signify?
It shows a qualification to the aggregation. For example, even though an entire consortium shares each ATM, ultimately each ATM is part of a unique member institution (bank) within the consortium.
What is composition with regard to classes?
Composition is the "is-a-vital-part-of" relationship. For example, in a game application, if the form disappears when the game application is terminated (but not when the game is just over), the form is a vital part of the game.
How is composition shown on UML class diagrams?
Composition is shown as a filled in diamond. It is a strong association.
How are parameters shown in UML class diagrams?
Parameters can be represented for a class in the operations section of the class box. Here, the parameter is shown as in, out, or inout, and is shown as an argument to its function (operation).