0% found this document useful (0 votes)
24 views26 pages

Lecture 4 - Self Study Part2

Uploaded by

adiasaraf29
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views26 pages

Lecture 4 - Self Study Part2

Uploaded by

adiasaraf29
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 26

SOFTWARE ENGINEERING Lecture 5

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

2)Keep it simple, stupid


• All design and implementation should be as simple as possible

3)Maintain the vision of the project


• A clear vision is essential to the project’s success

4)Others will consume what you produce


• Always specify, design, and implement knowing that someone else will later have to understand
and modify what you did

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

6) Plan ahead for software reuse


• Reuse of software reduces the long-term cost and increases the value of the program and the
reusable components

7) Think, then act


• Placing clear, complete thought before action will almost always produce better results
ANALYSIS MODELING
1)PRINCIPLES
The information domain of a problem (the data that flows
in and out of a system) must be represented and
understood
2) The functions that the software performs must be defined
3) The behavior of the software (as a consequence of
external events) must be represented
4) The models that depict information, function, and
behavior must be partitioned in a manner that uncovers
detail in a layered (or hierarchical) fashion
5) The analysis task should move from essential information
toward implementation detail

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…

6) Component-level design should be functionally independent


(high cohesion)
7) Components should be loosely coupled to one another and to the
external environment
8) Design representations (models) should be easily understandable
9) The design should be developed iteratively; with each iteration,
the designer should strive for greater simplicity
DESIGN MODELING
PRINCIPLES…
External quality factors: those properties that can be readily observed

Internal quality factors: those properties that lead to a high-quality design


from a technical perspective
CODING PRINCIPLES
1) Understand the problem you are trying to solve
2) Understand basic design principles and concepts
3) Pick a programming language that meets the needs of the software to be built
and the environment in which it will operate
4) Select a programming environment that provides tools that will make your
work easier
5) Create a set of unit tests that will be applied once the component you code is
completed

11
CODING PRINCIPLES

6) Constrain your algorithms by following structured programming practices


7) Select data structures that will meet the needs of the design
8) Understand the software architecture and create interfaces that are
consistent with it
9) Keep conditional logic as simple as possible

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

1) Conduct a code walkthrough


2) Perform unit tests (black-box and white-box) and correct errors you have
uncovered
3) Refactor the code

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

2) A complete delivery package should be assembled


and tested
3) A support regime must be established before the
software is delivered
4) Appropriate instructional materials must be
provided to end users
5) Buggy software should be fixed first, delivered later

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

Both forms bring order to the development of computer-


based systems
Both forms work to allocate a role for computer software
and to establish the links that tie software to other elements
of a computer-based system

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

The role of the system engineer is to define the


elements of a specific computer-based system in
the context of the overall hierarchy of systems
COMPUTER-BASED
SYSTEM …
A computer-based system makes use of the following four
system elements that combine in a variety of ways to
transform information
 Software: computer programs, data structures, and related
work products that serve to effect the logical method,
procedure, or control that is required
 Hardware: electronic devices that provide computing
capability, interconnectivity devices that enable flow of data,
and electromechanical devices that provide external functions
 People: Users and operators of hardware and software
 Database: A large, organized collection of information that is
accessed via software and persists over time

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)

"Always design a thing by considering it in its next larger context –


a chair in a room, a room in a house, a house in an environment,
22
and environment in a city plan"
SYSTEM MODELING
(AT EACH VIEW LEVEL)
Defines the processes (e.g., domain classes in OO terminology) that serve
the needs of the view under consideration
Represents the behavior of the processes and the assumptions on which the
behavior is based
Explicitly defines intra-level and inter-level input that form links between
entities in the model
Represents all linkages (including output) that will enable the engineer to
better understand the view
May result in models that call for one of the following
 Completely automated solution
 A semi-automated solution
 A non-automated (i.e., manual) approach

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

Optimization of some of these factors may be mutually exclusive 24


SYSTEM MODELING WITH
UML

The Uniform Modeling Language (UML)


provides diagrams for analysis and design at both
the system and software levels
Examples
 Use case diagrams
 Activity diagrams
 Class diagrams
 State diagrams

25
Thank You 

You might also like