ONLINE EDUCATION EASY WAY ENGINEEING
Introduction
Software Engineering is the subdiscipline of Computer Science that
attempts to apply engineering principles to the creation, operation,
modification and maintenance of
the software components of various systems. As with much of
Computer Science, the subject of Software Engineering is
at an very early stage in its development. It is much more of an
art than a science, and at present has little in common which
classical engineering.
- What is engineering?
Engineering is the application of well-understood scientific methods
to the construction, operation, modification and maintenance of
useful devices
and systems.
- What is software?
Software is comprises the aspects of a system not reduced to tangible
devices, e.g. computer programs and documentation. It is distinguished
from hardware, which consists of tangible devices, and often exists
as collections of states of hardware devices. The boundary between
hardware and software can be blurry, as with firmware and microcode.
- What is Software Engineering?
Someday, Software Engneering may well be concerned with the
application of well-understood scientific methods to the
construction, operation, modification and maintenance of software.
Today, however, Sofware Engineering is concerned with finding
ways in which to produce working software for predictable
costs in predictable time. When the problems involved
are very simple or when only one person is involved,
implementing software to meet their own needs, there isn't
much to be said, and we are a long way from having any
scientific principles for the production of software. Therefore,
the major focus of software engineering today is on well-tested
heuristics for the production of software to solve
complex problems when many people are involved in the process,
as users, as analysts, as programmers, as managers, etc.
Therefore most of the issues in Software Engineering are
concenred with interactions among people, rather than
with the production of software.
- People
- Systems
- A system is an assemblage of components that interact in some
manner among themselves and, possibly, with the
world outside the system boundary.
- We understand systems by decomposing them into
- subsystems
- system components
- We may decompose by focusing on the "nouns" (the subsystems
and system components), the
"verbs" (the actions), the data flows, the flows of control, ...
- Systems engineering and Operations Research predate Software
Engineering
- Software Engineering has had more impact upon Systems Engineering
than upon the creation of software
- It is very difficult to separate the software components of a
system from the other components of a system.
- Understanding a system
- Understand the interactions between the system and the
outside world
- Understand the internal actions of the system
- Define the institutional context
- Defining the business -- business models
- Commercial
- Blue collar industries -- manufacturing, construction
- White collar industries -- banking, insurance, media
- Service firms -- accounting, advertising, consulting
- Academic
- Government
- Health care
- Charitable
- What are you producing?
- Goods -- hardware, software, commodities
- What do you want
- What are you consuming?
- Writing a business plan
- Master plan for operation of the business
- Explains why this business is worth investing time and money in
- Contents
- Purpose of this business
- Type of business, industry and or sector(s) of operations
- Target market(s)
- Analysis of competition
- Response to competition
- Conceptual outline of business structure and operation
- What goods or services the business will provide
- Staffing and key personnel
- Marketing
- Sales
- Operations
- Financial plan
- See Wayne R. Parker's http://www.action-links.com/businesspages/businessplan.htm
- Other institutional contexts require other approaches
- Basics of creating software
- Define the problem (needs analysis)
- Overall systems analysis (e.g. business analysis)
- Define the overall system or business (see above)
- By common terminology
- By industry, industry sector(s), function(s)
- Identify business environment and boundary
- Decompositions
- Top-down
- Object-oriented
- Apply both to the system and to the environment
- Identify the flows
- Control, information, goods
- Follow the money
- Identify software needs
- What does the system use to function AS-IS
- Follow the money or other rewards
- Look for commonly used software functions
- Accounting system
- Inventory control
- Payroll
- Taxes
- …
- What will the proposed new software contribute
in terms of new useful functions?
- Consideration of Alternatives
- Compare to software as used by competition
- Consider commercial and open source offerings
- Look for bottle-necks in information flows
- Manual systems amenable to automation
- Mismatched loads vs. service capacity
- Mismatched skills for systems in use
- Incremental change vs. big-bang
- Build vs. buy
- Multiply all build estimates by 3
- Have alternatives if build fails
- Have second sources for buys
- Evaluation of risks
- Minimize maximal losses
- One possible view of software life cycle
- Create a preliminary design
- Review the design
- Create a final design
- Implement
- Test
- Release
- Evaluate
- Maintain
- Revise
- May view these as discrete steps or deal with
multiple steps in parallel
- May have to recycle
- Understanding Systems
- Systems are made of components
- Unless a system is closed it has a system boundary
- Properties of a system are:
- Derived from properties of its components; or
- Derived from the interactions among its components; or
- Derived from the interactions of system components with the
world beyond the system boundary
- Some properties of a system (or its components) are observable only
from within the system
- Some of the properties of a system are observable from outside the
boundary of the system.
- Externally observable properties which arise from the operation of
the system as a whole are called emergent
properties.
- Reliability, MTTF
- Availability, MTTF and MTTR
- Usability
- Marketability
- Security
- System Interactions with its environment
- Accept input
- Produce output
- Controls
- Consumption of resources
- Production of waste
- Unintended consequences (you cannot do just one thing).
- System Models
- Making decisions about systems
No comments:
Post a Comment