Software Engineering Notes

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

Why is Software Engineering needed?

- Many software projects ran over budget - Would not meet a defined schedule - Were not predictable - Some projects caused property damage - A few projects caused a loss of life (Therac-25)

Top factors that cause a project to fail

-Incomplete requirements - lack of user involvement - Unrealistic expectations - lack of executive support - changing requirements and specifications - lack of planning - system no longer needed

Describe the waterfall model for software development

1) Document system concept 2) Identify System Requirements and Analyze them 3) Break the system into pieces (architectural design) 4) design each piece 5) Code the system components and test them individually (coding, debugging, and unit testing) 6) Integrate the pieces and test the system 7) Deploy the system and operate it.

The Requirement Process

1) Elicitation 2) Analysis 3) Specifications 4) Validation 5) System Requirements Specifications (SRS)

What are currently the three most popular languages?

1) Java 2) C 3) C++

When did the term "Software Engineering" first appear?

1950's and 1960's. The field got it's biggest initial boost from two NATO conferences on Software Engineering held in 1968 and 1969.

Design Constraint

A design decision such as choice of platform or interface components

What is a sprint?

A focused short period of intense work. There is a potentially shippable product after each sprint.

What is an Activity Graph?

A graph that depicts the dependencies among activities. (nodes are milestones, lines are activities involved)

What is prototyping?

A partially developed product; helps developers assess alternative design strategies and users understand what the system will be like.

Relationships and the System Boundaries

A relationship defines the interaction among entities and activities. System boundaries determine the extent to which you have to program; determining how far you should do code for.

Process Constraint

A restriction on the techniques or resources that can be used to build the system

Composition association

A special type of aggregation, in which instances of the compound class are physically constructed from instances of component classes (marked with black diamond)

What is a Work Breakdown Structure?

A structure that depicts the project as a set of discrete pieces of work.

Functional Requirement

A type of requirement. Describes required behavior in terms of required activities.

What is the V Model?

A variation of the Waterfall Model - very similar, except the end results after coding verify the initial conditions. (requirements are verified by acceptance testing, system design is verified by the system testing, program design is verified by the unit and integration testing)

What is the Prototyping Model?

Allows repeated investigation of the requirements or design; reduces risk and uncertainty in the development.

What is Available time?

Amount of time available in the schedule for the activity's completion.

What is Scrum?

An Agile Method where daily standup meetings are held by the ScrumMaster ensures that everyone is as productive as possible.

Activities and Objects

An activity is an event initiated by a trigger. Objects or entities are the elements involved in the activities.

Aggregate association

An association that represents interaction, or events that involve objects in the associated (marked with white diamond) - "has-a" relationship

What is the Transformational Model?

Applies a series of transformations to change a specification into a deliverable system. (change data representation, select algorithms. optimize, compile) (relies on formalism)

What are the 3 strategies for risk reduction?

Avoiding the risk, transferring the risk, assuming the risk.

Cloning

Borrow design/code in its entirety, with minor adjustments

Who invented the first computer?

Charles Babbage (1837)

1970's Software Engineering

Collaborative software tools, such as Unix, code repositories, make, and so on. Minicomputers and the rise of small business software

What is the Spiral Model?

Combines development activities with risk management to minimize and control risks. The model is presented as a spiral in which each iteration is represented by a circuit around four major activities: plan-determine goals, alternatives and constraints-evaluate alternative & risks-develop and test.

McCall's quality model includes what dimensions of quality?

Correctness, reliability, efficiency, integrity, usability, maintainability, testability, flexibility, portability, reusability, interoperability.

Turing Machine

Created by Alan Turing in 1936. Mathematically models a machine that mechanically operated on a tape. Operation is fully determined by a finite set of elementary instructions. Concept of an infinite tape that could be read, written to, and erased was precursor to today's RAM.

Harvard Mark I

Created by Howard Aiken and Grace Hopper in 1944. Used by the US Navy for ballistics calculations.

Mark I aka IBM Automatic Sequence Controlled Calculator (ASCC)

Created by Howard Aiken in 1944 from a million dollar grant from IBM

Z1

Created by Konrad Zuse in 1938. It is the first programmable, general-purpose digital computer.

Grace Hopper

Created the Harvard Mark I with Howard Aiken in 1944. Invented the compiler. Coined the term "computer bug"

Quality requirement or Non-functional requirement

Describes some quality characteristic that the software must posses.

What is the system approach?

Determine the hardware, software, interact with people; identifying activities and objects; define the system boundary; consider nested systems, systems interrelationship.

1950's Software Engineering

Early tools, such as macro assemblers and interpreters were created and widely used to improve productivity and quality. First-generation optimizing compilers.

The Volere Requirements Process Model

Elicit requirements from: - Domain models - Current situation model - Reusable requirements from a reuse library - Suggested types of requirements from a requirements template - Existing Documents - Current organization and systems - Stakeholder wants and needs

What are Agile Methods?

Emphasis on flexibility in producing software quickly and capably: value individuals and interaction over process and tools, prefer to invest time in producing working software rather than in documentation, focus on customer collaboration, & concentrate on responding to change rather than on creating a plan and then following it, simplicity, the best architecture, many more.

What is Dynamic Modeling?

Enables inaction of a process to see what happens to resources and artifacts as activities occur; simulates alternatives and makes changes to improve the process.

Entity Relationship Diagrams

Entity: Rectangle that represents a collection of real-world objects that have common properties and behaviors Relationship: a line between two entities with a diamond in the middle specifying the type of relationship Attribute: an annotation on an entity that describes data and properties associated with the entity

What is Real time?

Estimated amount of time required for the activity to be completed.

1940's Software Engineering

First computer users wrote machine code by hand.

UNIVAC I

First general-pupose commercial computer delivered to US Census bureau in 1951. Made by Sperry, a company founded by the makers of the ENIAC (John Mauchly and J. Presper Eckert) after the war.

Why is Phased Development desirable?

For several reasons: training can begin early, even though some functions are missing; markets can be created early for functionality that has never before been offered; frequent releases allow developers to fix unanticipated problems globally and quickly; the development team can focus on different areas of expertise with different releases.

Reference Models

Generic architecture that suggests how to decompose the system

What is the goal of the Mean Magnitude of Relative Error? (MMRE)

Goal should be .25 or less.

What are the two main US based professional organizations of software engineering?

IEEE and ACM

Who is thought to be the first programmer?

Lady (Ada) Lovelace

What are drawbacks to the Waterfall Model?

Long wait before a final product; there is no iterative activities that lead to creating a final product; views software development as manufacturing process rather than creative process; etc.

2000's Software Engineering

Managed code and interpreted platforms such as Java, .NET, Ruby, Python and PHP made writing software easier than ever before. Offshore outsourcing changed the nature and focus of software engineering careers

1990's Software Engineering

Object-oriented programming and agile processes like Extreme programming gained mainstream acceptance. Computer memory capacity sky-rocketed and prices dropped drastically. These new technologies allowed software to grow more complex. The WWW and hand-held computers made software even more widely available.

Unified Modeling Language (UML)

Objects: akin to entities, organized in classes that have an inheritance hierarchy Methods: actions on the object's variables Class-scope attribute: represented as an underlined attribute, is a data value that is shared by all instances of the class. Class-scope operation: written as underlined operation, is an operation performed by the abstract class rather than by class instances Association, marked as a line between two classes, indicates a relationship between classes' entities.

What is Lai Notation?

Outlines all transitions and movements from within a system.

1980's Software Engineering

Personal computers and personal workstations became common. Commensurate rise of consumer software. Smalltalk: the first commercial OOPS language/platform that is UI based, Memory Managed, VM Image based, scripted/incremental.

What are Bohm's Top 10 Risk Items?

Personnel shortfalls; Unrealistic schedules and budgets; Developing the wrong functions; Developing the wrong user interfaces; Gold-plating; Continuing stream of requirements changes; Shortfalls in externally-performed tasks; Shortfalls in externally-furnished components; Real-time performance shortfalls; Straining computer science capabilities

What are the key concepts in project management?

Project planning; cost and schedule estimation; risk management; team organization.

What is the full engineering approach?

Requirements analysis and definition System design Program design Writing the programs Unit testing Integration testing System testing System delivery Maintenance

What is the Operational Specification Model?

Requirements are examined and their implication is evaluated early in the development process; functionality and the design are allowed to be merged.

What is the Risk Leverage equation?

Risk Leverage (cost of reducing risk) = (risk exposure before reduction - risk exposure after reduction) / (cost of risk reduction)

What is risk?

Risk is an unwanted event that has negative consequences.

Name some models for process improvement.

SEI's Capability Maturity Model (CMM); ISO 9000; Software Process Improvement and Capability Determination (SPICE)

What are some examples of the Agile Process?

Scrum: 30-day iterations; extreme programming; crystal; adaptive software development.

1960's Software Engineering

Second generation tools like optimizing compilers and code inspections were being used to improve productivity and quality. The concept of engineering software was widely discussed. First really big (1000 programmer) project. Commercial mainframes and custom software for big business.

What is Iterative Development?

Starts with full system, then changes functionality of each subsystem with each new release.

What is Incremental Development?

Starts with small functional subsystem and adds functionality with each new release.

Why is Extreme Programming bad?

The 2 people working together would need the exact same schedules at all time - which is unrealistic because everyone has different lives.

What is the Win-Win Spiral model used for?

The Win-Win spiral model (suggest by Bohm) is used as a supplement to the milestones.

What is Slack time?

The difference between the available time and the real time for that activity. (s.t = a.t - r.t)

System Architecture Document (SAD)

The final outcome of the design process.

Software Requirement Specifications

The final outcome of the requirements process

What is the Critical path?

The path throughout the Activity Graph where the slack time at every node is 0. (NOTE: there can be more than one in a project schedule).

What are the 3 ways of considering quality?

The quality of the product, the quality of the process, the quality of the product in the context of the business environment.

How many factors are there in the Watson and Felix model?

There are 29 factors that can affect productivity; 1 if it increases the productivity, 0 if it decreases the productivity.

(True or False) Some systems are dependent to other systems.

True - the interdependencies may be complex.

(True or False) Users judge external characteristics to determine the quality of a product.

True.

What is a Gantt Chart useful for?

Understanding which activities can be performed concurrently. (or in parallel)

What was the first electronic digital computer, Colossus, used for?

Used to crack Nazi military codes. First programmable electronic digital computer.

ENIAC (Electronic Numerical Integrator and Computer)

WWII machine to calculate trajectory tables for new guns. Created by John Mauchly and J. Presper Eckert.

What is Extreme Programming?

Where 2 programmers literally sit next to each other and work on one monitor; good because it has communication simplicity, courage and feedback. (pair programming is a main facet; one of the 12)

What are the 2 factors that affect difficulty in the Wolverton Model?

Whether the problem is old or new; whether the problem is easy or moderate.

Methodology

a codified set of practices that may be repeatably carried out to produce software

Abstraction

a description of the problem at some level of generalization.

Software Engineering

a discipline that applies sound engineering principles to the development of software.

Process

a series of steps involving activities, constraints, and resources that produce an intended output o some kind.

Elements of a process are viewed in terms of 7 types:

activity, sequence, process model, resource, control, policy and organization.

requirement

an expression of desired behavior. Focus on the customer needs, not the solution or implementation

Synthesis

build (compose) software from smaller building blocks. Composition is challenging.

Prototyping

building a small version of a system.

Testers

catch faults.

Analysis

decompose a large problem into smaller, understandable pieces. Abstraction is the key.

Value-Based View

depends on the amount the customers is willing to pay for it.

Business analyst

determines the ROI and sells the idea.

Managers and Leads

direct the work of others and obtain resources.

Maintenance Team

fix faults that show up later.

Designers

generate a system-level description of what the system is supposed to do.

Return on Investment (ROI)

how much money is it going to cost to make the product and how much money will I earn? If it costs more than I will earn, then I won't build it. Interpreted in different terms: reducing costs, predicting savings, improving productivity and costs (efforts and resources)

Failure

is a departure from the system's required behavior.

Configuration Management Team

maintain correspondence among various artifacts.

Lab Managers

manage the project's development lab. (if they have one)

Fault

occurs when a human makes a mistake, called an error, in performing some software activities.

Architects

often architects do the initial system architecture and then designers do the more detailed design.

Integrator

performs software builds and maintains software base.

Paradigm

philosophy or approach for building a product. (eg. OO vs structured approaches)

Librarians

prepare and store documents such as software requirements.

What is the Waterfall Model.

presents a very high-level view of the development process and a sequence of process activities. (requirements, system design, program architecture, coding, testing, deployment, operation and maintenance)

Manufacturing View

quality is conformance to specification.

User View

quality is fitness for purpose.

Transcendental View

quality is something we can recognize but not define.

Product View

quality tied to inherent product characteristics.

Trainers

show users how to use the system.

Design

the creative process of figuring out how to implement all of the customer's requirements; the resulting plan is also called the design

Prototyping is used for...

verification and validation.

Modeling the development process addresses questions such as:

where to find a particular kind of fault; how to find faults early; how to build in fault tolerance; what are alternative activities.

Requirement Analysts

work with the customers to identify and document the requirements.

Project Manager

works with all team members to track progress and resolve issues.

Programmers

write lines of code to implement the design.


Ensembles d'études connexes

Chapter 8: Transport Across a Membrane

View Set

Cost Accounting Chapter 2 Quiz 2

View Set

Human growth and development chapter 8 app state

View Set

Ch 02: Apply What You've Learned - Career Planning

View Set

Ch 13 Wong Health Problems of Toddlers and Preschoolers 47Qw/exp

View Set

shays rebellion/ whiskey rebellion

View Set