2. Overview of Software Engineering Definitions and Software Quality



Similar documents
Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Mobile application testing is a process by which application software developed for hand held mobile devices is tested for its functionality,

Foundations for Systems Development

risks in the software projects [10,52], discussion platform, and COCOMO

Is Your Mobile Application Ready For Business?

Automated testing for Mobility New age applications require New age Mobility solutions

WHITEPAPER BEST PRACTICES IN MOBILE APPLICATION TESTING

CLOUD COMPUTING: A REVIEW

AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping

A General Framework for Tracking Objects in a Multi-Camera Environment

Middleware- Driven Mobile Applications

OCR LEVEL 3 CAMBRIDGE TECHNICAL

"It's a Phone First! How to Test Your Five-star Mobile Apps"

IT2404 Systems Analysis and Design (Compulsory)

TECHNICAL WHITE PAPER. Monitoring Cisco Hardware with Sentry Software Monitoring for BMC ProactiveNet Performance Management

MENDIX FOR MOBILE APP DEVELOPMENT WHITE PAPER

Device Lifecycle Management

50 shades of Siebel mobile

Modeling the Mobile Application Development Lifecycle

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Open Source Tools for 3D Forensic Reconstructions Part 3 Eugene Liscio, P. Eng. November 2011

The preliminary design of a wearable computer for supporting Construction Progress Monitoring

Introduction to Cloud Services

Skynax. Mobility Management System. System Manual

The 8 th International Scientific Conference elearning and software for Education Bucharest, April 26-27, / X

Monitoring and control of users in open environments on the Android platform

SEACW DELIVERABLE D.1.6

CS231M Project Report - Automated Real-Time Face Tracking and Blending

Software Project Models

The Suitability of Native Application for University E-Learning Compared to Web-Based Application

Enterprise Printing Solutions. Secure, on-premise mobile printing platform. enterprise education public printing locations print simply anywhere


Sensor Fusion Mobile Platform Challenges and Future Directions Jim Steele VP of Engineering, Sensor Platforms, Inc.

City of Dublin Education & Training Board. Programme Module for. Mobile Technologies. leading to. Level 6 FETAC. Mobile Technologies 6N0734

The Role of Information Technology Studies in Software Product Quality Improvement

MEng, BSc Applied Computer Science

12 October 2012 White paper. Best Practices in Mobile Application Testing

(Refer Slide Time: 01:52)

System Development and Life-Cycle Management (SDLCM) Methodology. Approval CISSCO Program Director

ONTOLOGY FOR MOBILE PHONE OPERATING SYSTEMS

FSI Machine Vision Training Programs

International Journal of Advancements in Research & Technology, Volume 3, Issue 4, April ISSN

Chakra Vs Spiral Model - A Practical Approach

SOFTWARE CONFIGURATION MANAGEMENT GUIDEBOOK

The role of integrated requirements management in software delivery.

SECTION 2 PROGRAMMING & DEVELOPMENT

Frameworks & Android. Programmeertechnieken, Tim Cocx

International Journal of Advanced Engineering Research and Science (IJAERS) Vol-2, Issue-11, Nov- 2015] ISSN:

WEB, HYBRID, NATIVE EXPLAINED CRAIG ISAKSON. June 2013 MOBILE ENGINEERING LEAD / SOFTWARE ENGINEER

VDI can reduce costs, simplify systems and provide a less frustrating experience for users.

User Reports. Time on System. Session Count. Detailed Reports. Summary Reports. Individual Gantt Charts

Develop enterprise mobile applications with IBM Rational software

MaaSter Microsoft Ecosystem Management with MaaS360. Chuck Brown Jimmy Tsang

CHAPTER - 5 CONCLUSIONS / IMP. FINDINGS

To introduce software process models To describe three generic process models and when they may be used

MEng, BSc Computer Science with Artificial Intelligence

Software Engineering: Analysis and Design - CSE3308

This course is intended for IT professionals who are responsible for the Exchange Server messaging environment in an enterprise.

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

Choosing a Mobile Strategy for Your Business

AKCess Pro Server Management Software

5053A: Designing a Messaging Infrastructure Using Microsoft Exchange Server 2007

How to Choose Right Mobile Development Platform BROWSER, HYBRID, OR NATIVE

Synergis Software 18 South 5 TH Street, Suite 100 Quakertown, PA , version

Programming An Intelligent Watch

WHITEPAPER. Pros & cons of native vs cross-platform mobile development with Xamarin

Cisco Context-Aware Mobility Solution: Put Your Assets in Motion

IMCM: A Flexible Fine-Grained Adaptive Framework for Parallel Mobile Hybrid Cloud Applications

Chap 1. Introduction to Software Architecture

Discovering Computers

Elite: A New Component-Based Software Development Model

PANDORA FMS NETWORK DEVICE MONITORING

Software Requirements Specification

5 Reasons Your Business Needs Network Monitoring

Development of Mobile Enterprise Inventory Management System Application with CBD

StruxureWare Data Center Expert Release Notes

Mobile Device and Technology Characteristics Impact on Mobile Application Testing

Radia Cloud. User Guide. For the Windows operating systems Software Version: Document Release Date: June 2014

TECHNOLOGIES MOBILE STRATEGY

SOS Suite Installation Guide

This is our best... YOUR best... Online Banking yet!

Visualisation in the Google Cloud

Review of Mobile Applications Testing with Automated Techniques

How To Use Trackeye

R214 SPECIFIC REQUIREMENTS: INFORMATION TECHNOLOGY TESTING LABORATORY ACCREDITATION PROGRAM

Sony Releases the Transparent Lens Eyewear SmartEyeglass Developer Edition

Improved metrics collection and correlation for the CERN cloud storage test framework

International Journal of Advance Research in Computer Science and Management Studies

Syllabus Version

Passion for Innovation

The Implementation of Face Security for Authentication Implemented on Mobile Phone

1 INTRODUCTION TO SYSTEM ANALYSIS AND DESIGN

Autos Limited Ghana Vehicle Tracking Business Proposal

Keywords IS-SDE, software engineering, CALM, ALM, collaborative software development, development tools

Introduction to Service Oriented Architectures (SOA)

Contributions to Gang Scheduling

Five Reasons Your Business Needs Network Monitoring

Rackspace Cloud Databases and Container-based Virtualization

Professor, D.Sc. (Tech.) Eugene Kovshov MSTU «STANKIN», Moscow, Russia

So#ware Development. Overview. Hans- Pe4er Halvorsen, M.Sc. h4p://home.hit.no/~hansha/?page=so#ware_development

Transcription:

Miguel Angel Syll Development of an Android Application for Photogrammetric 3D Reconstruction Duration of the Thesis: 6 months Completion: July, 2014 Supervisor & Examiner: Prof. Dr. Ing. Dieter Fritsch 1. Abstract This thesis attempts to describe the necessary steps to program an application to take pictures, organize and process them in order to generate and visualize a three-dimensional colored point cloud. The steps to create the application are explained, using the argumentative logic to every decision and fulfill the stated objective in the best possible way, balancing the available technology and the quality of results. The general requirement "Development of an Android Application for Photogrammetric 3D Reconstruction" was analyzed from the point of view of Software Engineering methodology trying to fullfil the requirements related to Software Quality (Somerville, 2011): Reliability, Efficiency, Security, Maintainability and (adequate) Size. Moreover, Android systems and their features are outlined, and the fundamental concepts of Photogrammetry, Computer Vision and Structure from Motion (SFM) are explained. After the analysis stage a new product named AndroidSFM is designed and programmed, that is composed by an Android application and a Server application. 2. Overview of Software Engineering Definitions and Software Quality 2.1. Software Engineering Somerville (2011) defines software engineering "as a engineering discipline that is concerned with all aspects of software production". By this short phrase is hard to see or understand the real scopes of software engineering, therefore another ones is cited. According to an old IBM Systems Journal publication (Mills, 1980) Software engineering may be defined as "the systematic design and development of software products and the management of the software process. Software engineering has as one of its primary objectives the production of programs that meet specifications, and are demonstrably accurate, produced on time, and within budget". 1

This is a nice definition because it takes into consideration different terms like: Systematic, design, development, management, specifications, accurate, time and budget. All terms indicate that developing a software is necessary not only to bring together a computer, a programming language and a programmer, but also a methodology to fulfill some known requirements taking into account quality, time and money. Of course, there are other definitions, shorter or more extended, but the important thing is that to develop a piece of software implies more issues than only to program. In conjunction with the term software engineering, more linked with programming, appears the term Software development process, also known as a Software Development Life-Cycle (SDLC), that is a structure imposed on the development of a software product. For Somerville (2011) the systematic approach that is used in software engineering is sometimes called a software process. A software process is a sequence of activities that leads to the production of a software product. There are four fundamental activities that are common to all software processes. These activities are: 1. Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation. 2. Software development, where the software is designed and programmed. 3. Software validation, where the software is checked to ensure that it is what the customer requires. 4. Software evolution, where the software is modified to reflect changing customer and market requirements. Different types of systems need different development processes. For example, real-time software in an aircraft has to be completely specified before the development begins. In e- commerce systems, the specification and the program are usually developed together. Consequently, these generic activities may be organized in different ways and described at different levels of detail depending on the type of software being developed. Several general models exist to streamline the development process. Each one has its pros and cons, and it is up to the development team to adopt the most appropriate one for the project. Sometimes a combination of the models may be more suitable. Here is a list with the generic processes mostly used: Waterfall model Iterative and incremental development. Reuse-oriented software engineering 2.2. Software Quality It seems to be clear that for software development companies and for customers a "software" is a product, therefore, it is a candidate to be qualified or evaluated in some way. This is in agreement with Pressman (2005) who states: "Software functional quality reflects how well it complies with or conforms to a given design, based on functional requirements or specifications. That attribute can also be described as the fitness for purpose of a piece of software or how it compares to competitors in the marketplace as a worthwhile product". Historically, the structure, classification and terminology of attributes and metrics applicable to software quality management have been derived or extracted from the ISO 9126-3 and the subsequent ISO 25000:2005 quality model. Based on these models, the Consortium for IT Software Quality (CISQ) has defined five major desirable structural characteristics needed for a piece of software to provide business value: Reliability, Efficiency, Security, Maintainability and (adequate) Size. 2

The dependence tree between software quality characteristics and their measurable attributes is represented in the next diagram, where each of the 5 characteristics that matter for the user (left and right) or owner of the business system depends on measurable attributes (center): Figure 2.1: Software quality example diagram. In order to add more references, Somerville (2011) states in the next table the Essential Attributes of good software: Product characteristics Maintainability Dependability and security Efficiency Acceptability Description Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment. Software dependability includes a range of characteristics including reliability, security, and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system. Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilization, etc. Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable, and compatible with other systems that they use. Table: 2.1: Essential Attributes of good software according to Somerville (2011) More information about these topics can be obtained from books of Software Engineering. However, as a summary, the most important things to keep in mind are that Software engineering Is an engineering discipline Generates a product or products (software/s). Also Software Has a life cycle and it is subject to a methodology to be generated/developed. Has a process that also can be improved Can be qualified, evaluated or measured using different parameters. 3

3. Development Process of the Application At the beginning of this chapter it is important to point out that each one of the next stages will deliver "results" in the way as "special features" of the final product. It is the intension to quote "results" quite often, because not only the final product will be the result but also each one of the conclusions (output of this chapter) used to generate it. Then, in order to generate a product that fulfills some software quality requirements, it seems suitable to apply some software methodology. As was enunciated on the overview about Software Engineering there are three general process models Waterfall model Iterative and incremental development. Reuse-oriented software engineering Taking into account the definitions of each one the Waterfall model was chosen. Figure 3.1: Waterfall model and its stages In this work we will pass through the different stages of the Waterfall model in order to obtain a product, taking also into account to try satisfying the six dimensions of software quality, which are: Reliability, Efficiency, Security, Maintainability, Size and finally Acceptability. 3.1. Requirement Analysis and Proposed Software Requirement: To develop an Android Application for Photogrammetric 3D Reconstruction that works on smartphones and tablets. In this case no more requirements were specified, then, the final product should gather at least the next features: Requirement Operative System Devices Task Detail Android. Version were not defined Smartphones and tablets. Hardware characteristics were not defined. 3D Reconstruction. The way to achieve this goal was not defined. Table 3.1: Summary of requirements. 4

As we can see, the requirements are too general, hence the developer (in its role as consultant) have to analyze the requirement and present to the customer the available alternatives with its advantages and disadvantages. At this stage it is important to mention a crucial technical factor about Android, that can have direct influence over design, programming and final product. This factor is that the Android operative system runs on devices with different hardware configurations. Manufacturers like Samsung, LG, Huawei, HTC (to name only few) fabric diverse kind of devices with/without sensors, different camera resolutions, different processors and RAM and even with different Android versions. Developers have to take these aspects into consideration when they have to develop a product. This states a big difference with respect to develop on ios where any hardware is defined beforehand. Another important issue is to know the process to make 3D Reconstructions, i.e. inputs, outputs, process step by step, memory usage, disk usage, speed, etc. Taking into account some concepts about Photogrammetry and Computer Vision it is possible to create a table with some information and some questions. Item Inputs Language External Tools Runtime Features Outputs Assumptions and possible questions Pictures: resolution and size? Monochromatic or color? Amount of pictures? Sensor Information. Camera is mandatory. But what about GPS, Accelerometers, magnetic field sensor? JAVA, C++ or both? Is it possible to use external tools to perform the programming? i.e. OpenCV, PCL Library, VTK Libraries, etc? Will be results visualized with a external software or is necessary to program the viewer as well? Processes have to run in foreground or background? Can the user perform other tasks with the program or other program meanwhile the software is processing? Intermediate results (like matching results) have to showed or only final result (point cloud and report)? What is the expected time to process and see the results? Language Interfaces? Matching files, NVM file, Point Cloud or all? Where will be stored the results? What about the qualities of the results? Must they be similar or better than results obtained using desktop software? Table 3.2: Interpretation of requirements. As you can see, from the general requirements arise a lot of questions. This is not strange, generally customers have a general idea about the product they want, and it is the developer who has to suggest the way to reach the objective. Then, using the available information, we will try to solve the showed questions. 3.1.2. Inputs: Due to an amazing development of new and existing devices, each time more sensors delivering more information, even when the information is not used by the application. Maybe in the future or for other applications, several sensor information could be useful. With current devices it could be useful to collect, at least: Pictures, Colors and Resolution Angles and accuracy of accelerometers and compasses GPS information and provider. Other inputs are those necessary to organize the information, like the project name, place description, etc. 5

The amount of information stored will depend mainly on the amount of pictures and its resolutions, which in turn depends on the kind of project to be photographed. 3.1.2. Language: Due to the device diversity JAVA should be used and C++, depending on the necessity to make special calculations or when speed is an important factor. For this work we focus on programming the interface, sensor management, communications, Input and Output storage in JAVA - the matching and reconstruction processes is performed using C++. However, the keys to select the programming languages are also based on the Runtime Features. 3.1.3. Runtime Features At this point is important to give more information about how Android works and how hardware and software coexist. First of all, it is necessary to mention that Android performs many tasks simultaneously. Even when one application is running on foreground, there are other tasks running i.e. Google Mail, Calendar, Alarm, Antivirus and other applications installed by the user. All of them consume memory and use disk space. Then, important resources like memory availability depends on how many applications are running. Second, applications and services have different priorities. For example, even when a application runs in foreground, it will be paused when a new phone call entries. As you can see phone calls have a higher priority. Third, according to the available resources (memory or disk space) the Android system can kill an application (without any warning!). These three aspects put some limitations on applications. If our application must run on different Android versions, different hardware configurations and also the use of few memory (to avoid being killed); then it is necessary to have an idea about the 3D reconstruction process tasks and its demands of processor, memory and finally time consumption. 3.1.4. Outputs In order to generate an Application according with the international standards, English should be the language interface. Data results could be stored in the device or in a remote folder (Dropbox, Google Drive of FTP folder). Regarding to the detail and quality of results it will depend on the 3D Reconstruction process memory/disk consumption, however, at least, a report or a point cloud should be showed. 3.2. Evaluation test of an Application for feature detection and matching running 100% on the device In order to evaluate the resource consumption it was created a little application to perform the feature detection and matching, one of the first tasks necessary to realize the stage of Feature Tracking. Three devices where evaluated and the objective of the evaluation was to measure the time consumption for each device, performing detection and matching tasks over 4 images of 1536 x 2048 pixels (6 combinations). To do this it was developed a little program using OpenCV to detect features and compute matchings. At the moment of this evaluation, feature detectors SIFT and SURE were not available in the Android OpenCV version, however, SIFT and SURE were implemented patching OpenCV. 6

Time used per each Matching Task 200 180 185 160 140 151 142.33 Seconds 120 100 80 Brief ORB SIFT SURF 60 40 29.75 27.2 33 20 0 10.5 9.83 11 0 0 0 Tablet S Gt-p7510 Samsung S3 Huawei G510 Device Figure 3.2: Matching evaluation. As is possible to appreciate in the graph: Tasks with zero value where not performed because the program crashed due to lack of memory (SIFT). Each task consumes excessive time in comparison with a computer. VisualSFM used 7.8 seconds for each image using SIFT. The graph does not mention that in some cases not all pictures were processed and also that in all devices the application crashed due to lack of memory. This short analysis point out, that the reconstruction process could not be carried out and even when it were possible, it would use too much time. Generally speaking, reconstruction projects require high resolution images and many pictures. 3.3. Proposed Software Taking into account the previous sections, it can be concluded for the development of the application that two scenarios are feasible: A stand-alone application, that will run on the device and will perform all the processes to generate results. A data collection system linked to a Server application. The device collects the information and sends the information to a Server where the information is processed and the results are sent back to the device to be visualized. This alternative can be programmed using Asynchronous Remote Procedure Calls (Asynchronous RPC) (Ananda, 1992). Quality Item Stand Alone Client Server Reliability Software Depend only on the device, Depend on the device, server and the reliability is the probability that software will work however, to complete the process of reconstruction will depend also on: connection with the server. In this case, to complete the process of properly in a specified Number of images and its reconstruction will not depend on: environment and for a resolution. Number of images and resolution. given amount of time Hardware configuration of the Hardware configuration of the device and Android version. device or Android version. Available Memory Available Memory If the level of complexity of matching algorithms is higher Additionally other applications can be used. The user, for 7

Efficiency Appropriate interactions with expensive and/or remote resources Data access performance and data management Memory, network and disk space management Security Maintainability It includes concepts of modularity, understandability, changeability, testability, reusability, and transferability from one development team to another then more probabilities to fail. Low interaction with remote resources. Higher usage of data access, memory and disk space. Information is stored in the device. Information is on risk if the device fail or is lost. It should be easier to maintain only one application. Size Big Size Small Size Acceptability. Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable, and compatible with other systems that they use. example, could take meanwhile more pictures. Intermediate interaction with remote resources (only to send pictures and get the results). Lower usage of data access, memory and disk space. Information is automatically backed up on remote Server. Due to there are two applications (one on device and the other on server) the maintainability should be more complex. Similar for both two alternatives. It will depend on the expectations of the users based on: time of processing, rate fails, quality or the results. Table 3.3: Qualitative comparison. According to Table 3.3 the Client-Server application presents more advantages. It is also possible to enumerate other benefits, because the reconstruction process is realized on a Server, for example: Processing on a server, better hardware configurations can be used, for example: more processors, higher RAM, GPU and CUDA. Then the application would have (indirectly) the performance of a desktop application. Results can be delivered faster and it is also possible to process a higher amount of pictures with higher resolutions. Of course, the speed will also depend on hardware capabilities and the software used on the server. The reconstruction can be implemented using other software tools like VisualSFM or Bundler, in addition with dense reconstruction software like PMVS or SURE. Then the information would be processed using the best current algorithms. The time of development will be shorter and the results are benefitting from existing PC applications. When the PC reconstruction applications are upgraded, then the functionality might benefit as well. If a Stand Alone Application was completely programmed on the device, the following problems or disadvantages could appear: Dense reconstruction using PMVS or SURE should be performed on a PC. Then, results would be preliminary. 8

Just in case, that the expectations of the results are at the same level or similar to the results obtained with PMVS or SURE, a new module can be programmed. Additionally, the code necessary to perform this task should be provided and authorized by the authors. Is this possible? Maybe yes, but it seems, that each time there are more things necessary, and we are working with devices with limitations. Even when in future devices will offere increasingly chances to program a Stand Alone Application, PC hardware will follow the same trends and also desktop applications could be better. Based on these conclusions, there is obviously a high probability, that the development of applications for 3D reconstruction on devices are always behind of PC applications because of the hardware differences. Maybe, the most important advantages of the second alternative are related to the flexibility to run on different hardware configurations and that it will be possible to perform other tasks on the device simultaneously. These aspects have an important weight for users, who use different kind of devices and different kind of applications. As a conclusion, the second alternative was developed. The following activities are performed: System and Software Design o Functional analysis o UML - Use Case diagram o UML Sequence diagram o UML Class Diagram Programming and Testing (Software Validation) 4. Products and Results In this chapter some screen shots and diagrams of the software named AndroidSFM are presented, as the result of this master thesis. 4.1. AndroidSFM on Device 9

Figure 4.1: Main Screen Design on Smartphones Figure 4.2: Main Screen on Tablets (Fragments) Figure 4.3: Camera screen to take pictures and additional information. 10

Figure 4.4: Point cloud of House in Maichingen result example (in smartphone). Figure 4.5: Screen of Matching Utility. 11

4.2. AndroidSFM on Server Figure 4.6: Screen of Server App processing a task with SURE. 5. Discussion and Conclusions As was mentioned in earlier paragraphs, software development is a process that follows a methodology, which is quite flexible and provides a set of useful tools that allows obtaining clarity of the characteristics and scope of the product being generated. Thanks to this methodology, general requirements can be transformed into each step in more concrete things, which allows meeting the initial objectives of the client in a better way, even extending them. Even if in this work two applications (one on Server and another on Android) were developed, it is important to note, that this study does not say that an application for three-dimensional reconstruction cannot be 100% developed onto one device, or if it was created, will not serve all required information. It only states, that the best option currently available is to use a clientserver model to take advantage of already developed software, the potential of hardware of a computer, and at the same time not to demand too much from a mobile device. After a careful analysis in order to get better results fulfilling the Software Quality requirements, the idea of using RPC (Remote Procedure Call) was born, applied in the field of mobile devices it is named here Mobile Remote Procedure Calls (MRPC). Applications using Asynchronous MRPC could link two worlds, mobile devices and computers to perform three-dimensional reconstruction processes, process surveying data or even to process information in advance while performing other tasks or traveling. 12

Today's mobile devices are equipped with special sensors (GPS, cameras, accelerometers, magnetic compass, gyroscope, pressure sensor, temperature sensor, proximity sensor, humidity sensor, gravity sensor, light sensor or sensors extras that can be assembled), which - when used - would collect field information, environmental information, seismic data, etc..; All data is georeferenced. The product AndroidSFM is only an example or first stage of an application to make 3D reconstructions (indirectly), therefore, it is possible to add new features such as: Add new reconstruction applications (Bundler, Agisoft Photoscan, etc) Enable new ways to exchange files (Google drive, local folders, etc..) Perform other tasks remotely on the point clouds using information collected by the sensors. With regard to the Android operating system, using Asynchronous MRPC, it is the author s vision, that the system could multiply its use for generating more useful information in the area of Computer Vision. It would be interesting, for example, to analyze the possible results of using arrays of synchronized devices (at different angles and overlaps as implemented in Ultracam) but also in Close range photogrammetry. Additionally, sensor information could be added to increase the collected information (4D?) 6. References Ananda A. Tay B., Koh E. [1992]. A Survey of Asynchronous Remote Procedure Calls. Newsletter. ACM Digital Library Operating Systems Review. Volume 26 Issue 2, April 1992. ACM New York, NY, USA. pp 92-109. ISO 25000. [2014]. Systems and software engineering -- Systems and software Quality Requirements and Evaluation. International Organization for Standardization. www.iso.org ISO 9000. [2005], Quality management systems. International Organization for Standardization. www.iso.org Mills, H.D. [1980]. The Management of Software Engineering Part I: Principles of Software Engineering. IBM Federal Systems Division, 10215 Fernwood Road, Bethesda, MD 20034, USA. IBM Systems Journal, Volume 19, Issue 4, pp 413-477. Pressman, S. [2005]. Software Engineering: A Practitioner's Approach (Sixth, International ed.), McGraw-Hill Education Pressman, 388p. Somerville I. [2011], Software Engineering 9th Edition, Pearson Education Inc. ISBN 978-0137035151. 773p. 13