Documente Academic
Documente Profesional
Documente Cultură
written in a specific programming language Quite small programs Computer science is concerned with theory and
(Java, C, Fortran, etc.), which a computer Written by one person fundamentals; software engineering is
follows in processing data, performing an Written and used by experts in the concerned with the practicalities of developing
operation, or solving a logical problem. application area concerned and delivering useful software.
Software : Emphasis was on expressing known Software Engineering and System Engineering
Computer programs algorithms efficiently in some programming System engineering is concerned with all
Configuration files used to set up these language aspects of computer-based systems
programs Software- Today development including hardware, software and
User documentation explaining how to use the often very large process engineering.
software developed by teams that collaborate over Software engineering is part of this process
Support service periods spanning several years concerned with developing the software
System documentation describing the structure developers are not the future users of the infrastructure, control, applications and
of the software system they develop and they have no expert databases in the system.
Software is Abstract and Intangible knowledge of the application area
Advantage: Types of Software
No physical limitations on its potential. Generic Products: Stand-alone systems
Disadvantage: produced by an organization and sold on the
Since there are no physical constraints, market
software can easily become extremely complex Bespoke (or customized) products: Products
and difficult to understand. developed specifically for a customer by a
Software and Hardware over time contractor.
Engineering:Repeatable and predictable
approach to ensure meeting requirements,
budget, schedule and quality.
Software Engineering: Software engineering is
an engineering discipline that is concerned
with all aspects of software development
Process: ”a series of actions or operations The steps in development of a software product Maintenance
taken in order to achieve a particular end” Requirements analysis and specification Covers any changes to the product after it has
Software Process: “A structured set of Design been tested
activities that leads to the production of a Implementation Corrective maintenance
software product.” Testing and Integration Removal of residual errors in the software
Maintenance Adaptive maintenance
Requirements analysis and specification Adjusting the software to changes in the
Software Requirements Specification environment
Requirements analysis Perfective maintenance
client conceptualizes a product Changing software to improve some of its
concept exploration by developers qualities
Goal is to develop a complete, consistent,
unambiguous specification of the requirements
System requirements (includes hardware
requirements),
Functional requirements for software,
Quality requirements
ISO/IEC12207 Software Life Cycle Processes Design
Software Development Process Design specification
It is a roadmap that helps you create a timely, Design techniques: Hardware vs Software
high-quality software Object-Oriented design Hardware requires manufacture, whereas software
It describes the structure within which Design by contract does not
software engineers operate Design patterns HW: Focus on manufacture
Software development process is a subset of Specification of Object-Oriented designs SW: Focus on Design & Code
processes that a software organization perform Class-Responsibilities-Collaboration(CRC) card Hardware has physical models to use in evaluating
UML class diagrams design decisions
Activities in a software development process: Specification of detailed design Hardware is composed of parts that wear out,
System requirements analysis Pseudo code, Program Design Language (PDL) whereas software does not degrade from use
System architectural design UML activity diagrams HW Reliability: a measure of failure of components
Software requirements analysis Implementation SW Reliability: a measure of number of remaining defects
Software architectural design Source Code Software Development Process Model
Software detailed design The code should be correct, maintainable, determine the stages (and their order) involved
Software coding and testing traceable and efficient. in software development and evolution
Software integration Testing and Integration establish the transition criteria for progressing
Software qualification testing Test cases and test plan from one stage to the next
System integration Goal is to check that the product meets the specifications
Used to show presence of errors not their absence!
System qualification testing
Code inspections (reviews, walk-throughs)
Software installation
Module testing, Integration testing
Software acceptance support
Black-box vs. white box testing
Coverage metrics: statement coverage, branch coverage
Automated verification, Specification based testing
Code and Fix Waterfall (linear sequential model) Disadvantages
Basic model used in earliest days of software Testing phase occurs at the end of the
development, more lack of a model development cycle. Errors might signal
It is only suitable for short programs, which major redesign.
do not require maintenance, individual If the product is totally original, some
programmers; it is unsatisfactory for large experimental tests might be required before
projects and teams building the system.
Advantages What software is going to do is subject to
All that is required if the effort is sufficiently wide interpretation even after previous
small and if the final product is to be used by agreement.
the one who built it Advantages Emphasis on documentation as completion
Most customers are happy to pay, since effort There is iteration with the preceding and criteria
in both steps directly contributes to the succeeding steps but rarely with the more Inflexible partitioning of the project into
product. remote steps distinct stages (Difficult to respond to
Disadvantages The change process is divided into changing customer requirements)
After several fixes the code becomes poorly manageable units A working model of the software is not
structured (a design phase is necessary) After the requirements step is complete available until late in the project life-span.
Frequently, a well-designed code is a poor there exist a firm baseline Because of the restricted feedback loops,
match to the customers needs (when customer Maximize the extend of early work waterfall model is essentially sequential.
is not involved) (a requirements phase is There are many other feedback points
Why extended documentation ?
necessary) beside the end of the phase
Verbal record is too intangible for
Code is expensive to fix because of poor Redoing the whole phase is an enormous
management decisions
preparation for modification and testing piece of work
Written description forces to provide
(testing and maintenance phases have to be Influence from other phases or events are
tangible evidence for completion
planned) not considered.
Prevents “I am 90% complete” syndrome
In early phases, design=documentation and
specification=documentation
Permits effective redesign and shared
understanding of the project