Computer science: an overview
Hoofdstuk 7: software engineering
Software engineering is the branch of computer science that seeks principles to
guide the development of large, complex software systems.
7.1 The software engineering principle
Een verschil tussen software engineering en engineering is dat engineering kant-
en-klare stukken heeft, zoals een automotor. Software engineering heeft dit op
het begin niet gehad, alles werd vanaf het begin gemaakt. Het tweede verschil is
dat engineering gebruik kan maken van kwantitatieve meettechnieken, software
engineering niet.
Practitioners work toward developing techniques for immediate application and
theoreticians search for underlying principles and theories on which more stable
techniques can someday be constructed.
Computer-aided software engineering (CASE) is the application of computer
technology to the software development process. CASE tools are computerized
systems.
Integrated development environments (IDEs) combine tools for developing
software.
7.2 The software Life cycle
The different phases:
1. Requirements Analysis:
- The goal is to specify what services the proposed system will provide, to
identify any conditions on those services and to define how the outside
world will interact with the system.
- Involves significant input from the stakeholders.
- COTS = commercial off-the-shelf
- In the software requirements specification are the requirements recorded
2. Design:
- Involves creating a plan for the construction of the proposed system.
3. Implementation:
- Involves the actual writing of programs, creation of data fields, and
development of databases.
- A software analyst is involved with the entire development process and a
programmer is primarily involved with the implementation step.
4. Testing
7.3 Software engineering Methodologies
- The waterfall model:
The different phases requirements, analysis, design, implementation and
testing are performed in a strictly sequential manner
- The incremental model:
The desired software system is constructed in increments, the first being a
simplified version of the final product. After this is tested, more features
are added.
- The iterative model:
Hetzelfde als het incrementele model, maar dan wordt in het begin het
gehele ontwerp al gemaakt en telkens geperfectioneerd.
1
, Een voorbeeld is the rational unified process (RUP), which is a software
development paradigm that redefines steps in de development phase of
the software life cycle and provides guidelines for performing those steps.
Dit is later niet-commercieel gemaakt onder de naam unified process.
- Prototyping
Incomplete versions of the proposed system are built and evaluated.
Evolutionary prototyping is gebaseerd op het incrementele model en
throwaway prototyping is gebaseerd op het iteratieve model.
- Open source development
A single author writes an initial version of the software and posts the
source code and its documentation on the internet. From there it can be
downloaded and used by others without charge. Because these other users
have the source code and documentation, they are able to modify or
enhance the software.
- Agile methods
which proposes early and quick implementation on an incremental basis,
responsiveness to changing requirements and a reduced emphasis on
rigorous requirements analysis and design.
An example is extreme programming (XP), in which software is developed
by a team of less than a dozen individuals working in a communal work
space where they freely share ideas and assist each other in the
development project.
7.4 Modularity
Modularity is the division of software in manageable units, called modules.
In de imperatieve paradigm worden zijn de modules procedures, in de object-
georienteerde paradigm zijn de modules objecten.
A structure chart identifies the procedures and indicates the dependencies
among the procedures.
A class is a template that defines the procedures (called methods) and attributes
(called instance variables)
Coupling is the linkage between modules. Control coupling occurs when a module
passes control of execution to another, as in a procedure call. Data coupling is
sharing of data between modules. Data can be explicitly passed as parameters or
data can be shared among modules implicitly in the form of global data, which
are data items that are automatically available to all modules throughout the
system.
Cohesion refers to the degree of relatedness of a module’s internal parts. Logical
cohesion is induced within a module by the fact that its internal elements
perform activities logically similar to nature. Functional cohesion is stronger and
means that all the parts of the module are focused on the performance of a
single activity.
Information hiding refers to the restriction of information to a specific portion of a
software system.
A component is a reusable component of the software. In component
archtitecture the traditional role of the programmer is replaced by a component
assembler.
7.5 Tools of the trade
There are different tools for identifying procedures, such as a data-flow diagram
or a data dictionary.
Unified modeling language is a collection of tools, such as the use case diagram,
2
, in which interactions are use cases and uses of the system are actors.
The class diagram is a national system for representing the structure of classes
and relationships between classes (called associations)
Interaction diagrams is a sort of UML to express dynamic features. One type is a
sequence diagram.
A CRC (class-responsibility-collaboration) card is a card on which the description
of the object is written, they are used for simulations (structured walkthroughs).
A design pattern is predeveloped model for solving a recurring problem in
software design.
7.6 Quality assurance
Softwate quality assurance (SQA) groups are charged with overseeing and
enforcing the quality control systems adopted by the organization. Some quality
oriented themes are documentation and previews.
Pareto principle: most errors are clustered.
Basis path testing: developing a set of test data that insures that each instruction
is executed at least once.
Glass-box testing: the software tester is aware of the interior structure of the
software and uses this knowledge when designing the test. (bv. Pareto principle
and basis path testing)
Boundary value analysis consists of identifying ranges of data, called equivalence
classes, over which the software should perform in a similar manner and then
testing the software on data close to the edge of those ranges.
Beta testing is giving a preliminarily version of the software to a segment of the
audience with the goal of learning how the software performs in real life
situations. (called alpha testing if the developers test it)
7.7 Documentation
There are three categories of documentation:
- User documentation: is to explain the features of the software and is therefore
expressed in the terminology of the application.
- System documentation: is to describe the software’s internal composition so
that the software can be maintained later in the life cycle.
- Technical documentation: is to describe how a software system should be
installed and serviced.
7.8 The human-machine interface
Ergonomics deals with designing systems that harmonize with the physical
abilities of humans, cognetics with the mental abilities of humans.
The GOMS model, is representative of the search for metrics in the field of
human-machine interface design. The model’s underlying methodology is to
analyze tasks in terms of user goals, operators, methods and selection rules.
7.9 Software ownership and liability
Legal efforts to provide ownership fall under the category of intellectual property
law, much of which is based on the well-established principles of copyright and
patent law. The rights of the developer are formally expressed in legal terms in a
software license. A software license is a legal agreement between the owner and
user of a software product that grans the user certain permissions to use the
product without transferring ownership rights to the intellectual property. To
protect themselves against liability, software developers often include disclaimers
in the software licenses that state the limitations of their liability.
Hoofdstuk 9: Database systems
A database is a system that converts a large collection of data into an abstract
3
The benefits of buying summaries with Stuvia:
Guaranteed quality through customer reviews
Stuvia customers have reviewed more than 700,000 summaries. This how you know that you are buying the best documents.
Quick and easy check-out
You can quickly pay through credit card or Stuvia-credit for the summaries. There is no membership needed.
Focus on what matters
Your fellow students write the study notes themselves, which is why the documents are always reliable and up-to-date. This ensures you quickly get to the core!
Frequently asked questions
What do I get when I buy this document?
You get a PDF, available immediately after your purchase. The purchased document is accessible anytime, anywhere and indefinitely through your profile.
Satisfaction guarantee: how does it work?
Our satisfaction guarantee ensures that you always find a study document that suits you well. You fill out a form, and our customer service team takes care of the rest.
Who am I buying these notes from?
Stuvia is a marketplace, so you are not buying this document from us, but from seller VeroniekVeer. Stuvia facilitates payment to the seller.
Will I be stuck with a subscription?
No, you only buy these notes for $4.90. You're not tied to anything after your purchase.