soft meth test 1
software engineering
engineering discipline concerned with all aspects of software production uses theories and methods to solve problems bearing in mind organizational and financial constraints also includes project management produces advanced, reliable, trustworthy systems economically and quickly
what is software engineernig
engineering discipline that is concerned with all aspects of software production
incremental development
everything is connected to everything. you have an initial version, then several different versions, followed by the final version good: low cost, easy customer feedback, fast delivery bad: process is not visible; hard to manage, system structure degrades (doing the minimal). not for building planes or physical things because they are hard to change. examples: spotify, snapchat
waterfall model
good: requirements are well understood and changes are limited. good to use systems engineering projects where a system is developed at several sites bad: inflexible to accommodate change
Rapid Prototyping types (3)
paper, digita, native
context diagram
used to illustrate the operational context of a system shows what lies outside the system boundaries static view
native prototyping
writing code—writing an actual Android/iOS app or developing a website. Image credited to Apple. While native prototypes often look like fully-functioning versions of a product, it's important to remember that a coded prototype isn't the same thing as a final product
Reuse-oriented software engineering
The system is assembled from existing components. May be plan-driven or agile. adv: reduced costs/risks, fast delivery bad: evolution is not easy, requirements compromises are inevitable
digital prototyping
This is a revolutionary approach to product development that allows one to design, visualize, and simulate products rapidly and cost-effectively through the use of the CAD software.
agile workflow
(know diagram) plan-driven development involved to support the engineering of large, long-lifetime systems where teams may be geographically dispersed and work on the software for several years. based on incremental development and delivery. focuses on features. prioritize the features by importance. users provide feedback to then implement the next feature.
eight principles of ASM/IEEE code of ethics
1)public - act consistently with the public interest 2)client and employer - act in a manner that is in the best interests of their client and employer consistent with the public interest 3)product- ensure products and related modification met the highest professional standards 4)judgement - maintain integrity and independence in their professional judgement 5)management- managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance 6)profession - advance the integrity and reputation of the profession consistent with the public interest 7)colleagues - be fair to and supportive of their colleagues 8)self - participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession
verification
Are we building the product right? - the software should conform to its specification - takes place first and includes checking for code - done by developers - objective process
paper prototyping
advantages: rapid iteration, inexpensive, team-building, less learning-curve, automatic documentation disadvantages: no gut reactions (not the same experience as digital), inaccurate feedback (requires imagination), extra steps useful in early stages ideal for brainstorming meetings and sessions
moral
an individual's principles or habits with respect to right or wrong
validation
are we building the right product? - the software should do what the user requires - occurs AFTER verification and involves checking overall project - done by testers - subjective process
difference between cs and software engineering
computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software
how does software engineering relate to science, arts, and management?
s/e is the design, building, testing, updating, and maintenance of software. it involves every aspect of the development of software programs that keeps our society running and our lives easy. software is utilized heavily in the fields of science, arts, and management, but there are also elements of these fields utilized in software engineering. to begin, science (and math) have given us the tools to write software, as denoted by computer science. art is utilized because of human nature to be drawn to beautiful and artistic things - code can be beautiful and elegant, but it also takes an artistic mind to creatively solve problems. finally, management involves the efficient utilization of limited resources that we need to manage software engineering. time, manpower, and so on are important aspects of creating things. all of these are part of the many things that allow us to use software engineering to solve problems. *** answer may not be fully correct
testing stages
specifications => requirements => design => testing
difference between software engineering and SYSTEM engineering
system engineering is concerned with all aspects of computer-based systems development including hardware, software, and process engineering. software engineering is part of this more general process
legal
systematic body of rules and regulations that governs the whole society and the actions of its individual members
ethical
the rules of conduct recognized in respect to a particular class of human actions or a particular group or culture