Lecture 4 - Self Study Part2
Lecture 4 - Self Study Part2
VS SYSTEM ENGINEERING
SOFTWARE
ENGINEERING PRACTICE
•Consists of a collection of concepts, principles,
methods, and tools that a software engineer uses
regularly
•Equips managers to manage software projects and
software engineers to build computer programs
•Provides necessary technical and management how
to’s in getting the job done
•Transforms a haphazard unfocused approach into
something that is more organized, more effective, and
more likely to achieve success
2
THE ESSENCE OF PROBLEM
SOLVING
1) Understand the problem (by communication and
analysis)
• Who has a stake in the solution to the problem?
• What are the unknowns (data, function, behavior)?
• Can the problem be compartmentalized?
• Can the problem be represented graphically?
2) Plan a solution (planning, modeling and software
design)
• Have you seen similar problems before?
• Has a similar problem been solved and is the
solution reusable?
• Can subproblems be defined and are solutions
available for the subproblems?
3
THE ESSENCE OF PROBLEM
SOLVING…
3) Carry out the plan (construction; code generation)
• Does the solution conform to the plan? Is the source
code traceable back to the design?
• Is each component of the solution correct? Has the
design and code been reviewed?
4) Examine the results for accuracy (testing and quality
assurance)
• Is it possible to test each component of the solution?
• Does the solution produce results that conform to the
data, function, and behavior that are required?
4
SEVEN CORE PRINCIPLES FOR
SOFTWARE ENGINEERING
1)Remember the reason that the software exists
• The software should provide value to its users and satisfy the requirements
5
SEVEN CORE PRINCIPLES
FOR SOFTWARE
5) ENGINEERING
Be open to the future
• Never design yourself into a corner; build software that can be easily changed and adapted
7
DESIGN MODELING
PRINCIPLES
1) The design should be traceable to the analysis model
2) Always consider the software architecture of the system to be built
3) Design of data is as important as design of processing functions
4) Interfaces (both internal and external) must be designed with care
5) User interface design should be tuned to the needs of the end-user and should
stress ease of use
8
DESIGN MODELING
PRINCIPLES…
11
CODING PRINCIPLES
12
CODING PRINCIPLES
10) Create nested loops in a way that makes them easily testable
11) Select meaningful variable names and follow other local coding standards
12) Write code that is self-documenting
13) Create a visual layout (e.g., indentation and blank lines) that aids code
understanding
CODING PRINCIPLES
14
IMAGE SOURCE:
HTTP://WWW.MULTICIANS.ORG/THVV/PROVERBS.HTML
DEPLOYMENT PRINCIPLES
1) Customer expectations for the software must be
managed
• Be careful not to promise too much or to mislead the user
16
COMPUTER-BASED SYSTEM
Software engineering occurs as a consequence of system
engineering
System engineering may take on two different forms
depending on the application domain
“Business process” engineering – conducted when the context of the work focuses on a business
enterprise
Product engineering – conducted when the context of the work focuses on a product that is to be built
17
COMPUTER-BASED
SYSTEM
Definition: A set or arrangement of elements that are
organized to accomplish some predefined goal by
processing information
The goal may be to support some business function or to
develop a product that can be sold to generate business
revenue
A computer-based system makes use of system elements
Elements constituting one system may represent one
macro element of a still larger system
18
COMPUTER-BASED
SYSTEM…
Example
A factory automation system may consist of a numerical control machine, robots,
and data entry devices; each can be its own system
At the next lower hierarchical level, a manufacturing cell is its own computer-based
system that may integrate other macro elements
20
COMPUTER-BASED
SYSTEM …
The uses of these elements are described in the
following:
Documentation: Descriptive information that portrays the use and operation of the system
Procedures: The steps that define the specific use of each system element or the procedural
context in which the system resides
SYSTEM ENGINEERING
PROCESS
The system engineering process begins with a world view; the
business or product domain is examined to ensure that the proper
business or technology context can be established
The world view is refined to focus on a specific domain of interest
Within a specific domain, the need for targeted system elements is
analyzed
Finally, the analysis, design, and construction of a targeted system
element are initiated
At the world view level, a very broad context is established
At the bottom level, detailed technical activities are conducted by
the relevant engineering discipline (e.g., software engineering)
23
FACTORS TO CONSIDER WHEN
CONSTRUCTING A MODEL
Assumptions
These reduce the number of possible variations, thus enabling a model to
reflect the problem in a reasonable manner
Simplifications
These enable the model to be created in a timely manner
Limitations
These help to bound the maximum and minimum values of the system
Constraints
These guide the manner in which the model is created and the approach
taken when the model is implemented
Preferences
These indicate the preferred solution for all data, functions, and behavior
They are driven by customer requirements
25
Thank You