Title: Software Engineering Program Information
1Software Engineering Program Information
For New Students Fall 2007
Save these notes for future reference!
2SENG Program Info
Program Coordinator Jim Mooney Lane Dept. of
CSEE Rm 941 ESB PO Box 6109 Morgantown WV
26506-6109 (304) 293-0405 X2562 jdm_at_csee.wvu.edu
3SENG Program Info
SENG Program website http//www.lcsee.cemr.wvu.ed
u/grad/degree-info.php?degreemsse
Check this site for up-to-date program
information. This should be your primary
reference for the program! If you find anything
incorrect or missing please let me know!
4SENG Program info
Whats on the website?
1. General information about the program
- Admission Requirements
- Application Procedures
- Program Requirements
- Graduation Procedures
5SENG Program info
Whats on the website?
2. Course information
- Course Info and syllabi (general course info for
current and upcoming semesters) - Current Classes (link to current class slides and
web resources)
6SENG Program info
Whats on the website?
3. Online forms
- Plan of Study (download and edit)
- Transfer from Non-degree status (complete online)
- Certificate Request (complete online)
7SENG Program info
Registration notes
- Register online using the STAR system
- A term PIN number is required for each student
every term except your first. - E-mail me courses you are planning to take
- I will e-mail you your PIN number
8SENG Program info
Registration notes
- A new PIN is needed every term!
- EXCEPTION PINs are the same for each summer
and the following fall. - E-mail me in case of any problems.
9SENG Program info
Registration notes
- Allow enough time -- request your PIN early!
- You cannot register online after classes start!
10SENG Program info
Registration notes
Out of state students may pay in-state fees only
if you register exclusively for web-based
courses! There is an extended learning fee
required for all students taking extended
learning courses. There are no tuition waivers
available for SENG students.
11SENG Program info
Registration notes
For questions on costs, tuition, fees and
payments, etc. contact Extended Learning
(1-800-2LEARN2). I do not have answers to other
financial questions.
12SENG Program info
Are you presently a non-degree student?
- If you wish to transfer to the MSSE program, you
should apply during the semester in which you
will be completing 12 credits. - Do not delay -- only 12 non-degree credits can be
transferred!
13SENG Program info
Are you presently a non-degree student?
- Your transfer will be processed by the end of the
term. Check your status on STAR -- if your major
is listed as Software Engineering, your transfer
is complete. - This may be the only confirmation you receive!
14SENG Program info
Applying from non-degree status
- To apply, please do all of the following
- If you have not already done so, submit a resume
that documents at least 3 years experience in
software development to - Jim Mooney -- MSSE
- Lane Dept. of CSEE
- PO Box 6109
- Morgantown WV 26506-6109
15SENG Program info
Applying from non-degree status (cont.)
- If you have not already done so, submit three
work-related letters of reference to the same
address - Complete the online transfer form
-
16SENG Program info
Are you interested in the SENG Certificate?
- The certificate is optional for MSSE students!
- Complete 5 required classes
- Complete the experience paper (see website link
for details) - Apply for the certificate in the semester you
complete these requirements, or later
17SENG Program info
Are you interested in the SENG Certificate?
- You may obtain the certificate at the end of the
semester in which you qualify - Certificate recipients need not complete the MSSE
- The certificate designation will appear on your
transcript when/if you graduate
18SENG Program info
Tools and Resources Adobe Connect (formerly
Macromedia Breeze)
The Adobe Connect distance learning system is
used for live interactive class participation or
later class playback. Classes are accessed
through the CURRENT CLASSES link on the MSSE main
web page. http//elearn.cerc.wvu.edu
19SENG Program info
Good Luck! Save these notes! Use the website!
Most common questions will be answered there!
20Course Overview
- Software Analysis and Design
- SENG 520 CRN 82055 (LEC)
- SENG 520 CRN 82832 (WEB)
- Lecture Wednesday 1800 2030, Challenger Room
NASA IVV Facility - http//elearn.cerc.wvu.edu/520/default.htm
- Instructor
- Kenneth A. Costello / Kenneth.Costello_at_gmail.com
/ (304) 367-8343 - Office Hours Any Time, call for appointment
- Course Prerequisites
- Experience in the software domain
- General Software Engineering Practices and
Procedures - Understanding or experience with one programming
language is an asset but not a requirement - Material
- Class notes information is gathered from many
sources and references will be provided
throughout the class - Drawing program some aspects of the class will
require you to generate models and diagrams for
tests or assignments.
21SENG 520 Course Overview (cont)
- Course Grading
- Assignments 40
- Midterm Exam 30
- Final Exam 30
- Academic Dishonesty
- All work is to be done on an INDIVIDUAL basis.
Evidence to the contrary will be regarded as
academic dishonesty and will be dealt with
swiftly and decisively in accordance with the
provisions outlined in the WVU Graduate catalog.
22SENG 520 Course Overview (cont)
- Generally assignments and tests will be due by
the end of the Tuesday due date - The late penalty is 20 per week
- The late penalty becomes 20 at the end of class
on Tuesday - Extensions can be granted but you need to tell me
as soon as possible - A request made on the due date may be refused
23SENG 520 Course Overview (cont)
- "West Virginia University is committed to social
justice and does not discriminate on the basis of
race, gender, age, disability, veteran status,
religion, sexual orientation, color or national
origin. I concur with that commitment and expect
to maintain a positive learning environment based
upon open communication, mutual respect, and
nondiscrimination. Any suggestions as to how to
further such a positive and open environment in
this class will be appreciated and given serious
consideration. If you are a person with a
disability and anticipate needing any type of
accommodation in order to participate in this
class, please advise in advance and make
appropriate arrangement with the Disability
Services (293-6700). - Note
- If you are a learning, sensory, or physically
disabled student and feel that you could benefit
from special assistance in regards to lectures,
reading assignments or testing, please contact
your instructor after class or during office
hours. The first week in the semester is the best
time to inform your instructor of any disability.
24SENG 520 Communication
- Primarily through email
- Everyone registered is given a WVU mix account,
listed with your registration - I can use that account to contact you in regards
to grades, class cancellation etc. - If you have a different email that you would
prefer please let me know immediately - You can even give me more than one email address
and I will use both - When sending email to me, please prepend your
subject line with SENG520 - It helps my filter catch and move your message to
some place that I am more apt to see it right
away
25Software Analysis and Design
- Objectives
- The goal of this class is to provide insight into
the issues surrounding specification and design
of large systems with a focus on the software in
that system - Goals
- Analysis
- Describe the activities of software requirements
analysis - Develop a specification of requirements for a
software system from a customer/user - Be able to use various diagrammatic techniques to
document models of requirements - Design
- Understand and be able to apply various methods
of software design - Understand how software design/architecture can
affect the overall system - Develop an under
- Overall
- Understand how software engineering fits within
system engineering - Develop an understanding of what software
engineering is and how it fits within an overall
system development - Develop an awareness of some of the challenges
associated with developing software for large
integrated projects - Configuration Management
- Verification and Validation
- Quality assurance
- Software metrics
26Tonight
- What is software engineering?
- What is a software life cycle?
- Software engineering principles
- Software engineering tasks
27Software Engineering
- The term emerged at a conference in the late
1960s that was held to discuss the problems with
software (the software crisis) - So what was going on that led to a software
crisis? - A Brief History of Software
28A Software Timeline
- 1948-64
- Custom software with limited distribution
- 1960-75
- Multi-user -- emergence of Product software
- 1972-88
- Low-cost Hardware
- Users directly interact with system
- Product Software becomes necessary
- 1985- Now
- Powerful desktop systems
29The Software Crisis
- Due to hardware breakthroughs and cost reductions
there was an increased demand for QUALITY
software, built at a reasonable cost.
30The Software Crisis (2)
- 1960s
- Personalized software was impossible to maintain
- 1990s
- Ability to build new programs can not keep up
with the demand hardware sophistication has
outpaced softwares ability to tap hardwares
potential
31The Software Crisis (3)
- What was needed was an approach that allowed for
a consistent systematic method of building
software - Computer Science
- Computer scientists study what programs can and
cannot do, how programs can efficiently perform
specific tasks, how programs should store and
retrieve specific kinds of information, how
programs might behave intelligently and how
programs and people should communicate with each
other - Engineering
- Engineers create solutions to problems or improve
upon existing solutions - Engineering is concerned with the design of a
solution to a practical problem. A scientist may
ask "why?" and proceed to research the answer to
the question. By contrast, engineers want to know
how to solve a problem, and how to implement that
solution. - The development of software needed to be taken
out of the realm of investigation and moved into
the realm of creation
The development of software needed to be taken
out of the realm of investigation and moved into
the realm of creation
32The Software Crisis (4)
- Fundamental Problem
- The real issue was the lack of ability to manage
the software process (Was there a software
process in the late 1960s?) - Engineering, in other disciplines, had set rules
and guidelines that you followed to develop
solutions to problems - The goal was to bring that rigor to software
development - Thus Software Engineering was born
33Industry Questions about Software
- Why does it take so long to develop programs?
- Why are costs so high?
- Why does it go out with errors?
- Why cant we measure progress?
34Product Software
- Program
- Run by author for his computer
- Programming Product
- Can be run by anyone, under many environments,
and with many sets of data - Therefore
- Must be written in a generalized fashion
- Must be thoroughly tested and documented
- Costs 3 times as much to develop
35Product Software (2)
- Programming System
- Collection of interacting programs which are
coordinated and disciplined which when assembled
the entire facility can perform large tasks - Therefore
- Every I/O must conform to standard interfaces
- Uses a prescribed budget of memory, I/O devices,
and computer time - Tested in conjunction with other pieces and
combinations-- integration - Costs 3 times as much as a program to develop
36Product Software (3)
- Programming System Product
- Multiple Users
- Multiple Developers
- Multiple Maintainers
- Costs 9 times as much as a program to develop
- Requires a systematic approach
37Why are you building software?
- Software can not exist by itself
- Needs associated hardware in order to be used
- Software is always part of a system
- A system well a system is anything
- But your software is often derived from a system
perspective
38System Life Cycle Process
- Provide context for software engineering
- System development
- 4 stages, many processes
- Concept/Exploration
- Definition/Risk Reduction
- Engineering and Manufacturing Development
- Production, Field Deployment and Operational
Support - Where does software engineering occur?
- From a system perspective often not until EMD,
very dependent on the type of system
39What then is software engineering?
- Many definitions rigor in software development
- Boehm - The practical application of scientific
knowledge to the design and construction of
computer programs and their associated
documentation required to develop, operate and
maintain them. - IEEE Standards Glossary -- The systematic
approach to the development, operation,
maintenance and retirement of software. - IEEE Standards Glossary
- Software-- Computer programs, procedures, rules
and possibly documentation and data pertaining to
them.
40Software Engineering Definitions (cont)
- Fairley
- Software Engineering Concepts --
- Software Engineering is the technological and
managerial discipline concerned with the
systematic production and maintenance of software
products that are developed on time and within
cost estimates. - Summerville
- Software engineering is an engineering discipline
concerned with the practical problems of
developing large software systems. It is not
just programming nor is it computer science.
Software engineers must be professionals who use
theory from other disciplines and apply this
cost-effectively to solve difficult problems.
41Goal of Software Engineering
- Improve the quality of software products and to
increase the productivity and job satisfaction of
software engineers - Software engineering brings structure and control
to a discipline that often is thought of as being
out of control - Based on defined approaches and as applicable to
old school as well as new school development
approaches
42Skills of Software Engineer
- Good oral and written communication
- Technical knowledge
- Project management
- Appreciation of User
43Characteristics of Engineered Software
- Built by Teams
- Uses engineering principles
- Provides formality to the process
- Provides approaches to show what the software
does and what it does not do - Technical and non-technical aspects
44Key Attributes of Engineered Systems
- Maintainability
- Reliability
- Efficiency
- User Interface
- Security
- Necessary to strike a balance
45Engineered Software
- Purpose -- Product Software
- Make the computer easy to use
- Ratio of function to complexity is the ultimate
task of system design, neither alone represents a
good system.
46Software Development Life Cycles
- Cycle of activities involved in the development,
use and maintenance of software - Sequence of stages which categorize and control
activities - A Process
47Software Development Life Cycles (2)
- Software Process
- IEEE Software Process is a set of activities,
methods, practices, and transformations that
people use to develop and maintain software and
the associated products
48Software Development Life Cycles (3)
- System Life Cycle
- Concept/Exploration
- Most are replacements for existing systems
- Program Definition/Risk Reduction
- Engineering Manufacturing and Development
- Production/Field deployment
- Operational support and Retirement
49Software Development Life Cycles (4)
- Build and Fix
- Classic Waterfall
- Prototyping
- Successive Versions
- Spiral Model
- Agile processes
50Build and Fix
51Classic Waterfall Life Cycle
52Prototyping
53Successive Versions
54Spiral Model
55Agile Processes
- A concept rather than a process
- Focuses on a customer/people oriented approach
rather than a process approach - However, many of the agile methods have strong
process control - Strong planning support
- Structured approaches to getting work done
- Time box constraints
56Types of Systems
57Classification of Systems The Users Perception
- System Software
- Real-time Software
- Business - Application Software
- Engineering and Scientific Software
- Embedded Software
- PC Software
- AI- Knowledge Based-Expert Systems
58System Software
- Service programs for the computer
- Heavy interaction with hardware
- Heavy usage by multiple users
- Concurrent operations
- Resource scheduling and sharing
- Multiple external interfaces
59Real-time Software
- Measures/analyzes/controls real world events
- Data gathering -- from the environment
- Transform information
- Monitors/coordinates
- Response time is critical (usually)
60Business Application Software
- Largest set of software
- Accesses one or more large databases
- Facilitates decision making
- Interactive
- Human interface important
61Engineering and Scientific
- Number crunchers-- lots of computer time
- CAD -- Computer Aided Design
- Human interface is often less important
- Should it be?
62Embedded Software
- ROM only
- Control products
- Very limited functionality
- This is changing however
- Use of FPGAs has allowed embedded software to
take on more and more responsibilities - Where do you draw the line between hardware and
software?
63PC Software
- General purpose products
- Most innovative
- Usability is usually paramount
- Marketing and time to market is very important
64AI - Knowledge Based -- Expert Systems
- Load it with information (knowledge) to make
choices - Pattern recognition (neural networks)
- Theorem proving
- Game playing
65Classification of Systems -- run-time
characteristics
- Batch Systems
- On-line Systems
- Real-time Systems
66Batch Systems
- System is implemented after gathering all the
data - Implemented generally at predefined time periods
-- daily, monthly - Utilizes system resources efficiently
- Examples
- Payroll System
- Compiler
67On-line/Reactive Systems
- System runs continuously
- System waits for user input
- Example
- Cash Machine
68Real-time Systems
- A real-time system is one that contains processes
that operate concurrently with a regular or
predictable time relationship with independent
external or temporal events - Response time is critical (usually)
- Examples
- Air Traffic Control System
- Elevator
69Classification of Systems--Developers Perspective
- Process-Oriented Systems
- Data-Oriented Systems
- Object-Oriented Systems
70Process-Oriented System
- Data Flow Approach
- Data and Control Flows
- Processes
- Data and Control Stores
- Process Specifications
- Entity-Relationship Diagrams
- Data Dictionary
71Data-Oriented Systems
- Information Modeling
- Objects
- Attributes
- Relationships
- Supertypes/Subtypes.
72Object-Oriented Systems
- Object-Oriented Approach
- Classes, Methods, Attributes
- Inheritance
- Associations
- Messages ...
73Developers Perspective
74Principles of Software Engineering
75Principles of Software Engineering
- Principle of Abstraction
- Principle of Formality
- Divide and Conquer Concept
- Hierarchical Ordering Concept
- Principle of Information Hiding
- Principle of Localization
- Principle of Conceptual Integrity
- Principle of Completeness
- Principle of Logical Independence
76Principle of Abstraction
- To solve a problem, separate the aspects that are
tied to a particular reality in order to
represent the problem in a simplified general
form
77Principle of Formality
- Follow a rigorous, methodical approach to solve a
problem
78Divide and Conquer Concept
- Solve a difficult problem by dividing the problem
into a set of smaller, independent problems that
are easier to understand and solve
79Hierarchical Ordering Concept
- Organize the components of a solution into a tree
like hierarchical structure. Then the solution
can be understood and constructed level by level,
each new level adding more detail
80Principle of Information Hiding
- Hide the inessential information. Enable a module
to see only the information needed for that
module
81Principle of Localization
- Place logically related items close together
82Principle of Conceptual Integrity
- Follow a consistent design philosophy and
architecture
83Principle of Completeness
- Check to make certain that nothing is left out
84Principle of Logical Independence
- In analysis and design concentrate on the logical
functions to be accomplished independently of the
physical implementation
85Tasks of Software Engineering
86Some of the tasks needed during development
- Planning
- Identify the customers
- Identify the products needed
- Feasible?
- Method to monitor progress
- Development
- Specification
- Design and implement
- Test, debug, and integrate
- Services needed
- Annotated tools
- Computer resources
- Configuration management
- Product distribution
- Administrative support
- Publications
- Users guide, installation guide
- Principles of operation, specification
- Design, module documentation, test plans, etc
- Quality Assurance
- Verification and validation
- Configuration Management
- Support
- Promote the product
- Installation and training users
- Liaison with user
- Technical support
- Maintenance
- Error correction
- Enhancements
- Adaptation to new environment
- Preventive